平滑值的计算
平滑值是通过对时间序列数据应用平滑方法来计算的。其目的是减少数据中的噪声,使得长期趋势和模式更为明显。不同的平滑方法有不同的计算方式,但常见的方法包括移动平均和指数平滑。下面是这两种常见平滑方法的详细说明及计算示例。
一、 移动平均(Moving Average)
定义: 移动平均是通过计算一段时间窗口内数据的平均值来平滑时间序列数据。常见的有简单移动平均(SMA)和加权移动平均(WMA)。
1.简单移动平均(SMA):
- 计算方法: 对数据进行滑动窗口的平均计算。例如,对于一个窗口大小为
N
的简单移动平均,我们在时间序列的每一个位置上计算前N
个数据点的平均值。
示例:
假设有一个时间序列数据 [10, 20, 30, 40, 50]
,我们使用窗口大小为 3
的简单移动平均来平滑数据:
- 第一个平滑值:
(10 + 20 + 30) / 3 = 20
- 第二个平滑值:
(20 + 30 + 40) / 3 = 30
- 第三个平滑值:
(30 + 40 + 50) / 3 = 40
所以,平滑后的序列为 [20, 30, 40]
。
2.加权移动平均(WMA):
- 计算方法: 对数据应用不同的权重,例如,给最近的数据点更高的权重。
示例:
假设权重为 [0.5, 0.3, 0.2]
,窗口大小为 3
:
- 第一个平滑值:
0.5*10 + 0.3*20 + 0.2*30 = 5 + 6 + 6 = 17
- 第二个平滑值:
0.5*20 + 0.3*30 + 0.2*40 = 10 + 9 + 8 = 27
- 第三个平滑值:
0.5*30 + 0.3*40 + 0.2*50 = 15 + 12 + 10 = 37
所以,平滑后的序列为 [17, 27, 37]
。
二、指数平滑
指数平滑是时间序列分析中用于平滑数据的一种方法。其核心思想是对时间序列中的数据点给予不同的权重,其中较新的数据点权重较大。指数平滑有多种变体,包括单指数平滑、双指数平滑和三重指数平滑。下面是对这三种指数平滑方法的详细介绍:
1. 单指数平滑(Single Exponential Smoothing, SES)
原理:
单指数平滑是最基础的指数平滑方法,主要用于没有明显趋势或季节性变化的时间序列数据。其目标是通过平滑因子来减少数据中的噪声,使得数据的长期趋势更加明显。
公式:
St=α⋅Xt+(1−α)⋅St−1S_t = \alpha \cdot X_t + (1 - \alpha) \cdot S_{t-1}St=α⋅Xt+(1−α)⋅St−1
- StS_tSt 是当前时间步 ttt 的平滑值。
- XtX_tXt 是当前时间步 ttt 的实际值。
- St−1S_{t-1}St−1 是前一个时间步的平滑值。
- α\alphaα 是平滑因子,取值范围为 0<α<10 < \alpha < 10<α<1。
解释:
- α\alphaα 控制当前值和前一个平滑值的权重,较高的 α\alphaα 值意味着当前值对平滑值的影响更大。
- 适用于数据没有明显趋势和季节性波动的情况。
示例:
假设有时间序列数据 [10, 20, 30, 40, 50]
和平滑因子 α=0.5\alpha = 0.5α=0.5,初始平滑值 S0=10S_0 = 10S0=10:
- S1=0.5⋅20+0.5⋅10=15S_1 = 0.5 \cdot 20 + 0.5 \cdot 10 = 15S1=0.5⋅20+0.5⋅10=15
- S2=0.5⋅30+0.5⋅15=22.5S_2 = 0.5 \cdot 30 + 0.5 \cdot 15 = 22.5S2=0.5⋅30+0.5⋅15=22.5
- S3=0.5⋅40+0.5⋅22.5=31.25S_3 = 0.5 \cdot 40 + 0.5 \cdot 22.5 = 31.25S3=0.5⋅40+0.5⋅22.5=31.25
2. 双指数平滑(Double Exponential Smoothing, DES)
原理:
双指数平滑扩展了单指数平滑,旨在处理数据中存在的线性趋势。除了平滑值外,双指数平滑还引入了趋势成分,以便捕捉数据的变化趋势。
公式:
-
平滑值更新:
St=α⋅Xt+(1−α)⋅(St−1+Tt−1) S_t = \alpha \cdot X_t + (1 - \alpha) \cdot (S_{t-1} + T_{t-1}) St=α⋅Xt+(1−α)⋅(St−1+Tt−1) -
趋势成分更新:
Tt=β⋅(St−St−1)+(1−β)⋅Tt−1 T_t = \beta \cdot (S_t - S_{t-1}) + (1 - \beta) \cdot T_{t-1} Tt=β⋅(St−St−1)+(1−β)⋅Tt−1 -
预测值:
Ft+h=St+h⋅Tt F_{t+h} = S_t + h \cdot T_t Ft+h=St+h⋅Tt
其中,Ft+hF_{t+h}Ft+h 是 t+ht+ht+h 时刻的预测值。 -
α\alphaα 是平滑因子。
-
β\betaβ 是趋势平滑因子,取值范围为 0<β<10 < \beta < 10<β<1。
解释:
- 适用于时间序列数据具有明显线性趋势的情况。
- α\alphaα 控制平滑值的平滑程度,β\betaβ 控制趋势成分的平滑程度。
示例:
假设有时间序列数据 [10, 20, 30, 40, 50]
,α=0.5\alpha = 0.5α=0.5 和 β=0.5\beta = 0.5β=0.5:
- 初始平滑值 S0=10S_0 = 10S0=10 和初始趋势值 T0=0T_0 = 0T0=0
- S1=0.5⋅20+(1−0.5)⋅(10+0)=15S_1 = 0.5 \cdot 20 + (1 - 0.5) \cdot (10 + 0) = 15S1=0.5⋅20+(1−0.5)⋅(10+0)=15
- T1=0.5⋅(15−10)+(1−0.5)⋅0=2.5T_1 = 0.5 \cdot (15 - 10) + (1 - 0.5) \cdot 0 = 2.5T1=0.5⋅(15−10)+(1−0.5)⋅0=2.5
- 预测下一个时间步:F6=15+1⋅2.5=17.5F_6 = 15 + 1 \cdot 2.5 = 17.5F6=15+1⋅2.5=17.5
3. 三重指数平滑(Triple Exponential Smoothing, TES)
原理:
三重指数平滑进一步扩展了双指数平滑,以处理时间序列中的季节性成分。除了平滑值和趋势成分外,三重指数平滑还引入了季节性成分。
公式:
-
平滑值更新:
St=α⋅(Xt−Ct)+(1−α)⋅(St−1+Tt−1)S_t = \alpha \cdot (X_t - C_t) + (1 - \alpha) \cdot (S_{t-1} + T_{t-1})St=α⋅(Xt−Ct)+(1−α)⋅(St−1+Tt−1) -
趋势成分更新:
Tt=β⋅(St−St−1)+(1−β)⋅Tt−1T_t = \beta \cdot (S_t - S_{t-1}) + (1 - \beta) \cdot T_{t-1}Tt=β⋅(St−St−1)+(1−β)⋅Tt−1 -
季节性成分更新:
Ct=γ⋅(Xt−St)+(1−γ)⋅Ct−sC_t = \gamma \cdot (X_t - S_t) + (1 - \gamma) \cdot C_{t - s}Ct=γ⋅(Xt−St)+(1−γ)⋅Ct−s
其中,sss 是季节性周期。 -
预测值:
Ft+h=St+h⋅Tt+Ct+h−s⋅⌊h−1s⌋F_{t+h} = S_t + h \cdot T_t + C_{t + h - s \cdot \lfloor \frac{h - 1}{s} \rfloor}Ft+h=St+h⋅Tt+Ct+h−s⋅⌊sh−1⌋ -
α\alphaα 是平滑因子。
-
β\betaβ 是趋势平滑因子。
-
γ\gammaγ 是季节性平滑因子,取值范围为 0<γ<10 < \gamma < 10<γ<1。
解释:
- 适用于时间序列数据存在趋势和季节性波动的情况。
- α\alphaα、β\betaβ 和 γ\gammaγ 分别控制平滑值、趋势成分和季节性成分的平滑程度。
示例:
假设有时间序列数据 [10,20,30,40,50][10, 20, 30, 40, 50][10,20,30,40,50],季节性周期 s=4s = 4s=4,α=0.5\alpha = 0.5α=0.5、β=0.5\beta = 0.5β=0.5、γ=0.5\gamma = 0.5γ=0.5:
- 初始平滑值 S0=10S_0 = 10S0=10、初始趋势值 T0=0T_0 = 0T0=0、初始季节性值 C0=0C_0 = 0C0=0
- 计算每个时间步的平滑值、趋势值和季节性值,最终得到预测值。
总结
- 单指数平滑 主要用于数据没有明显趋势和季节性的情况,简单易用。
- 双指数平滑 适用于存在明显线性趋势的时间序列。
- 三重指数平滑 适用于同时存在趋势和季节性的时间序列,能处理复杂的时间序列数据。
这些平滑方法帮助我们对时间序列数据进行预测,提取数据中的模式和趋势。
总结
- 移动平均 方法通过计算滑动窗口内的平均值来平滑数据,适用于平滑短期波动。
- 指数平滑 方法通过加权前一个平滑值和当前观察值来平滑数据,适用于捕捉长期趋势和季节性变化。
这些平滑方法有助于简化数据分析,使得我们可以更清晰地看到时间序列数据中的长期趋势和周期性变化。