我有两年和每个月的某项销售数据。第一列是行索引[1:24],第二列是销售额。我想使用STL
查找seasonal
和trend
组件。我试过了
ts_data<- ts(mydata[,-1],frequency = 12,start=c(2016,1))
ts_data
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2016 1250 760 2590 7990 2070 6770 4760 4270 2550 6070 4580 2350
2017 1510 4140 2450 3010 1070 1230 850 490 170 1970 890 1871
我可以看到数据现在是带有适当时间戳记的时间序列对象。但是,
ts.stl <- stl(ts_data,"periodic")
给了我一个众所周知的错误,
Error in stl(ts_data, "periodic") :
series is not periodic or has less than two periods
我可以看到数据是周期性的并且正在传播两年。那么,其背后的原因是什么?
令人惊讶的是,相同的数据正在使用frequency=10
并且我能够生成数字。但是有10个频率,到2018年将是错误的,对于我的情况是完全不能接受的。
ts_data<- ts(mydata[,-1],frequency = 10,start=c(2016,1))
ts.stl <- stl(ts_data,"periodic")
plot(ts.stl)
ts.stl
Call:
stl(x = ts_data, s.window = "periodic")
Components
Time Series:
Start = c(2016, 1)
End = c(2018, 4)
Frequency = 10
seasonal trend remainder
2016.0 -699.45750 2963.3599 -1013.90241
2016.1 -920.17520 3160.1418 -1479.96656
2016.2 -864.22434 3356.9236 97.30074
2016.3 2246.22241 3521.8163 2221.96126
2016.4 -810.00737 3686.7091 -806.70170
2016.5 1872.04426 3827.6781 1070.27765
2016.6 -50.90412 3968.6471 842.25700
2016.7 -174.47317 4057.6799 386.79324
2016.8 -1183.04223 4146.7128 -413.67053
2016.9 584.01391 3922.6366 1563.34950
2017.0 -699.45750 3698.5604 1580.89707
2017.1 -920.17520 3391.5549 -121.37975
2017.2 -864.22434 3084.5495 -710.32512
2017.3 2246.22241 2728.3775 -834.59993
2017.4 -810.00737 2372.2056 887.80179
2017.5 1872.04426 2129.8152 -991.85943
2017.6 -50.90412 1887.4248 -766.52066
2017.7 -174.47317 1704.6805 -300.20736
2017.8 -1183.04223 1521.9363 511.10594
2017.9 584.01391 1341.6322 -1435.64615
2018.0 -699.45750 1161.3282 -291.87070
2018.1 -920.17520 999.3977 1890.77746
2018.2 -864.22434 837.4673 916.75706
2018.3 2246.22241 689.0683 -1064.29067
如何在frequency=12
中使用STL
查找组件?请引导我。