前面我们了解了时间序列的三种模式:趋势,季节性和周期。
在将时间序列分解为各个组成部分时,通常将趋势和周期组合为单个趋势周期组成部分(也称为趋势)。故我们认为时间序列包含3个部分:趋势周期部分,季节性部分和余下部分(包含时间序列中的任何其他内容)
7.1 time series components
如果我们假设加法分解,那么我们可以写为:
,这里yt是数据,St是季节性因素,Tt是趋势周期部分,Rt是剩余的部分。或者,将乘法分解写为:
如果季节性波动的幅度或趋势周期周围的变化不随时间序列的水平变化,那么加法分解是最合适的。当季节性模式的变化或趋势周期周围的变化似乎与时间序列水平成正比时,则乘法分解更为合适,乘法分解在经济时间序列中很常见。
使用乘法分解的一种替代方法是,先变换数据,直到序列中变化随时间变化稳定为止,然后再用加法分解。使用对数变换时,这等效于用乘法分解,这是因为:
美国零售业的就业
我们将研究集中获取组件的要素
。
上图展示了趋势周期的组件;趋势周期表明了系列的总体运动,忽略了季节性和任何小的随机波动。
图7.2显示了数据的额外分解,这个模型用来估计STL。
这三个组件分别显示在图7.2底部的三个面板,可将这些组件加在一起来重建顶部面板显示的数据。
注意,季节性成分会随时间而变化,故任何连续两年都有相似的模式,但相隔遥远的年份可能有不同的季节性模式。底部面板中显示的剩余部分是从数据中减去季节性和趋势周期部分后剩下的部分。
每个面板左侧的灰色条显示了组件的相对比例。 每个灰色条表示相同的长度,但是由于图的比例不同,因此条的大小不同。 底部面板中的灰色大条形图表明,与数据的变化相比,其余分量的变化最小,而数据的条形约为大小的四分之一。 如果我们缩小底部的三个面板,直到它们的条形变为与数据面板中相同的大小,则所有面板将具有相同的比例。季节性调整数据
如果从原始数据中删除了季节性因素,那么结果值为“季节性调整”数据。对于可加性分解,季节性调整数据等价于
,而对于可乘性数据,季节性调整数据可以修正为
。
如果不是季节性因素引起的变化,那么季节性调整后的序列可能会有用。季节性调整后的序列包含其余部分以及趋势周期,故它们不是平稳的,且低迷或者高迷有可能会产生误导。若目的是寻找序列中转折点且解释方向的任何变化,则最好使用趋势周期成分而不是季节性调整的数据。7.2 moving averages
移动平均平滑
订单的移动平均线可以写为:
这里的m=2k+1,即趋势周期的估计t可通过平均时间范围内的时间序列值获得k的时期t。
时间上接近的观测值也可能接近价值,故平均值消除了数据中某些随机性,留下了平滑的趋势周期成分,我们称为m-MA,表示m个订单的滑动平均。
移动平均的移动平均
我们也可以将移动平均线应用于移动平均线,这样做的原因之一是使偶数阶移动平均线对称。
Ex:我们可取阶数为4的移动平均值,之后将另一个阶数为2的移动平均值应用于结果。(常用于阶数为偶数)
使用季节性数据估算趋势周期:
加权移动平均线
移动平均线的组合可以产生加权移动平均线
加权移动平均值的主要优点是,它们可以对趋势周期进行更平滑的估计;它们的权重不是按全权重进入和离开计算,而是权重先缓慢增加然后慢慢减少,从而形成更平滑的曲线。7.3 经典分解
经典分解有两种形式:
加法分解
乘法分解
加法分解
Step 1:
如果m是个偶数,则计算趋势周期分量
;如果m是一个奇数,则计算趋势周期分量
Step 2:
计算去趋势序列:
Step 3:
要估算每个季节的季节成分,只需将该季节的去趋势值平均即可。
Ex:对于月度数据,三月的季节性成分是数据中所有去掉趋势值后的三月的平均值,之后调整这些季节性成分值来确保它们加为0;通过将这些月度值串在一起,来复制每年数据的顺序从而获得季节性成分。它也被赋为
Step 4:
剩余部分可通过估计的季节和趋势周期部分相减而得到:
乘法分解:
Step 1:
如果m是个偶数,则计算趋势周期分量
;如果m是一个奇数,则计算趋势周期分量
Step 2:
计算去趋势序列:
Step 3:
要估算每个季节的季节成分,只需将该季节的去趋势值平均即可。
Ex:对于月度数据,三月的季节性成分是数据中所有去掉趋势值后的三月的平均值,之后调整这些季节性成分值来确保它们加为0;通过将这些月度值串在一起,来复制每年数据的顺序从而获得季节性成分。它也被赋为
Step 4:
剩余部分可通过估计的季节和趋势周期部分相除而得到:
关于经典分解的评论
尽管经典分解被广泛应用,但不推荐使用,因为现在有几种更好的方法。而经典分解存在的问题如下:
前几个观察和最后几个观察都无法获得趋势周期的估计值
Ex:若m=12,则对于前6个或最后6个观测值没有趋势周期的估计,故在相同时间段内也没有剩余部分的估计(?为什么)
趋势周期估计趋于对快速上升和快速下降的数据过于平滑
经典分解方法假设季节性分量逐年重复。对于许多系列,这一个合理的假设,但对于某些较长的系列则不是。
Ex:随着空调的普及,电力需求模式已随时间而改变。具体来说,在许多地区,几十年前的季节性使用模式在冬季(由于采暖)达到了最大需求,而当前的季节性模式在夏季(由于空调)而达到了最大需求。 经典的分解方法无法捕获随时间变化的这些季节性变化
有时,少数时期的时间序列值可能会特别不寻常
Ex:每月航空客运量可能会受到劳资纠纷影响,使得纠纷期间交通量与平常不同。经典分解方法对这些异常值不具有鲁棒性。
7.4 X11分解
X11方法基于经典分解,但包括了很多额外步骤和功能,从而克服经典分解的缺点。
特别是,趋势周期估计值可用于所有观测值,包括终点,且季节性分量可随时间缓慢变化。X11还有一些复杂的方法来处理交易日变化,假日影响和已知预测因素的影响。它对时间序列中异常值和水平移位高度可靠
7.5 SEATS分解
“SEATS”表示”ARIMA时间序列中季节性提取“;该过程仅适用于季度和月度数据,故其他类型的季节性(如每日,每小时或每周数据)需要替代方法。
7.6 STL分解
STL是一种用于分解时间序列的通用且鲁棒的方法。
STL有以下一些特点,优于经典,SEATS和X11分解:
不同于SEATS和X11,STL将处理任何类型的季节性,而不仅是每月和每季度数据
季节性的成分允许随时间变化,且变化率可由用户控制
用户也可控制趋势周期的平滑度
它可对异常值具有鲁棒性(即用户可指定鲁棒的分解),故偶尔出现的异常观测值不会影响趋势周期和季节成分的估计,但是,它们将影响剩余部分。
另外,STL也有一些缺点。特别是,它不会自动处理交易日或日历变化,仅提供累加分解的功能。
它也可以通过先对数据取log,再反变换其components来获得乘法分解。加法和乘法之间的分解可用Box-cox来进行切换,且满足
;而
对应的是乘法分解,而
对应的是加法分解。
7.7 衡量趋势和季节性的强度
时间序列分解可用于测量时间序列中趋势和季节性的强度。在公式:
;这里
是平滑趋势组件,
是季节性组件,而
是剩余组件。趋势性强度
对于有很强趋势性的数据,季节性调整后的数据比其余部分有更多的变化。因此,
应该相对较小。但是对于趋势很小或几乎没有的数据,这两个方差应该几乎一致,所以我们可以定义其趋势强度为:
(?为什么趋势强度用1-Var(Rt)/Var(Tt+Rt)定义)
这也对0到1间趋势的强度进行度量。由于剩余量的方差有时可能甚至大于季节性调整数据的方差,故我们将最小可能值设为
等于0.季节性强度
季节性强度也是类似的,它可以定义为:
如果一系列季节性强度Fs接近于0,则表示它几乎没有季节性,而当Var(Rt)远小于Var(St+Rt),则一系列季节性强度Fs接近于1,表示它有很强的季节性.7.8 预测分解
分解也能用于预测,假设一个加法分解,分解后的序列可以表示为:
,而这里
是季节性调整组件。
或者,如果是乘法分解,则我们可写为
,这里
。
为了预测分解后的时间序列,我们分别预测了季节性的组件
,和季节调整后的组件
。
通常假定季节性成分是不变的,或变化比较缓慢,故可简单采用估计成分最后一年来进行预测,或者说,将季节性naïve用于季节性的组件。
为了预测季节性调整后的成分,可用任何非季节性的预测方法,如可用有漂移的随机游走模型,Holt方法或者非季节性的ARIMA模型。