7.1 简单的指数平滑
最简单的指数平滑方法自然被称为“简单指数平滑”(SES)12。这种方法适用于预测没有明显趋势或季节因素的数据。例如,图 7.1 中的数据没有显示出任何明确的趋势或季节性因素。(最近几年产量有所上升,这可能表明了一种趋势,在本章的后面部分我们将考虑对这个时间系列使用趋势方法预测是否会更好)。我们已经考虑过对这样的数据使用朴素预测和平均预测法进行预测( 3.1 节)。
<- window(oil, start=1996)
oildata autoplot(oildata) +
ylab("石油 (百万吨)") + xlab("年份") +
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 7.1: 1980年-2013年沙特阿拉伯的石油产量
使用朴素预测法,对未来的所有预测都等于该序列的最后一个观测值, \[ \hat{y}_{T+h|T} = y_{T}, \] 其中 \(h=1,2,\dots\)。因此,朴素预测法假设最近的观测值是唯一重要的观测值,并且之前所有的观测值都不提供未来的信息。这可以看作是一个加权平均值,其中所有的权重都被赋给了最后一次观测值。
使用平均预测法,所有未来预测值都等于观测数据的简单平均值, \[ \hat{y}_{T+h|T} = \frac1T \sum_{t=1}^T y_t, \] 其中 \(h=1,2,\dots\)。因此,平均预测法假设所有观测值具有同等重要性,并在预测时给予相同的权重。
我们经常需要的是在这两个极端方法之间的方法。例如,将更大的权重赋到最近的观测值而不是过去的观测值可能是明智的。这正是简单指数平滑背后的原理。预测值使用加权平均值进行计算,其中权重随观测时间的久远程度呈指数型下降 — 最早的观察值被赋予最小的权值: \[\begin{equation} \hat{y}_{T+1|T} = \alpha y_T + \alpha(1-\alpha) y_{T-1} + \alpha(1-\alpha)^2 y_{T-2}+ \alpha(1-\alpha)^3 y_{T-3}+\cdots, \tag{7.1} \end{equation}\] 其中 \(0 \le \alpha \le 1\) 是平滑参数。向前一步 \(T+1\) 时刻的预测值是时间系列 \(y_1,\dots,y_T\) 中所有观察值的加权平均值。权重下降的速度由参数 \(\alpha\) 控制。
表 7.1 展示了在使用简单指数平滑进行预测时,四个不同的 \(\alpha\) 值所对应的观察值的权重。请注意,对于任何合理的样本量,即使 \(\alpha\) 数值很小,权重的总和也应该近似为1。
\(\alpha=0.2\) | \(\alpha=0.4\) | \(\alpha=0.6\) | \(\alpha=0.8\) | |
---|---|---|---|---|
\(y_{T}\) | 0.2000 | 0.4000 | 0.6000 | 0.8000 |
\(y_{T-1}\) | 0.1600 | 0.2400 | 0.2400 | 0.1600 |
\(y_{T-2}\) | 0.1280 | 0.1440 | 0.0960 | 0.0320 |
\(y_{T-3}\) | 0.1024 | 0.0864 | 0.0384 | 0.0064 |
\(y_{T-4}\) | 0.0819 | 0.0518 | 0.0154 | 0.0013 |
\(y_{T-5}\) | 0.0655 | 0.0311 | 0.0061 | 0.0003 |
对于0到1之间的任何 \(\alpha\) 值,随着时间向前推移,观察值的权重呈指数型下降,因此我们称之为“指数平滑”。 如果 \(\alpha\) 很小(即接近于0),那么更远的过去的观测值会被赋予更多的权重。如果 \(\alpha\) 很大(即接近1),则赋予更多的权重给最近的观测值。 对于 \(\alpha=1\), \(\hat{y}_{T+1|T}=y_T\) 的极端情况,指数平滑的预测值等于朴素预测值。
我们给出了两种等价形式的简单指数平滑,其中每一种都能推出预测方程式 (7.1)。
加权平均形式
\(T+1\) 时刻的预测值等于最近的观测值 \(y_T\) 和之前的预测值 \(\hat{y}_{T|T-1}\) 之间的加权平均值: \[ \hat{y}_{T+1|t} = \alpha y_T + (1-\alpha) \hat{y}_{T|T-1}, \] 其中 \(0 \le \alpha \le 1\) 是平滑参数。 同样地,我们可以将拟合值写为 \[ \hat{y}_{t+1|t} = \alpha y_t + (1-\alpha) \hat{y}_{t|t-1}, \] 其中 \(t=1,\dots,T\)。(回想一下,拟合值只是训练数据的一步预测值。)
这个过程必须从某个时刻开始,因此我们将时刻1的第一个拟合值表示为 \(\ell_0\) (我们必须进行估计)。然后 \[\begin{align*} \hat{y}_{2|1} &= \alpha y_1 + (1-\alpha) \ell_0\\ \hat{y}_{3|2} &= \alpha y_2 + (1-\alpha) \hat{y}_{2|1}\\ \hat{y}_{4|3} &= \alpha y_3 + (1-\alpha) \hat{y}_{3|2}\\ \vdots\\ \hat{y}_{T|T-1} &= \alpha y_{T-1} + (1-\alpha) \hat{y}_{T-1|T-2}\\ \hat{y}_{T+1|T} &= \alpha y_T + (1-\alpha) \hat{y}_{T|T-1}。 \end{align*}\] 将每个方程代入下一个的方程,我们可以得到 \[\begin{align*} \hat{y}_{3|2} & = \alpha y_2 + (1-\alpha) \left[\alpha y_1 + (1-\alpha) \ell_0\right] \\ & = \alpha y_2 + \alpha(1-\alpha) y_1 + (1-\alpha)^2 \ell_0 \\ \hat{y}_{4|3} & = \alpha y_3 + (1-\alpha) [\alpha y_2 + \alpha(1-\alpha) y_1 + (1-\alpha)^2 \ell_0]\\ & = \alpha y_3 + \alpha(1-\alpha) y_2 + \alpha(1-\alpha)^2 y_1 + (1-\alpha)^3 \ell_0 \\ & ~~\vdots \\ \hat{y}_{T+1|T} & = \sum_{j=0}^{T-1} \alpha(1-\alpha)^j y_{T-j} + (1-\alpha)^T \ell_{0}。 \end{align*}\] 对于较大取值的 \(T\),方程的最后一项变得很小。因此,加权平均形式可以得到相同的预测方程式 (7.1)。
分量形式
另一种表示形式是分量形式。对于简单的指数平滑,级别 \(\ell_t\) 是唯一的分量。(本章后面考虑的其他方法也可能包括趋势 \(b_t\) 和季节性分量 \(s_t\)。)指数平滑法的分量形式表示包括一个预测方程和该方法中包含的每个分量部分的平滑方程。 简单指数平滑的分量形式由下式给出: \[\begin{align*} \text{Forecast equation} && \hat{y}_{t+h|t} & = \ell_{t}\\ \text{Smoothing equation} && \ell_{t} & = \alpha y_{t} + (1 - \alpha)\ell_{t-1}, \end{align*}\] 其中 \(\ell_{t}\) 是时间序列 \(t\) 的级别(或平滑值)。给定 \(h=1\) 可以得到拟合值,给定 \(t=T\) 给出训练数据之外的真实预测值。
该预测方程表明, \(t+1\) 时刻的预测值是 \(t\) 时刻的估计值。该水平的平滑方程(通常称为水平方程)给出了该时间序列在每段时间 \(t\) 的估计水平。
如果将分量形式的平滑方程中的 \(\ell_t\) 和 \(\ell_{t-1}\) 分别替换为 \(\hat{y}_{t+1|t}\) 和 \(\hat{y}_{t|t-1}\) ,我们将得到加权平均形式的简单指数平滑方程。
简单指数平滑的分量形式并不是特别有用,但它会是我们开始添加其他分量时最简单的形式。
平面预测
简单的指数平滑具有一个“平坦”的预测函数: \[ \hat{y}_{T+h|T} = \hat{y}_{T+1|T}=\ell_T, \qquad h=2,3,\dots。 \] 也就是说,所有预测值都相同,等于最后一个级别分量。请记住,只有时间序列没有趋势或季节性分量时,这些预测才适用。
优化
每个指数平滑方法在应用时都需要选择平滑参数和初始值。特别是对于简单的指数平滑,我们需要选择 \(\alpha\) 和 \(\ell_0\) 的值。只要我们知道这些值,所有的预测值都可以从数据中计算出来。对于后文提到的方法,通常有多个平滑参数和多个初始分量要选择。
在某些情况下,平滑参数可以进行主观选择—预测者根据以前的经验设定平滑参数的值。然而,一种更可靠和客观的获得未知参数值的方法是从观测数据中估计它们。
在 5.2 节中,我们通过最小化残差平方和(通常称为SSE或“误差平方和”)来估计回归模型的系数 。类似地,任何指数平滑方法的未知参数和初始值也可以通过最小化SSE来进行估计。对于 \(t=1,\dots,T\),设定残差为 \(e_t=y_t - \hat{y}_{t|t-1}\)。因此,我们通过最小化下式来估计未知参数的值和初始值: \[\begin{equation} \text{SSE}=\sum_{t=1}^T(y_t - \hat{y}_{t|t-1})^2=\sum_{t=1}^Te_t^2. \tag{7.2} \end{equation}\]
与回归情况(通过公式来返回最小化SSE的回归系数值)不同,指数平滑法涉及到一个非线性的最小化问题,因此我们需要使用优化工具来解决。
例子:石油生产
在这个例子中,简单指数平滑法被用于预测沙特阿拉伯的石油产量。
<- window(oil, start=1996)
oildata # 参数估计
<- ses(oildata, h=5)
fc # 在1-12时期的向前一步训练误差的精度
round(accuracy(fc),2)
#> ME RMSE MAE MPE MAPE MASE ACF1
#> Training set 6.4 28.12 22.26 1.1 4.61 0.93 -0.03
这给出了在 \(t=1,2,\dots,12\) 时,通过最小化SSE可以估计参数 \(\hat\alpha=0.83\) 和 \(\hat\ell_0=446.6\),同时满足 \(0\le\alpha\le1\)。
在表 7.2 中,我们演示了如何使用这些参数进行计算。倒数第二列显示了从 \(t=0\) 到 \(t=12\) 时的平滑水平的估计值;最后一列的最后几行显示 \(h=1,2,3,4,5\) 时的预测值。
年份 | 时间 | 观测值 | 平滑水平 | 预测值 |
---|---|---|---|---|
\(t\) | \(y_t\) | \(\ell_t\) | \(\hat{y}_{t+1|t}\) | |
1995 | 0 | 446.59 | ||
1996 | 1 | 445.36 | 445.57 | 446.59 |
1997 | 2 | 453.20 | 451.93 | 445.57 |
1998 | 3 | 454.41 | 454.00 | 451.93 |
1999 | 4 | 422.38 | 427.63 | 454.00 |
2000 | 5 | 456.04 | 451.32 | 427.63 |
2001 | 6 | 440.39 | 442.20 | 451.32 |
2002 | 7 | 425.19 | 428.02 | 442.20 |
2003 | 8 | 486.21 | 476.54 | 428.02 |
2004 | 9 | 500.43 | 496.46 | 476.54 |
2005 | 10 | 521.28 | 517.15 | 496.46 |
2006 | 11 | 508.95 | 510.31 | 517.15 |
2007 | 12 | 488.89 | 492.45 | 510.31 |
2008 | 13 | 509.87 | 506.98 | 492.45 |
2009 | 14 | 456.72 | 465.07 | 506.98 |
2010 | 15 | 473.82 | 472.36 | 465.07 |
2011 | 16 | 525.95 | 517.05 | 472.36 |
2012 | 17 | 549.83 | 544.39 | 517.05 |
2013 | 18 | 542.34 | 542.68 | 544.39 |
\(h\) | \(\hat{y}_{T+h|T}\) | |||
2014 | 1 | 542.68 | ||
2015 | 2 | 542.68 | ||
2016 | 3 | 542.68 | ||
2017 | 4 | 542.68 | ||
2018 | 5 | 542.68 |
图 7.2 中的黑线是数据图,显示了随时间变化的水平曲线。
autoplot(fc) +
autolayer(fitted(fc), series="Fitted") +
ylab("石油产量 (百万吨)") + xlab("年份") +
ggtitle('简单指数平滑预测') +
theme(text = element_text(family = "STHeiti"))+
theme(plot.title = element_text(hjust = 0.5))

图 7.2: 简单指数平滑法应用于沙特阿拉伯的石油产量(1996–2013)。
图 7.2 中绘制了2014-2018年的预测值。此外,还绘制了1996–2013年期间的数据以及向前一步拟合值。在这个例子中,较大的 \(\alpha\) 取值出现在每次估计水平 \(\ell_t\) 的大调整中。较小的 \(\alpha\) 取值会导致随时间的变化较小,因此时间系列拟合值会更平滑。
此处显示的预测区间是通过 7.5 节中描述的方法计算出来的。预测区间表明,未来这五年预测期内的石油产量存在相当大的不确定性。因此,在不考虑这种大的不确定性的情况下,对点预测的解释可能非常容易产生误导。
在某些书中被称为“单指数平滑”。↩︎