时间序列是一组按时间顺序排列的观测值 y 1 , y 2 , ⋯ , y t y_1,y_2,\cdots, y_t y1,y2,⋯,yt。
1. 预测——基本概念
预测 是在给定所有当前信息(包括历史数据和可能影响这些事件的任何未来事件的知识)的情况下,对未来事件和条件的预测。预测可以为商业和经济决策、计划和政府政策提供信息。
预测的目标是 在给定观测序列直到现在的时间 t t t,预测时间索引在未来点 t + h t + h t+h 的响应变量。也就是说,给定 y 1 , y 2 , ⋯ , y t y_1,y_2,\cdots, y_t y1,y2,⋯,yt,预测 Y t + h Y_{t+h} Yt+h,其中 h h h 是 预测区间(forecast horizon)。可以对此进行扩展,即存在预测因子 x 1 , x 2 , ⋯ , x t \mathbf x_1,\mathbf x_2,\cdots, \mathbf x_t x1,x2,⋯,xt,从而将其视为一个 动态回归(dynamic regression) 问题。
1.1 点预测(Point forecasting)
将一个点的预测定义为: Y ^ t + h = f ( Y 1 : t ) \displaystyle \hat Y_{t+h}=f(Y_{1:t}) Y^t+h=f(Y1:t)
定义平方损失函数为: L ( Y t + h , f ( Y 1 : t ) ) = ( Y t + h − f ( Y 1 : t ) ) 2 \displaystyle L(Y_{t+h},f(Y_{1:t}))=(Y_{t+h}-f(Y_{1:t}))^2 L(Yt+h,f(Y1:t))=(Yt+h−f(Y1:t))2,其中 Y 1 : t Y_{1:t} Y1:t 代表 Y 1 , Y 2 , ⋯ , Y t Y_1,Y_2,\cdots, Y_t Y1,Y2,⋯,Yt。
平方误差损失下的最优点预测是条件期望,即 f ( Y 1 : t ) = E ( Y t + h ∣ Y 1 : t ) f(Y_{1:t})=\mathrm E(Y_{t+h}|Y_{1:t}) f(Y1:t)=E(Yt+h∣Y1:t)。即在给定历史数据的情况下近似 Y t + h Y_{t+h} Yt+h 的条件期望。 Y t + h Y_{t+h} Yt+h 有可能是 h h h 的多重值。
1.2 区间预测(Interval forecasting)
密度预测(density forecast) : p ^ ( Y t + h ∣ y 1 , y 2 , ⋯ , y t ) \displaystyle \hat p(Y_{t+h}|y_1,y_2,\cdots, y_t) p^(Yt+h∣y1,y2,⋯,yt) 是整个条件密度(conditional density) p ( Y t + h ∣ y 1 , y 2 , ⋯ , y t ) \displaystyle p(Y_{t+h}|y_1,y_2,\cdots, y_t) p(Yt+h∣y1,y2,⋯,yt) 的估计;
区间预测( interval forecast) :对区间 ( y ^ t + h , L , y ^ t + h , U ) \displaystyle (\hat y_{t+h,L},\hat y_{t+h,U}) (y^t+h,L,y^t+h,U) 的估计,如: P ^ ( y ^ t + h , L < Y t + h < y ^ t + h , U ) = 1 − α \displaystyle\hat P(\hat y_{t+h,L}<Y_{t+h}<\hat y_{t+h,U})=1-\alpha P^(y^t+h,L<Yt+h<y^t+h,U)=1−α
工具 Fan chart
2. 时间序列
2.1 时间序列分解(Time series decomposition)
定义一个时间序列为:
Y
t
=
f
(
T
t
,
S
t
,
C
t
,
E
t
)
\displaystyle Y_t=f(T_t,S_t,C_t,E_t)
Yt=f(Tt,St,Ct,Et),
其中,
- T t T_t Tt 是趋势分量(trend component);趋势(trend) ——序列在一个长期范围内的增长或衰减的趋势走向。
- S t S_t St 是季节分量(seasonal component);季节因子(Seasonal) ——由季节因子(seasonal factors,年、周、月或天)引起的序列系统性的均值变化。
- C t C_t Ct 是循环分量( cyclic component);循环(Cyclic)——当时间序列中存在非固定周期的中长期波动时,就存在循环模式。
- E t E_t Et 是异常或误差分量( error component);异常(Irregular)——短期波动或噪声。
时间序列分解方法是将一个时间序列分解成不同部分的算法,通常用于季节调整,或增加序列的可解释性。在预测的背景下,分解方法是探索性数据分析的有用工具,允许我们可视化数据中的模式。一个小案例如上图所示。
时间序列分解方法是将一个时间序列分解成不同部分的算法,通常用于季节调整,或增加序列的可解释性。在预测的背景下,分解方法是探索性数据分析的有用工具,允许我们可视化数据中的模式。一个小案例如上图所示。
3. 预测方法
3.1 随机游动(Random walk)
3.1.1基础随机游动
随机游动方法使用最新观测到数据进行序列的预测,即 y ^ t + h = y t \hat y_{t+h}=y_t y^t+h=yt;
假设模型为: Y t = Y t − 1 + ε t \displaystyle Y_t=Y_{t-1}+\varepsilon_t Yt=Yt−1+εt,其中 ε t ∼ N ( 0 , σ 2 ) , i . i . d \varepsilon_t\sim N(0,\sigma^2),i.i.d εt∼N(0,σ2),i.i.d;
其模型预测如下:
模型的点预测和区间预测如下:
其中,
z
α
2
\displaystyle z_\frac{\alpha}{2}
z2α 是整体分布的临界值。
基于正态误差假设的预测区间: y t ± z α 2 × h σ ^ 2 y_t\pm z_\frac{\alpha}{2}\times\sqrt{h\hat\sigma^2} yt±z2α×hσ^2,有:
- 预测区间是基于 插值( plug-in method) 的,用一个估计值来代替未知的 σ 2 \sigma^2 σ2;
- 插值方法是一种标准的方法,但是它忽略了参数的不确定性,导致预测区间太窄;
- 如果误差不是高斯分布的,例如 Bootstrap 算法,此时使用需谨慎。
3.1.2 季节性随机游动(Seasonal random walk)
在季节模式下的时间序列,可以将在相同季节下观测到的最新数据作为预测结果,如下:
y ^ t + h = y t + h − m , i f ( h ≤ m ) \hat y_{t+h}=y_{t+h-m},\;if (h\le m) y^t+h=yt+h−m,if(h≤m),其中, m m m 是季节区间长度。
更一般化的形式为: y ^ t + h = y t + h − k m , k = ⌊ h − 1 m + 1 ⌋ \displaystyle \hat y_{t+h}=y_{t+h-km},\;\;k=\lfloor\frac{h-1}{m}+1\rfloor y^t+h=yt+h−km,k=⌊mh−1+1⌋
3.2 漂移法(Drift method)
漂移法将最新观测数据和之前观测数据的平均值作为预测结果,如下:
y
^
t
+
1
=
y
t
+
∑
i
=
2
t
y
i
−
y
i
−
1
t
−
1
;
\displaystyle \hat y_{t+1}=y_t+\sum^t_{i=2}\frac{y_i-y_{i-1}}{t-1};
y^t+1=yt+i=2∑tt−1yi−yi−1;
或
y
^
t
+
h
=
y
t
+
h
×
∑
i
=
2
t
y
i
−
y
i
−
1
t
−
1
;
\displaystyle \hat y_{t+h}=y_t+h\times\sum^t_{i=2}\frac{y_i-y_{i-1}}{t-1};
y^t+h=yt+h×i=2∑tt−1yi−yi−1;
3.3 单指数平滑(Simple exponential smoothing,SES)
指数平滑 预测 是对过去观测值的加权平均,其中权重随着时间的过去而衰减。即时间越久远,权重越小;当时间序列组份随时间变化而改变时,指数平滑是有效的。
3.3.1 预测规则
预测公式: y ^ t + 1 = ℓ t \displaystyle \hat y_{t+1}=\ell_t y^t+1=ℓt;
平滑公式: ℓ t = α y t + ( 1 − α ) ℓ t − 1 \displaystyle \ell_t=\alpha y_t+(1-\alpha)\ell_{t-1} ℓt=αyt+(1−α)ℓt−1.
其中, ℓ 0 \ell_0 ℓ0 是初始值,且 0 ≤ α ≤ 1 0\le\alpha\le1 0≤α≤1;
3.3.2 指数加权平均移动(Exponentially weighted moving average,EWMA)
单指数平滑也被称为 指数加权平均移动。
具体的,
ℓ
t
\ell_t
ℓt 的更新规则如下:
3.3.3 单指数平滑的特性
- 有助于预测不断变化的时间序列;
- α \alpha α 越大越趋向于近期的观测,使得预测更能拟合序列中的近期变化;
- α \alpha α 越小意味着过去观测的权重越大,使得预测曲线更加平滑;
- 初始化时经常使 ℓ 0 = y 1 \ell_0=y_1 ℓ0=y1,也可将其视为一个参数。
预测曲线随
α
\alpha
α 的变化如下图所示:
3.3.4 对参数 α \alpha α 的学习(Estimation)
利用经验风险最小化来对 α \alpha α 进行学习估计,即: α ^ = a r g m i n α ∑ t = 1 N ( y t − ℓ t − 1 ) 2 \displaystyle \hat\alpha=argmin_{\alpha}\sum^N_{t=1}(y_t-\ell_{t-1})^2 α^=argminαt=1∑N(yt−ℓt−1)2;
其中,每个 ℓ t \ell_t ℓt 都是关于 α \alpha α 的非线性函数,可以使用数值优化方法进行求解。
3.3.5 统计模型描述
预测公式: y ^ t + 1 = ℓ t + ε t \displaystyle \hat y_{t+1}=\ell_t+\varepsilon_t y^t+1=ℓt+εt;
平滑公式: ℓ t = α y t + ( 1 − α ) ℓ t − 1 \displaystyle \ell_t=\alpha y_t+(1-\alpha)\ell_{t-1} ℓt=αyt+(1−α)ℓt−1.
其中, ℓ 0 \ell_0 ℓ0 是初始值,且 0 ≤ α ≤ 1 0\le\alpha\le1 0≤α≤1, 并且 ε t ∼ N ( 0 , σ 2 ) , i . i . d \varepsilon_t\sim N(0,\sigma^2),i.i.d εt∼N(0,σ2),i.i.d;
以误差修正模式对统计模型进行重新描述,得:
点估计和区间估计,注意,当误差不是正态分布时,下述假设不成立,应当采取其他假设。
3.4 趋势校正指数平滑(Trend corrected exponential smoothing)
3.4.1 预测规则
趋势校正指数平滑法也叫 霍尔特指数平滑法(Holt exponential smoothing),遵从时间变化趋势,其预测模型如下:
预测公式 : y ^ t + 1 = ℓ t + b t \displaystyle \hat y_{t+1}=\ell_t+b_t y^t+1=ℓt+bt;
平滑公式: ℓ t = α y t + ( 1 − α ) ( ℓ t − 1 + b t − 1 ) \displaystyle \ell_t=\alpha y_t+(1-\alpha)(\ell_{t-1}+b_{t-1}) ℓt=αyt+(1−α)(ℓt−1+bt−1)
趋势公式: b t = β ( ℓ t − ℓ t − 1 ) + ( 1 − β ) b t − 1 \displaystyle b_t=\beta(\ell_t-\ell_{t-1})+(1-\beta)b_{t-1} bt=β(ℓt−ℓt−1)+(1−β)bt−1
其中, 初始值 ℓ 0 , b 0 \ell_0,b_0 ℓ0,b0 ,且 0 ≤ α ≤ 1 , 0 ≤ β ≤ 1 0\le\alpha\le1, 0\le\beta\le1 0≤α≤1,0≤β≤1
3.4.2 统计模型描述
3.4.3 点预测
3.5 Holt Winters 指数平滑(Holt Winters exponential smoothing)
霍尔特-温特斯指数平滑法将 趋势校正方法(the trend corrected method) 推广到季节性数据,它考虑了 加性(additive) 或 乘性(multiplicative ) 季节性因子。
3.5.1 加性Holt Winters 指数平滑(Additive Holt Winters Smoothing)
其中, L L L 是季节频率, 初始值 ℓ 0 , b 0 \ell_0,b_0 ℓ0,b0 ,且 0 ≤ α ≤ 1 , 0 ≤ β ≤ 1 , 0 ≤ δ ≤ 1 0\le\alpha\le1, 0\le\beta\le1, 0\le\delta\le1 0≤α≤1,0≤β≤1,0≤δ≤1, S t − L S_{t-L} St−L 有 t = 1 , ⋯ , L t=1,\cdots,L t=1,⋯,L。
其中,
[
]
[\;]
[] 是模运算符,
I
i
,
L
=
{
0
,
i
f
(
h
m
o
d
L
)
≠
i
1
,
i
f
(
h
m
o
d
L
)
=
i
\displaystyle I_{i,L}= \left\{ \begin{aligned} 0,&& if (h\;mod L)\ne i \\ 1,&& if (h\;mod L)= i \\ \end{aligned} \right.
Ii,L={0,1,if(hmodL)=iif(hmodL)=i
3.5.2 乘性Holt Winters 指数平滑(Holt Winters 指数平滑)
其中,
L
L
L 是季节频率, 初始值
ℓ
0
,
b
0
\ell_0,b_0
ℓ0,b0 ,且
0
≤
α
≤
1
,
0
≤
β
≤
1
,
0
≤
δ
≤
1
0\le\alpha\le1, 0\le\beta\le1, 0\le\delta\le1
0≤α≤1,0≤β≤1,0≤δ≤1,
S
t
−
L
S_{t-L}
St−L 有
t
=
1
,
⋯
,
L
t=1,\cdots,L
t=1,⋯,L。
3.6 阻尼趋势指数平滑(Damped trend exponential smoothing)
阻尼趋势指数平滑解决了这样一个问题: 无限期地推断未来的趋势,可能导致难以置信的预测;即预测未来特别久远的值。
其中, ϕ \phi ϕ 是阻尼因子(damping parameter), 0 ≤ ϕ ≤ 1 0\le\phi \le1 0≤ϕ≤1。同理,可将阻尼指数平滑扩展 加性(additive) 或 乘性(multiplicative ) 季节性因子。
4. 预测准确率的度量
以 Y ^ t + h ∣ t \hat Y_{t+h|t} Y^t+h∣t(即 Y ^ t + h \hat Y_{t+h} Y^t+h) 作为给定观测值 y 1 : t y_{1:t} y1:t 时对 Y t + h Y_{t+h} Yt+h 的预测,即:
- Y ^ t + 1 ∣ t \hat Y_{t+1|t} Y^t+1∣t 为 单步向前(one-step-ahead) 预测;
- Y ^ t + h ∣ t , h ≥ 2 \hat Y_{t+h|t},h\ge2 Y^t+h∣t,h≥2 为 多步向前(multiple-step-ahead) 预测。
通常使用训练样本之外的平方损失和MSE来度量预测准确率。在商业预测中,还经常使用平均绝对误差和错误率来度量预测准确率。
4.1 平均绝对误差(MAE, mean absolute error)
M
A
E
=
m
e
a
n
(
∣
y
t
−
y
^
t
∣
)
MAE=mean(|y_t-\hat y_t|)
MAE=mean(∣yt−y^t∣)
MAE 和 RMSE 是以原始数据为单位的。 MSE 的错误率值是超过 MAE的。
4.2 百分比错误率(Percentage errors)
- 百分比错误率 p t = 100 × ( y t − y ^ t y t ) \displaystyle p_t=100\times(\frac{y_t-\hat y_t}{y_t}) pt=100×(ytyt−y^t),它的一个优点是与数据规模无关;
- 更常用的一个度量是 平均绝对百分比错误率(MAPE,mean absolute percentage error) : M A P E = m e a n ( ∣ p t ∣ ) MAPE=mean(|p_t|) MAPE=mean(∣pt∣);
- 基于百分比误差的度量方法的缺点是,如果在周期内对任何 t t t ,有 y t = 0 y_t = 0 yt=0 ,则结果都是无穷大的或未定义的;而且如果 yt = 0接近于零,则具有极大值。