【发布时间】:2014-04-06 23:22:54
【问题描述】:
我正在尝试根据每周数据使用 R 进行时间序列建模和预测,如下所示:
biz week Amount Count
2006-12-27 973710.7 816570
2007-01-03 4503493.2 3223259
2007-01-10 2593355.9 1659136
2007-01-17 2897670.9 2127792
2007-01-24 3590427.5 2919482
2007-01-31 3761025.7 2981363
2007-02-07 3550213.1 2773988
2007-02-14 3978005.1 3219907
2007-02-21 4020536.0 3027837
2007-02-28 4038007.9 3191570
2007-03-07 3504142.2 2816720
2007-03-14 3427323.1 2703761
...
2014-02-26 99999999.9 1234567
关于我的数据:如上所示,每周都以一周的第一天标记(我的一周从周三开始,到周二结束)。
当我构造我的 ts 对象时,我尝试了
ts <- ts(df, frequency=52, start=c(2007,1))
我遇到的问题是:
1) 某年可能有 53 周,所以 frequency=52 在这些年里不起作用;
2) 我的起始周/日期是 2006-12-27,我应该如何设置起始参数? start=c(2006,52) 或 start=c(2007,1) 自 2006 年 12 月 27 日那一周以来真的跨越了年份界限吗?另外,对于建模,最好有完整的年份数据(如果我只有部分年份的数据,比如 2007 年我的开始年份),最好不要使用 2007 年,而是从 2008 年开始? 2014 年呢:既然还不是完整的一年,我应该使用我拥有的东西进行建模吗?无论哪种方式,我仍然有一个问题,即是否将这些周包括在诸如 2006-12-27 之类的年份边界中。我应该将它包含为 2007 年或 2006 年最后一周的 wk 1 吗?
3) 当我使用ts <- ts(df, frequency=52, start=c(2007,1)) 然后打印它时,我得到了如下所示的结果,所以不是 2007.01、2007.02、2007.52...,而是从 @ 获得的 2007.000、2007.019、... 987654330@。这在数学上是正确的,但并不容易解释。有没有办法像数据框一样将其标记为日期本身,或者至少是2007 wk1, 2007 wk2...
=========
Time Series:
Start = c(2007, 1)
End = c(2014, 11)
Frequency = 52
Amount Count
2007.000 645575.4 493717
2007.019 2185193.2 1659577
2007.038 1016711.8 860777
2007.058 1894056.4 1450101
2007.077 2317517.6 1757219
2007.096 2522955.8 1794512
2007.115 2266107.3 1723002
4) 我的目标是对每周数据进行建模,然后尝试对其进行分解以查看季节性成分。看来我必须使用ts() 函数转换为可以使用decompose() 函数的ts 对象sp。我尝试了xts(),但我收到一条错误消息,指出" time series has no or less than 2 periods"。我想这是因为xts() 不允许我指定频率,对吧?
xts <- xts(df,order.by=businessWeekDate)
5) 我也在这个论坛和其他地方寻找答案;大多数示例都是每月的,虽然有一些每周的时间序列问题,但没有一个答案是直截了当的。希望有人可以在这里帮助回答我的问题。
【问题讨论】:
标签: r time-series