时间序列分析(二)--指数平滑

博客 分享
0 228
张三
张三 2022-02-20 18:55:35
悬赏:0 积分 收藏

时间序列分析(二)--指数平滑

本系列文章翻译自NIST(美国国家标准与技术研究院)的《Engineering Statistic Handbook》(工程统计手册) 的第6章第4节关于时间序列分析的内容。本文的翻译会先使用翻译软件进行初步翻译,笔者在对不恰当之处进行修正。由于笔者水平有限,翻译过程难免有疏漏之处,欢迎大家评论区指出。本站所有文章均为原创,转载请注明出处。

3. 什么是指数平滑

这是一种非常流行的产生平滑时间序列的方案。在单一移动平均(Single Moving Averages)中,过去的观测值的权重是相等的,而指数平滑则随着观测值的变久赋予指数递减的权重。

换句话说,最近的观测结果在预测方面比过去的观测结果具有相对更大的权重。

在移动平均的情况下,分配给观察值的权重是相同的,等于1/N。然而,在指数平滑中,有一个或多个平滑参数需要确定(或估计),这些选择决定了分配给观察的权重。

本节将介绍单指数平滑、双指数平滑和三指数平滑。

3.1 单指数平滑(Single Exponential Smoothing)

该平滑方案首先设置\(S_2\)\(y_1\),其中\(S_i\)为平滑观测值或EWMA, \(y\)为原始观测值,下标表示时间段,1,2,...n。第3期\(S_3 = αy_2 + (1-α)S_2\),等等。没有\(S_1\),平滑序列从第2个观察值的平滑版本开始。

对于任意时刻\(t\),通过计算得到平滑后的值\(S_t\)

\[S_t = αy_{t-1} + (1-α)S_{t-1} \qquad 0< α \leq 1 \quad t \geq 3 \]

这是指数平滑的基本方程,常数或参数\(α\)称为平滑常数。

注意:有一种指数平滑的替代方法,用当前观察值\(y_t\)替换基本方程中的\(y_{t-1}\)。这个公式,由Roberts(1959)提出,在EWMA控制图一节中有描述。这里的公式遵循了Hunter(1986)。

设置第一个EWMA

初始EWMA在后续所有EWMA的计算中起着重要的作用。将\(S_2\)设置为\(y_1\)是一种初始化方法。另一种方法是将其设置为处理的目标。

还有一种可能性是对前四五个观测值进行平均。

\(α\)值越小,初始EWMA的选择越重要。在完成设置之前,用户最好尝试一些方法(假设软件有这些方法)。

为什么叫“指数”?

让我们把基本方程展开,先把\(S_{t-1}\)代入基本方程,得到:

再代入\(S_{t-2}\),再代入\(S_{t-3}\),以此类推,直到\(S_2\)(即\(y_1\)),可以表明展开方程可以写成:

例如,平滑值\(S_5\)的展开方程为:

这说明了指数行为。权值\(α(1?α)^t\)呈几何递减,它们的和是统一的,如下图所示,利用几何级数的一个性质:

从上一个公式中我们可以看到,求和项表明,在每个连续的时间段内,对平滑值\(S_t\)的贡献变小了。

α= 0.3。观察值权重\(α(1?α)^t\)随时间呈指数(几何)递减。

Valueweight
lasty10.2100
y20.1470
y30.1029
y40.0720

α的最佳值是多少?

较久的响应被抑制(平滑)的速度是α值的函数。当α接近1时,衰减迅速,当α接近0时,衰减缓慢。下表说明了这一点。

--------------->过去

观测值

α\((1?α)\)\((1?α)^2\)\((1?α)^3\)\((1?α)^4\)
0.90.10.010.0010.0001
0.50.50.250.1250.0625
0.10.90.810.7290.6561

我们选择α的最佳值,从而得到最小的均方误差。

让我们用一个例子来说明这个原则。考虑以下由12个观察结果组成的数据集:

TimeytS(α=0.1)ErrorError squared
171
27071-1.001.00
36970.9-1.903.61
46870.71-2.717.34
56470.44-6.4441.47
66569.80-4.8023.04
77269.322.687.18
87869.588.4270.90
97570.434.5720.88
107570.884.1216.97
117571.293.7113.76
127071.67-1.672.79

误差平方和(SSE) = 208.94。平方误差的均值(MSE)是SSE /11 = 19.0。

MSE再次计算α=0.5,结果是16.29,所以在这种情况下,我们更偏向α=0.5。我们能做得更好吗?我们可以采用经过验证的试错法。这是一个迭代过程,从0.1到0.9之间的α范围开始。我们确定α的最佳初始选择,然后在α-Δ和α+Δ之间进行搜索。我们可以再重复一次找出最好的α到小数点后3位。

但是有更好的搜索方法,比如Marquardt方法。这是一个非线性优化器,使残差平方和最小化。一般来说,大多数设计良好的统计软件程序应该能够找到使平均误差最小的α值。

3.2 单指数平滑预测

预测公式

预测公式是基本方程:

可以写成这样:

其中\(?_t\)\(t\)时期的预测误差(实际预测)。

换句话说,新的预测是旧的预测加上对上次预测中出现的误差的调整。

预测引导(Bootstrapping of Forecasts)

如果您希望从某个来源(通常是最后的数据点)进行预测,而又没有实际的观测结果,会发生什么?在这种情况下,我们必须修改公式使之成为:

\(y_{orgin}\)保持不变。这种技术被称为引导(bootstrapping)。

Bootstrapping例子

在前面的例子中,最后一个数据点是70,它的预测(平滑值S)是71.7。由于我们确实有数据点和可用的预测,我们可以使用α=0.1的普通公式计算下一个预测值:

但对于下一个预测,我们没有数据点(观测)。现在我们计算:

引导预测与常规预测的比较

两种方法的比较如下表所示:

PeriodBootstrap forecastDataSingle Smoothing Forecast
1371.507571.5
1471.357571.9
1571.217472.2
1671.097872.4
1770.988673.0

单指数平滑和趋势

单平滑(简称单指数平滑)在有趋势时不是很好。单系数α是不够的。

让我们用α = 0.3平滑的数据集来证明这一点:

DataFit
6.4
5.66.4
7.86.2
8.86.7
11.07.3
11.68.4
16.79.4
15.311.6
21.612.7
22.415.4

当存在趋势时,单指数平滑是不充分的,结果图如下:

3.3 双指数平滑(Double Exponential Smoothing)

正如前面所观察到的,单平滑在有趋势时不能很好地跟踪数据。这种情况可以通过引入第二个方程和第二个常数γ得到改善,它必须与α相结合选择。 这是与双指数平滑相关的两个方程。

注意,在双指数平滑中,使用该序列的当前值来计算其平滑值。

初始值

与单次平滑的情况一样,双次平滑中\(S_t\)\(b_t\)的初始值设置也有多种方案。 \(S_1\)通常被设为\(y_1\)。下面是对\(b_1\)的三个建议值。

注解

第一个平滑方程直接调整\(S_t\)为,前一时期的趋势值\(b_{t?1}\) 加上最后一个平滑值\(S_{t?1}\)。这有助于消除延迟,并将\(S_t\)带到当前值的合适基数。

然后第二个平滑方程更新趋势,其表示为后两个值的差值。该方程的基本形式与单次平滑相似,但在这里应用于趋势的更新。

α和γ的值可以通过非线性优化技术获得,如马夸特(Marquardt)算法。

3.4 双指数平滑预测(LASP)

下一阶段预测值的公式:

\(F_{t+1}=S_t + b_t\)

未来m个阶段的预测值公式:

\(F_{t+m}=S_t + mb_t\)

例子

再次考虑下数据集:

6.4, 5.6, 7.8, 8.8, 11, 11.6, 16.7, 15.3, 21.6, 22.4.

现在我们拟合α=0.3623和γ=1.0的双平滑模型。这些是最低的均方误差的参数估计结果,通过比较原始序列和提前一步预测的预测序列(因为这个版本的双指数平滑法使用当前的系列值来计算一个平滑值,平滑系列不能用于确定一个对应最小均方误差的α)。所选的起始值为\(S_1=y_1=6.4\)

为了比较起见,我们还拟合了一个α=0.977的单指数平滑模型(单指数平滑的对应了最低的MSE)。

双平滑的MSE为3.7024。 单次平滑的MSE为8.8867。

这个例子的平滑结果是:

DataDoubleSingle
6.46.4
5.66.6 (Forecast = 7.2)6.4
7.87.2 (Forecast = 6.8)5.6
8.88.1 (Forecast = 7.8)7.8
11.09.8 (Forecast = 9.1)8.8
11.611.5 (Forecast = 11.4)10.9
16.714.5 (Forecast = 13.2)11.6
15.316.7 (Forecast = 17.4)16.6
21.619.9 (Forecast = 18.9)15.3
22.422.8 (Forecast = 23.1)21.5

预测比较

为了了解每种方法是如何预测未来的,我们从最近一次观测中计算了前五个预测,如下所示:

PeriodSingleDouble
1122.425.8
1222.428.7
1322.431.7
1422.434.6
1522.437.6

这些结果的绘图(使用预测的双重平滑值)是非常有启发性的。

从图中可以看出,二次平滑比一次平滑更贴近数据。此外,对于预测来说,单次平滑并不比预测直线水平线更好,这在现实中是不太可能发生的。所以在这种情况下,最好采用双重平滑。

最后,让我们比较双平滑和线性回归:

这是一张有趣的图片。这两种技术以相似的方式遵循数据,但回归线更为保守。也就是说,采用回归线比采用双平滑时的增长速度要慢。

技术的选择取决于预测者。如果希望以一种更积极的方式描绘增长过程,那么可以选择双重平滑。否则,回归可能更可取。需要注意的是,在线性回归中,“时间”函数是自变量。第4章讨论了线性回归的基础知识,以及回归估计的细节。

3.5 三指数平滑( Triple Exponential Smoothing)

如果数据显示趋势和季节性会发生什么?

在这种情况下,双重平滑将不起作用。现在我们引入第三个方程来考虑季节性(有时称为周期性)。由此产生的方程组被称为“Holt-Winters”(HW)方法,以发明者的名字命名。

其方法的基本方程为:

这里:

y是观测值

S是平滑的观测值

b是趋势因子

I是季节指数

F是m个阶段后的预测值

t是一个表示时间段的指标

α, β和γ是常数,这3个参数必须根据均方误差是最小的方式来估计出来。这最好留给一个好的软件包处理。

为了初始化HW方法,我们至少需要一个完整的季节数据来确定季节指数\(I_{t?L}\)的初始估计。

一个完整的季节数据由L个周期组成。我们需要估计从一个时期到下一个时期的趋势因子。要做到这一点,建议使用两个完整的季节;也就是2L周期。

趋势因子的初始值

估算初始趋势的一般公式:

季节指数的初始值

正如我们将在示例中看到的,我们使用的数据包含6年,每年4个阶段(即4个季度)。

Step 1: 计算6年每年每个季度的平均值。

Step 2: 将观测结果除以适当的年平均值。

Step 3:现在,通过计算每一行的平均值来形成季节指数。因此,初始季节指数为:

image-20220213181103902

我们现在知道了计算初始估计值背后的代数方法。

下一页包含了一个三重指数平滑的例子。

零系数的情况

有时会发生,一个计算机程序的三重指数平滑输出的趋势(γ)或季节性(β)的最终系数为零。或者更糟的是,两者都输出为零!

这是否表明没有趋势和/或没有季节性?

当然不是!这仅仅意味着趋势和/或季节性的初始值恰巧是正确的。为了达到最低的可能MSE,不需要更新。我们应该检查更新的公式来验证这一点。

3.6 三指数平滑例子

这个例子展示了一个数据集的单指数平滑、双指数平滑和三指数平滑的比较。

下面的数据集代表了24个观察结果。这是六年的季度数据(每年有四个季度)。

QuarterPeriodSalesQuarterPeriodSales
901136293113544
22385214582
33432315681
44341416557
911538294117628
26409218707
37498319773
48387420592
921947395121627
210513222725
311582323854
412474424661

读者可以以文本格式下载数据。

实际时间序列与预测

Plot of raw data with triple exponential forecasts

对比MSEs

MSEα demandγ trendβ seasonality
69060.4694
50540.10861.0000
9361.00001.0000
5200.75560.00000.9837

通过计算机程序选择更新系数,使每一种方法的均方误差最小。

计算初始趋势的例子

数据集包括季度销售数据。季节是1年,因为一年有4个季度,所以L=4。利用公式我们得到:

计算初始季节指数的例子

123456
1362382473544628627
2385409513582707725
3432498582681773854
4341387474557592661
\(\bar{X}\)380419510.5591675716.75

在这个例子中,我们使用了整整6年的数据。其他方案可能只使用3年或其他年份。也有许多方法可以计算初始估计。

3.7 指数平滑法的总结

总结

多年来,指数平滑已被证明在许多预测情况下是非常有用的。它最初是由C.C. Holt在1957年提出的,用来表示没有趋势的非季节性时间序列。后来,他在1958年提出了一种处理趋势的方法。Winters(1965)将该方法推广到包括季节因素,因此被称为“Holt-Winters方法”。

Holt-Winters方法有3个更新方程,每个方程都有一个常数,范围从0到1。这些方程旨在给予最近的观测值更多的权重,而过去的观测值会减少权重。

这些权重以常数比例呈几何级数递减。

HM处理过程可以通过对用户友好的软件实现全自动化。

posted @ 2022-02-20 17:43 bjehp 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    张三

    张三 (王者 段位)

    821 积分 (2)粉丝 (41)源码

     

    温馨提示

    亦奇源码

    最新会员