使用forecast包中thetaf函数生成日度时序预测时日期格式异常
解决thetaf日度时序预测日期格式异常问题
问题根源
你看到的2018.0000这类格式是R中ts对象对日度数据的默认索引方式:年份加上该日期在一年中的占比(比如0.0027≈1/365,代表2018年第1天)。而月度ts对象的频率是12,索引用年份+月份/12(比如2018.0833对应2018年1月),所以显示更直观——这并非thetaf函数的问题,是ts对象对不同频率数据的索引逻辑差异导致的。
两种解决方案
方案1:用tsibble格式处理时序数据(推荐)
tsibble包专为时序数据设计,能自动保留正确的日期索引,彻底避免小数格式问题:
# 安装依赖包 install.packages(c("tsibble", "forecast")) library(tsibble) library(forecast) # 将日度ts对象转换为tsibble,自动识别日期索引 daily_tbl <- as_tsibble(Daily_Time_2017, index = date) # 生成下一年的预测 fcst_result <- thetaf(daily_tbl, h = 365) # 查看结果,日期格式为标准YYYY-MM-DD print(fcst_result)
方案2:手动转换预测结果的索引为日期
如果不想更换数据格式,可在得到预测结果后手动替换索引:
library(forecast) # 生成预测 fcst <- thetaf(Daily_Time_2017, h = 365) # 计算预测的起始日期(原始数据最后一天+1天) start_date <- as.Date(end(Daily_Time_2017)) + 1 # 生成365天的标准日期序列 fcst_dates <- seq(start_date, by = "day", length.out = 365) # 替换预测结果的行名为标准日期 rownames(fcst) <- fcst_dates # 查看修正后的结果 print(fcst)
内容的提问来源于stack exchange,提问作者Afsluitdijk
相关产品推荐
相关产品推荐

