跳转至

预测技术

常见的客观预测方法有因果模型与时间序列方法。这些方法的前提假设是过去的变量及其相互作用关系在未来将继续存在并发挥作用。

因果模型

因果模型即找到一个函数,使用与预测变量相关的其他变量进行预测。

\[ y = f(X_1, \dots, X_n) \]

其中\(X_1, \dots, X_n\)是与\(y\)相关的其他变量。

对于线性因果模型,函数\(f\)是关于\(X_1, \dots, X_n\)的线性函数,即:

\(f(X_1, \dots, X_n) = \alpha_0 + \alpha_1X_1 + \dots + \alpha_nX_n\)

时间序列方法

此处的时间序列指往期对某变量观测值的集合。时间序列方法仅仅依靠这些观测值对该变量的未来进行预测。

在现实的生产运作中,时间序列通常会表现出以下模式:

  • 趋势,即观测值在整个时间序列中所表现出的趋势
  • 季节,即观测值在时间序列中的一部分所表现出的趋势
  • 周期,即观测值在时间序列中重复多次出现的趋势
  • 随机,指观测值无规则的变动

实际的时间序列可能同时包含以上所有特征。

观测与预测

  1. \(\{D_t\}\)为观测变量在\(1\sim t\)的时间内的观测值组成的序列;
  2. \(F_{t-\tau, t}\)表示时间序列在\(t-\tau\)周期内对\(t\)周期的观测值作出的预测。特殊地,\(F_t=F_{t-1, t}\),即为提前一个周期的预测。

如下指标可以用于衡量预测效果,定义偏差\(e_t = D_t - F_t\)

  • 平均绝对偏差(MAD):\(\frac{1}{n}\sum_{i=1}^n|e_i|\)
  • 均方误差(MSE):\(\frac{1}{n}\sum_{i=1}^ne_i^2\)
  • 平均绝对百分误差(MAPE):\(\frac{1}{n}\sum_{i=1}^n|e_i/D_i|\times 100\%\)

平稳序列的预测

平稳序列是联合概率分布不随时间改变,形如\(D_t=\mu + \epsilon_t\)的序列。

对平稳序列,常用两种预测方法,即移动平均与指数平滑。

移动平均

移动平均,\(MA(N)\)

\[ F_t = \frac{1}{N}\sum_{i=t-N}^{t-1}\alpha_{i-t+N+1}D_i \]

\(\alpha_i=1\)时,称该移动平均为简单移动平均,否则为加权移动平均。

对于简单移动平均,根据前一周期的预测值和新的观测值可以计算下一周期的预测值:

\[ \begin{aligned} F_{t+1} &= \frac{1}{N}\sum_{i=t-N+1}^{t}D_i \\ &= \frac{1}{N}\sum_{i=t-N}^{t-1} - D_{t-N} + D_t \\ &= F_{t} + \frac 1N \left(D_t - D_{t-N}\right) \end{aligned} \]

对于平稳序列,移动平均的预测通常滞后于趋势的发展。

指数平滑

当前的预测值等于上一次预测值与当前需求实际值的加权平均,即:

\[ \begin{aligned} F_t &= \alpha D_{t-1} + (1-\alpha)F_{t-1} \\ &= F_{t-1} + \alpha e_{t-1} \end{aligned} \]

也可以理解为对上一次预测的偏差作出系数为\(\alpha\)的修正。

已知\(t=0\)时对\(D_1\)的预测为\(F_1\),则:

\[ \begin{aligned} F_2 &= \alpha D_1 + (1-\alpha) F_1 \\ F_3 &= \alpha D_2 + (1-\alpha) F_2 =\alpha D_2 + (1-\alpha)\alpha D_1 + (1-\alpha) ^ 2 F_1 \\ \vdots \\ F_n &= \sum_{i=1} ^{n-1} \alpha(1-\alpha)^{i-1}D_{n-i} + (1-\alpha)^{n-1}F_1 \end{aligned} \]

趋势序列

对趋势序列的预测通常使用回归分析,即假设观测变量与预测变量间存在函数关系,则可以根据观测变量和预测变量的观测值对预测变量进行预测。

线性回归

当回归使用形如\(\hat Y=a+bX\)的线性函数时,称为线性回归。由此可以使用最小二乘法进行拟合。

最小二乘法使得\(\sum|Y-\hat Y|^2\)最小,即预测点和观测点的距离平方和最小。假设观测变量为\(X_1, \dots, X_m\),预测变量为\(y\),共\(n\)组数据点,则线性回归模型为:

\[ \hat y = X\vec a \]

其中\(\vec a, , \hat y\)\(m\)维列向量,\(X\)\(n\times m\)矩阵。

则残差平方和即为\(f(a; X, y) = (y - \hat y)^T(y - \hat y)=(y - Xa)^T(y - Xa)\)

\(\vec a, \vec b\)求导,得:

\[ \frac{\partial f}{\partial \vec a} = 0 \]

\(\frac{\partial f}{\partial \vec a} = 0\)即:

\[ \begin{aligned} \frac{\partial f}{\partial \vec a} &= 2X^T(X\vec a - y) \\ &= 2X^TX\vec a + 2X^Ty \\ &= \vec 0 \end{aligned} \]

\(\vec a = (X^TX)^{-1}X^Ty\)

双重指数平滑

双重指数平滑可以用于预测具有线性趋势的时间序列,其中使用两个平滑参数分别预测序列值\(S_t\)和趋势值\(G_t\)

  • 序列值等价于曲线的截距 $$ S_t = \alpha D_t + (1 - \alpha)(S_{t-1} + G_{t-1}) $$
  • 趋势值等价于曲线的斜率 $$ G_t = \beta(S_t - S_{t-1})+(1-\beta)G_{t-1} $$
  • \(t\)时刻提前\(\tau\)步作出的预测\(F_{t, t+\tau} = S_t+\tau G_t\)

季节性序列

季节性序列是每\(N\)个周期重复一次的序列,其中\(N\)被称为季的长度。

对于季节中的每个周期,都有一个季节因子\(c_t\),指平均意义下第\(t\)个周期的需求与整体平均需求的比值,有\(\sum c_t = N\)

  • 计算所有数据的样本均值
  • 将每个观测值除以样本均值,即为每个观测周期的季节因子
  • 将每季中相同周期的季节因子取均值,得到\(N\)个季节因子

对于同时具有季节性波动和趋势的季节性序列,可以按照如下方式进行预测:

  • 计算序列的季节因子
  • 将观测值除以季节因子,得到消除季节性波动的序列
  • 用趋势序列的预测方法进行预测
  • 预测结果乘以季节因子,得到最终的预测值

缺点:在获得新的观测值后,需要重新计算所有的季节因子。

三重指数平滑

假设需求为\(D_t = (\mu +G_t)c_t + \epsilon_t\)(乘积型)。该形式使用三个指数平滑对序列(截距)、趋势(斜率)和季节因子(周期)分别进行拟合。

  • 序列:\(S_t = \alpha \frac{D_t}{c_{t-N}} + (1-\alpha) (S_{t-1} + G_{t-1})\)\(c_{t-N}\)用于消除季节因子的影响。
  • 趋势:\(G_t = \beta(S_t - S_{t-1}) + (1-\beta) G_{t-1}\)
  • 季节因子:\(c_t = \gamma\frac{D_t}{S_t} + (1-\gamma) c_{t-N}\)

Box-Jenkins模型:ARIMA

ARIMA模型是利用时间序列的自相关结构:

Auto Regressive Integrated Moving Average

构建步骤:

  1. 数据转换
  2. 模型识别
  3. 参数估计
  4. 预测
  5. 评价

自回归过程:AR(p)

对于平稳序列:

  1. 间隔相同的任意一组需求的联合边际分布相同->协方差相同
  2. 任意两个观测的协方差仅取决于相隔的周期数
\[ \mathrm{Cov}(D_{t+m}, D_{t+m+k}) = E(D_{t+m}D_{t+m+k}) - E(D_{t+m})E(D_{t+m+k}) \]

相关系数:滞后\(k\)期的自相关系数

\[ \rho_k = \frac{\mathrm {Cov}(D_{t+m}, D_{t+m+k})}{\sqrt{\mathrm {Var}(D_{t+m})}\sqrt{\mathrm {Var}(D_{t+m+k})}} \]

样本的自相关函数:

\[ r_k = \frac{\sum_{t=k+1} ^ n(D_t - \overline D)(D_{t-k} - \overline D)}{\sum_{t=1} ^ n(D_t - \overline D)^2} \]
\[ D_t = a_0 + a_1D_{t-1} + \dots + a_pD_{t-p} + \epsilon_t \]

\(p\)为自回归过程的阶数,一阶自回归模型\(AR(1)\)

\[ D_t = a_0 + a_1 D_{t-1} + \epsilon_t \]

自相关函数为:\(\rho_j = a_1^j\)

将样本的自相关函数与理论的自相关函数进行比较,判断ARIMA的拟合效果。

移动平均过程:MA(q)

\[ D_t = b_0 - b_1\epsilon_{t-1} -\dots - b_q\epsilon{t-q} +\epsilon_t \]

\(AR(1)\)过程本质上是\(MA(\infty)\)过程。

\(MA(1)\)过程:\(D_t = b_0 - b_1\epsilon_{t-1} + \epsilon_t\)

对应于\(AR(1)\)过程的自相关函数:

\[ \left\{\begin{aligned} \rho_1 &= \frac{-b_1}{1+b_1^2} \\ \rho_2 &= \rho_3 = \dots = 0 \end{aligned}\right. \]

ARMA模型

\(ARMA(p, q)\)模型是\(AR(p)\)模型与\(MA(q)\)模型的结合,如\(ARMA(1, 1)\)

\[ D_t = c+a_1D_{t-1} - b_1\epsilon_{t-1} + \epsilon_t \]

如果序列不是平稳序列,而存在趋势性和/或季节性,需要将非平稳过程转换为平稳过程。

  • \(D_t\)存在线性趋势时,使用差分方法消除趋势性:\(U_t = D_t - D_{t-1}\)\(U_t\)是平稳序列。
  • \(D_t\)存在季节性趋势时,使用差分方法消除趋势性:\(U_t = D_t - D_{t-N}\)
  • \(U_t\)进行加和,得到初始的\(D_t\)

评论