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))
南澳大利亚住宅用电销售量 (包括热水): 1989--2008。

图 6.4: 南澳大利亚住宅用电销售量 (包括热水): 1989–2008。

如图 6.4,为1989年至2008年南澳大利亚年度住宅用户电力销售量。原始数据在表 6.1

表 6.1: 1989年–2008年南澳大利亚年度电力销售量
年份 电力销售量 (亿瓦时) 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("Data"="grey50","5-MA"="red"),
                     breaks=c("Data","5-MA"))+
  theme(text = element_text(family = "STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))
住宅售电量(黑)与5-MA趋势周期项估计值(红)。

图 6.5: 住宅售电量(黑)与5-MA趋势周期项估计值(红)。

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

不同的移动平均在住宅用电量数据的应用。

图 6.6: 不同的移动平均在住宅用电量数据的应用。

简单移动平均的阶数常常是奇数阶(例如:3,5,7等),这样可以确保对称性。在阶数为 \(m=2k+1\) 的移动平均中,中心观测值和两侧各有的 \(k\) 个观测值可以被平均。但是如果 \(m\) 是偶数,那么它就不再具备对称性。

移动平均的移动平均

我们可以对移动平均序列计算它的移动平均,这样变可使偶数阶移动平均具备对称性。

例如,我们可能求得一个阶数为4的移动平均,然后对所得的结果再求出其2阶移动平均。在下表中,我们对澳大利亚啤酒生产季度数据的部分数据应用该方法。

beer2 <- window(ausbeer,start=1992)
ma4 <- ma(beer2, order=4, centre=FALSE)
ma2x4 <- ma(beer2, order=4, centre=TRUE)
表 6.2: 季度啤酒数据的4阶移动平均与2阶移动平均
年份 季节 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("Data"="grey","12-MA"="red"),
    breaks=c("Data","12-MA"))+
  theme(text = element_text(family = "STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))
将2x12-MA应用于电子设备订单数据。

图 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\) 是一个简单的特例。

加权移动平均法的一大优势是它可以让趋势周期项的估计更平滑。观测值不是直接完全进入或离开计算,它们的权重缓步增加,然后缓步下降,让曲线更加平滑。