时间序列STL的季节性分解不起作用

时间:2015-03-10 21:33:00

标签: r time-series

我有一个每周数据ts对象。

> bvg1TS
Time Series:
Start = c(2013, 4) 
End = c(2015, 3) 
Frequency = 52 
  [1] 2.966812 2.939399 2.872005 2.950616 2.967781 2.965619 2.970308 2.942091 2.863181 2.980295 2.947549 2.942091
 [13] 2.875945 2.978333 2.966935 2.980904 3.023234 2.991919 3.041026 2.994267 2.916576 2.946435 3.046428 2.966970
 [25] 2.991558 3.011992 3.002000 3.059313 3.042949 2.876813 2.898701 2.870776 2.948676 2.919896 2.935181 2.882285
 [37] 2.923060 2.932156 2.845724 2.752336 2.813689 2.839735 2.769321 2.788457 3.006690 3.043881 3.016572 3.046467
 [49] 3.139696 3.174412 3.099379 3.103872 3.053300 3.055752 3.135360 3.102986 3.092577 3.118464 3.145579 3.216891
 [61] 3.114963 3.022140 3.126573 3.226314 3.215919 3.228102 3.176195 3.133876 3.172260 3.179221 3.137750 3.214817
 [73] 3.205800 3.210800 3.283134 3.240072 3.258800 3.345034 3.226608 3.203244 3.277908 3.242800 3.184734 3.234800
 [85] 3.243738 3.170665 3.164850 3.187008 3.161083 3.236417 3.276416 3.261774 3.108953 2.946660 2.998852 3.008005
 [97] 3.043996 3.127296 3.253415 3.263998 3.148936 2.966812 2.939399 2.872005

我想STL,但收到以下错误:

> fit <- stl(bvg1TS, s.window="period")
Error in stl(bvg1TS, s.window = "period") : 
  series is not periodic or has less than two periods

似乎无法找到解决方案......任何想法?

谢谢&amp;的问候,

Shery

1 个答案:

答案 0 :(得分:3)

帮助信息显示:

  

系列不是周期性的或少于两个周期

您的数据明显是周期性的(在您指定的频率大于1的意义上)并且恰好有两个句点。

但是如果你检查stl函数的前几行来查找生成错误的位置,你会看到:

if (period < 2 || n <= 2 * period) 
        stop("series is not periodic or has less than two periods") 

您的论坛有n=104period=52。再添加一个观察点,问题就会消失。

帮助信息应该说“小于或等于两个句号”或者测试应该说n < 2 * period