用时间序列数据绘制stl

itc*_*lpl 1 r time-series

我正在尝试使用stl来分析我的时间序列数据中的季节和趋势.我有tick数据,我创建了一个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
Run Code Online (Sandbox Code Playgroud)

我通过运行以下内容将其转换为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
Run Code Online (Sandbox Code Playgroud)

关于如何修复错误的任何建议,以便能够看到不同趋势组件的细分......

Dir*_*tel 11

错误就在那里,你可以看到

 > drg<-stl(log(xt),"per")
 Error in stl(log(xt), "per") : 
   series is not periodic or has less than two periods
Run Code Online (Sandbox Code Playgroud)

stl()函数需要时间序列对象频率(或同等地,增量),因此季节性部分是有意义的.对于较长期的宏观经济系列,通常每月为1/12,季度数据为1/4.有关help(ts)详细信息,请参阅更详细的示例ts()stl(),以及此处使用的数据类型.

使用商业日常数据执行此操作会更加困难,因为日历是不规则的.使用每日内部数据,您必须提出一些方案.这些数据根本不同:市场开放和收盘,而宏观数据可以概念化为连续的.

  • 谢谢Dirk,我很感激你的推理和澄清.根据您的专业知识,您是否对潜在方案有任何建议,也许可以应用于每周OHLC数据.或者是否有其他功能建议用于类似的股票价格分析 (2认同)
  • @itcplpl尝试使用*zoo*或*xts*包来创建一个格式的系列,然后使用`as.ts()`方法强制转换为`ts`对象.除此之外,使用添加剂模型直接对季节和趋势成分进行建模 - 我最近使用mgcv包进行了类似的操作,该包具有循环平滑剂,用于每周效果.更多参与STL,但非常值得像STL这样的固定技术可以匹配的努力 (2认同)