我正在尝试分解time series,这是每小时臭氧数据的每月多年平均值。有288个数据点(24小时* 12个月)。 STL需要ts对象来提取时间序列的成分。 ts的参数为“频率”。据我所知,这是一个时期的观察次数。例如,月平均温度数据为12。 自从我使用288以来,我的案件的发生频率是多少
data_ts=stl(ts(data,frequency = 288),s.window = "per"))
如预期的那样,它引发错误“序列不是周期性的或具有少于两个周期”。 顺便说一句,我知道其他提取季节性的方法,但是我还需要使用STL检查结果。
最佳
答案 0 :(得分:1)
假设您有每小时的数据,则每天有24个时段,平均每年有24 * 365.25个时段。几个月似乎与诸如臭氧之类的自然现象无关。同样,星期也无关紧要。因此,您只需要24和24 * 265.35的季节性时段即可。
mstl()
软件包中的forecast
函数可以处理多个季节。
library(forecast)
data_ts <- mstl(msts(data, seasonal.periods = c(24, 24*365.25)))
但是,如果您实际上有每月的数据,则频率为12。
data_ts <- mstl(ts(data, frequency = 12))
答案 1 :(得分:0)
正如您在图片ACF中所看到的那样,数据的ACF清楚地显示了年度季节性趋势。 它以每年的滞后时间在大约12、24等处达到峰值。
如果我代表您,我将使用freq = 12分解时间序列数据。