6.2 移动平均
时间序列分解的经典方法起源于20世纪20年代,直到20世纪50年代才被广泛使用。它仍然是许多时间序列分解方法的基础,因此了解它的原理十分重要。传统的时间序列分解方法的第一步是用移动平均的方法估计趋势-周期项,因此我们先来讨论一下移动平均。
平滑移动平均
\(m\) 阶移动平均可以被写为: \[\begin{equation} \hat{T}_{t} = \frac{1}{m} \sum_{j=-k}^k y_{t+j}, \tag{6.1} \end{equation}\] 其中 \(m=2k+1\)。也就是说,时间点 \(t\) 的趋势-周期项的估计值是通过求 \(t\) 时刻的 \(k\) 周期内的平均得到的。时间邻近的情况下,观测值也很可能接近。由此,平均值消除了数据中的一些随机性,从而我们可以得到较为平滑的趋势周期项。我们称它为 “\(m\)-MA”,也就是 \(m\) 阶移动平均。
autoplot(elecsales) + xlab("年份") + ylab("亿瓦时") +
ggtitle("年度电力销售量: 南澳大利亚")+
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 6.4: 南澳大利亚住宅用电销售量 (包括热水): 1989–2008。
如图 6.4,为1989年至2008年南澳大利亚年度住宅用户电力销售量。原始数据在表 6.1。
年份 | 电力销售量 (亿瓦时) | 5-MA |
---|---|---|
1989 | 2354.34 | |
1990 | 2379.71 | |
1991 | 2318.52 | 2381.53 |
1992 | 2468.99 | 2424.56 |
1993 | 2386.09 | 2463.76 |
1994 | 2569.47 | 2552.60 |
1995 | 2575.72 | 2627.70 |
1996 | 2762.72 | 2750.62 |
1997 | 2844.50 | 2858.35 |
1998 | 3000.70 | 3014.70 |
1999 | 3108.10 | 3077.30 |
2000 | 3357.50 | 3144.52 |
2001 | 3075.70 | 3188.70 |
2002 | 3180.60 | 3202.32 |
2003 | 3221.60 | 3216.94 |
2004 | 3176.20 | 3307.30 |
2005 | 3430.60 | 3398.75 |
2006 | 3527.48 | 3485.43 |
2007 | 3637.89 | |
2008 | 3655.00 |
表中的第三列是5阶的移动平均,它给出了趋势周期项的估计值。这列的第一个值表示前5个观测值的平均值(1989–1993);第二个值是1990–1994的平均值;至此类推。5-MA 列中的每一个值是以对应年份为中心的5年的观测值的平均值。在方程式 (6.1) 中,5-MA 列包含 \(\hat{T}_{t}\),其中 \(k=2\), \(m=2k+1=5\)。这可以很方便地用下式来计算:
ma(elecsales, 5)
表中的最前面 2 年和最后面 2 年都没有值,因为我们在两端都没有观测值。之后我们会运用更复杂的方法来估计趋势-周期项,它可以求出端点的估计值。
为了直观地来看趋势周期项,我们将它和原始数据绘制在图 6.5 中。
autoplot(elecsales, series="原始数据") +
autolayer(ma(elecsales,5), series="5-MA") +
xlab("年份") + ylab("亿瓦时") +
ggtitle("年度住宅售电量: 南澳大利亚") +
scale_colour_manual(values=c("原始数据"="grey50","5-MA"="red"),
breaks=c("原始数据","5-MA"))+
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 6.5: 住宅售电量(灰)与5-MA趋势周期项估计值(红)。
我们可以发现,趋势-周期项(红色)比原始数据更平滑,捕捉了时间序列去除了微小波动后的主要变化。移动平均的阶数决定了趋势-周期项的平滑程度。一般情况下,阶数越大曲线越平滑。图 6.6 展示了住宅住宅售电量数据在改变阶数后对其移动平均的影响。

图 6.6: 不同的移动平均在住宅用电量数据的应用。
简单移动平均的阶数常常是奇数阶(例如:3,5,7等),这样可以确保对称性。在阶数为 \(m=2k+1\) 的移动平均中,中心观测值和两侧各有的 \(k\) 个观测值可以被平均。但是如果 \(m\) 是偶数,那么它就不再具备对称性。
移动平均的移动平均
我们可以对移动平均序列计算它的移动平均,这样变可使偶数阶移动平均具备对称性。
例如,我们可能求得一个阶数为4的移动平均,然后对所得的结果再求出其2阶移动平均。在下表中,我们对澳大利亚啤酒生产季度数据的部分数据应用该方法。
<- window(ausbeer,start=1992)
beer2 <- ma(beer2, order=4, centre=FALSE)
ma4 <- ma(beer2, order=4, centre=TRUE) ma2x4
年份 | 季节 | Observation | 4-MA | 2x4-MA |
---|---|---|---|---|
1992 | Q1 | 443 | ||
1992 | Q2 | 410 | 451.25 | |
1992 | Q3 | 420 | 448.75 | 450.00 |
1992 | Q4 | 532 | 451.50 | 450.12 |
1993 | Q1 | 433 | 449.00 | 450.25 |
1993 | Q2 | 421 | 444.00 | 446.50 |
1993 | Q3 | 410 | 448.00 | 446.00 |
1993 | Q4 | 512 | 438.00 | 443.00 |
1994 | Q1 | 449 | 441.25 | 439.62 |
1994 | Q2 | 381 | 446.00 | 443.62 |
1994 | Q3 | 423 | 440.25 | 443.12 |
1994 | Q4 | 531 | 447.00 | 443.62 |
1995 | Q1 | 426 | 445.25 | 446.12 |
1995 | Q2 | 408 | 442.50 | 443.88 |
1995 | Q3 | 416 | 438.25 | 440.38 |
1995 | Q4 | 520 | 435.75 | 437.00 |
1996 | Q1 | 409 | 431.25 | 433.50 |
1996 | Q2 | 398 | 428.00 | 429.62 |
1996 | Q3 | 398 | 433.75 | 430.88 |
1996 | Q4 | 507 | 433.75 | 433.75 |
最后一列的符号 \(2\times4\)-MA的意义是在进行4-MA后再进行2-MA。最后一列的值是由前一列数据进行2阶移动平均后得到的。例如,4-MA列中最前面两个值为: 451.25=(443+410+420+532)/4 和 448.75=(410+420+532+433)/4. 2x4-MA列的第一个值是这两者的平均: 450.00=(451.25+448.75)/2.
对偶数阶(例如4阶)移动平均后的序列进行2-MA,称其为:“4阶中心移动平均”。这是因为这样处理后的结果是对称的。详细来讲,我们可以将 \(2\times4\)-MA写为如下形式: \[\begin{align*} \hat{T}_{t} &= \frac{1}{2}\Big[ \frac{1}{4} (y_{t-2}+y_{t-1}+y_{t}+y_{t+1}) + \frac{1}{4} (y_{t-1}+y_{t}+y_{t+1}+y_{t+2})\Big] \\ &= \frac{1}{8}y_{t-2}+\frac14y_{t-1} + \frac14y_{t}+\frac14y_{t+1}+\frac18y_{t+2}. \end{align*}\] 可见它现在是对称观测值的加权平均值。
移动平均的其他组合也是可行的。例如,\(3\times3\)-MA也很常用,它是指进行3阶移动平均后再进行一次3阶移动平均。一般来讲,进行偶数阶的移动平均后应该再进行一个偶数阶移动平均使其对称。相似地,奇数阶的移动平均后应该再进行一个奇数阶移动平均。
用季节数据估计趋势周期项
中心移动平均法最经常的应用是用于季节数据估计趋势-周期项。对于 \(2\times4\)-MA: \[ \hat{T}_{t} = \frac{1}{8}y_{t-2} + \frac14y_{t-1} + \frac14y_{t} + \frac14y_{t+1} + \frac18y_{t+2}. \] 当应用于季度数据的时候,每年的每个季度的权重都相等,因为第一个和最后一个季度在连续的年分中应用于同一个季度。因此,季节波动将会被抹平,并且所得到的 \(\hat{T}_t\) 中会几乎或完全没有季节性波动的存在。使用 \(2\times 8\)-MA 或是 \(2\times 12\)-MA 会得到类似的效果。
一般情况下,\(2\times m\)-MA等同于 \(m+1\) 阶加权平均,在这个方法中每个观测值的权重都是 \(1/m\),除了第一个值和最后一个值的权重是 \(1/(2m)\)。因此,如果季节周期项是偶数,并且阶数为 \(m\),我们用 \(2\times m\)-MA来估计趋势-周期项。如果季节项是奇数,阶数是 \(m\),我们用 \(m\)-MA 来估计趋势-周期项。例如,\(2 \times 12\)-MA可以用来估计月度趋势周期项,7-MA可以来估计有星期周期变化的日数据趋势-周期项。
MA的其他阶数通常会导致趋势-周期项的估计被数据中的季节性干扰。
例子: 电气设备制造
autoplot(elecequip, series="原始数据") +
autolayer(ma(elecequip, 12), series="12-MA") +
xlab("年份") + ylab("新订单指数") +
ggtitle("电气设备制造(欧元区)") +
scale_colour_manual(values=c("原始数据"="grey","12-MA"="red"),
breaks=c("原始数据","12-MA"))+
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 6.7: 将2x12-MA应用于电子设备订单数据。
图 6.7 为将 \(2\times12\)-MA应用于电气设备订单指数的结果 。我们注意到那条平滑的曲线没有显现出季节性;它与图 6.1 所示的趋势周期项几乎没有差别,这个用了比移动平均复杂很多估计方法。移动平均的其他任意阶数(除了24,36,等)都会导致平滑曲线显示出季节性波动。
加权移动平均法
简单移动平均的组合可以生成加权移动平均。例如上文所探讨的 \(2\times4\)-MA 等价于加权5-MA, 其权重为: \(\left[\frac{1}{8},\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{8}\right]\).
一般来讲,加权 \(m\)-MA 可以写为: \[ \hat{T}_t = \sum_{j=-k}^k a_j y_{t+j}, \] 在上式中 \(k=(m-1)/2\) ,其权重为:\(\left[a_{-k},\dots,a_k\right]\)。 非常重要的一点是所选择的各期权重之和为1,并且它们是对称的,即 \(a_j = a_{-j}\)。\(m\)-MA 中的权重均为 \(1/m\) 是一个简单的特例。
加权移动平均法的一大优势是它可以让趋势周期项的估计更平滑。观测值不是直接完全进入或离开计算,它们的权重缓步增加,然后缓步下降,让曲线更加平滑。