我正在尝试使用stl来分析我的时间序列数据中的季节和趋势。我有刻度数据,我创建了一个ts对象。
我运行SQL查询以获取以下表单中的数据
> x
datetime price
1 2010-09-08 1501 9110
2 2010-09-08 1501 9110
3 2010-09-08 1501 9110
4 2010-09-08 1501 9110
5 2010-09-08 1501 9115
6 2010-09-08 1501 9115
7 2010-09-08 1501 9110
8 2010-09-08 1502 9115
9 2010-09-08 1502 9115
10 2010-09-08 1502 9115
11 2010-09-08 1503 9120
12 2010-09-08 1503 9115
13 2010-09-08 1503 9115
14 2010-09-08 1503 9115
15 2010-09-08 1503 9115
16 2010-09-08 1503 9115
17 2010-09-08 1503 9115
18 2010-09-08 1503 9115
19 2010-09-08 1503 9115
20 2010-09-08 1503 9115
21 2010-09-08 1503 9115
22 2010-09-08 1503 9110
23 2010-09-08 1503 9105
24 2010-09-08 1503 9105
25 2010-09-08 1503 9110
26 2010-09-08 1504 9110
27 2010-09-08 1504 9110
28 2010-09-08 1504 9110
29 2010-09-08 1504 9110
30 2010-09-08 1504 9115
31 2010-09-08 1504 9115
32 2010-09-08 1504 9115
33 2010-09-08 1504 9115
34 2010-09-08 1504 9115
35 2010-09-08 1504 9115
36 2010-09-08 1504 9115
37 2010-09-08 1504 9120
我通过运行以下内容将其转换为ts:
> xt<-ts(x[,2])
> xt
Time Series:
Start = 1
End = 37
Frequency = 1
[1] 9110 9110 9110 9110 9115 9115 9110 9115 9115 9115 9120 9115 9115 9115 9115
[16] 9115 9115 9115 9115 9115 9115 9110 9105 9105 9110 9110 9110 9110 9110 9115
[31] 9115 9115 9115 9115 9115 9115 9120
> drg<-stl(log(xt),"per")
Error in stl(log(xt), "per") :
series is not periodic or has less than two periods
> is.ts(xt)
[1] TRUE
关于如何修复错误的任何建议,以便能够看到不同趋势组件的细分......
答案 0 :(得分:11)
错误就在那里,你可以看到
> drg<-stl(log(xt),"per")
Error in stl(log(xt), "per") :
series is not periodic or has less than two periods
stl()
函数需要时间序列对象和频率(或同等地,增量),因此季节性部分有意义。对于较长期的宏观经济系列,通常每月为1/12,季度数据为1/4。有关详细信息,请参阅help(ts)
,并仔细查看ts()
和stl()
的示例以及此处使用的数据类型。
对日常业务数据执行此操作会更加困难,因为日历是不规则的。使用每日内部数据,您必须提出一些方案。这些数据根本不同:市场开放和收盘,而宏观数据可以概念化为连续。