6.4 X11 分解法
用于分解季度月度数据的另一个流行方法是X11分解法,它最初起源于美国人口普查局和加拿大统计局。
这个方法是基于经典时间序列分解法的,但是它包括了很多用于克服经典时间序列分解法的缺陷的额外步骤与特征。具体来讲,它可以估计包括端点在内的各个时期的趋势-周期项,并且它允许季节项缓慢变化。X11还有一些复杂的方法来处理交易日的变化,假日效应和已知的预测因素的影响。它既可以处理加法分解也可以处理乘法分解。它的过程是全自动的,并且它对序列中的离群值和水平移动较为严苛。
X11分解法的细节在 Dagum & Bianconcini (2016) 中可以了解到。这里我们仅仅演示如何在R中使用它。
X11分解法可以在seasonal
包中调取seas()
函数来使用。
library(seasonal)
%>% seas(x11="") %>%
elecequip autoplot() +
ggtitle("电气设备指数的X11分解")+
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 6.9: 电气设备新订单指数的X11分解。
如图 6.1 将X11分解法与STL分解法进行了比较,如图 6.8 将X11分解法与经典时间序列分解法进行了比较。相比于其他两种方法,X11的趋势-周期项更好地捕捉了2009年年初的的突然下降,并且2009年年末的异常观测可以在残差项中更清晰地观察到。
给出了seas()
函数的输出, seasonal()
可以提取出季节项,trendcycle()可以提取出趋势-周期项,
remainder()可以提取出残差项,
seasadj()` 可以计算出季节调整后的时间序列。
例如,图 6.10 展示了趋势-周期项和季节调整后的数据,以及原始数据。
autoplot(elecequip, series="Data") +
autolayer(trendcycle(fit), series="Trend") +
autolayer(seasadj(fit), series="Seasonally Adjusted") +
xlab("年份") + ylab("新订单指数") +
ggtitle("电气设备生产(欧元区)") +
scale_colour_manual(values=c("gray","blue","red"),
breaks=c("数据","季节调整","取数"))+
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 6.10: 电器设备订单: 原始数据(灰色),趋势-周期项(红色)和季节调整数据(蓝色)。
季节项的季节图与次级-序列季节图非常有用。图 6.9 中的季节项的次级-序列季节图在图 6.11 中进行了展示。在这种情况下,随着时间的推移只有非常小的变化。
%>% seasonal() %>% ggsubseriesplot() + ylab("Seasonal") fit

图 6.11: 利用 X11 分解电气设备新订单指数的季节性性成分。