如何分解具有多个季节性成分的时间序列?


22

我有一个包含双重季节性成分的时间序列,我想将该序列分解为以下时间序列成分(趋势,季节性成分1,季节性成分2和不规则成分)。据我所知,用于分解R中序列的STL过程仅允许一个季节性成分,因此我尝试了两次分解序列。首先,使用以下代码将频率设置为第一个季节性成分:

ser = ts(data, freq=48)
dec_1 = stl(ser, s.window="per")

然后,我dec_1通过将频率设置为第二个季节性分量来分解分解系列()的不规则分量,从而:

ser2 = ts(dec_1$time.series[,3], freq=336)
dec_2 = stl(ser2, s.window="per")

我对这种方法不是很自信。而且我想知道是否还有其他方法可以分解具有多个季节性的序列。另外,我注意到tbats()R 预测软件包中的函数允许一个模型适合具有多个季节性的序列,但是它并未说明如何使用它来分解一个序列。


您好,欢迎光临该网站。对于您的两个季节部分,它们是否具有不同的周期性,例如每周一次,每月一次?
米歇尔

1
Rob Hyndman,Koehler,Ord和Snyder的第14章“使用指数平滑进行预测”对此进行了介绍。Hyndman在R中也有一个预测软件包。我似乎还记得Hyndman在此站点上发布过有关此主题的信息,但它可能已经发布在他的博客中。
zbicyclist 2012年

@Michelle嗨,谢谢您的回复。是的,这两个季节性因素具有不同的周期性。第一个周期为48(每日季节性),而第二个周期为336(每周季节性)。这是一个半小时的时间序列。
2012年

@zbicyclist我相信您正在使用的预测程序包是我在原始帖子中提到的“预测”程序包。我看过了这个包的tbats函数,但是没有说明如何使用它进行分解。我将检查这本书,看看是否能找到任何进一步的插图。
2012年

2
这就是我的想法。它在Hyndman的博客上。robjhyndman.com/papers/complex-seasonality
zbicyclist 2012年

Answers:


13

forecastbats()tbats()XŤŤ

有关公式的信息,请参见http://robjhyndman.com/papers/complex-seasonality/;有关ETS模型的详细说明,请参见Hyndman等人(2008)。BATS和TBATS是ETS的扩展。

例如:

fit <- bats(myTimeseries)
fit$x

在这种情况下,的每一行都x将像傅立叶似的谐波。

也有plot.tbats()plot.bats()功能自动分解并查看组件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.