R包“预测”:每周频率的每日数据导致错误的年度数字

时间:2019-05-07 11:59:18

标签: r arima forecast

我正在尝试将ETS和ARIMA模型都拟合到2017年1月1日至2019年3月31日的每日销售数据中

使用R包“ forecast”,我从数据中创建了一个ts对象。在这里,我使用了频率 7 。不幸的是,这改变了我的日期符号,如下所示,这样每隔第7个周期就会有一个新的“年”开始,而不是保留旧的日期格式。

问题:我该如何应用数据中的每周季节性,并同时使用“年月日”(2017-01-01)格式保留所需的日期结构。

DF <- read_excel("....",
                 col_names = TRUE,
                 col_types = c("date", "numeric", "numeric", 
                               "numeric", "numeric","numeric","numeric"))
TS <- ts(DF[,2:6], , start = c(2017, 1), frequency = 7)
TS_ggseasonplot <- lapply(TS,function(x){ggseasonplot(x, polar=TRUE)})


应用ts之前的旧输出。

Date       V_1
   <date>       <dbl>
 1 2017-01-01       0
 2 2017-01-02     529
 3 2017-01-03     556
 4 2017-01-04     544
 5 2017-01-05     510
 6 2017-01-06     319
 7 2017-01-07       0
 8 2017-01-08       0
 9 2017-01-09    1296
10 2017-01-10     388

之后:

Date         V_1    
2017.000       0      
2017.286     556   
2017.429     544    
2017.571     510    
2017.714     319      
2017.857       0      
2018.000       0      
2018.143    1296    

1 个答案:

答案 0 :(得分:0)

使用ts对象进行预测是一个很大的缺点,也是为什么我们要开发可直接与时间序列数据帧(tsibble对象)一起使用的新软件包的一大动力。

对于预测程序包,您可以使用lubridate程序包的lubridate::date_decimal()函数将十进制日期转换回日期。

lubridate::date_decimal(2017.3287671233)
#> [1] "2017-05-01 00:00:00 UTC"

reprex package(v0.2.1)于2019-05-15创建