logo

预测:方法与实践

王哲峰 / 2024-02-28


目录

预测

什么是可以被预测的?

可预测性需要满足的条件

事件(或数量)的可预测性取决于一下几个因素:

  1. 我们对它的影响因素的了解程度;
  2. 有多少历史数据是可用的;
  3. 未来与过去的相似程度;
  4. 预测是否会影响我们试图预测的事物。

例如,对居民用电需求可以非常准确地预测,因为通常这四个条件都可以满足的:

  1. 我们很好地了解它的影响因素:电力需求很大程度上受温度影响,也受日期(如假期)和经济状况的影响;
  2. 通常我们可以获得过去几年的电力需求数据,以及过去几十年的天气状况数据;
  3. 对于短期预测(几周内),可以假设未来的需求行为将与过去是类似的;
  4. 对于大多数住宅用户来说,电价不依赖于需求,因此需求预测对消费者行为几乎没有影响。

如何准确预测

通常在预测中关键的一步是知道什么情形下能够进行准确预测,确定什么时候预测还不如抛个硬币来的准确。 好的预测可以捕捉到历史数据中的真实模式和关系,而不是重复过去发生过未来不会再发生的事情。

预测方法的选择

预测方法的选择取决于什么数据可用和被预测变量的可预测性。

预测什么?

在预测的初期阶段,需要决定应该预测的内容。例如,如果生产中的物料需要预测,应该探究以下问题是否要预测:

  1. 用于每条产品线或一组产品?
  2. 用于每个销售网点,或按区域分组的网点,或仅用于总销售额?
  3. 周度数据、月度数据或年度数据?

在进行预测时,应该花时间与使用预测者进行交流,以确保你了解他们的需求并知道预测会被如何使用, 然后再进行扩展性的工作。

预测时长

考虑预测的前景时段也十分必要。是需要提前 1 个月,提前 6 个月还是提前 10 年预测? 根据哪个预测时长最为重要,我们需要不同种类的模型。

预测应该是说管理决策中的一个主要组成部分,因为它在企业的很多地方都发挥着重要作用。 现代企业组织需要短期、中期和长期预测,具体预测什么取决于特定的应用场景。

人员、生产和运输的安排调度需要短期预测。作为安排过程中的一部分,需求预测常常也是必须的。

确定未来的资源需求需要中期预测,以便购买原材料、雇用人员或购买机器和设备。

在战略规划中会使用长期预测。此类决定必须将市场机会、环境因素和内部资源纳入考量。

预测需要多频繁

需要经常进行的预测,最好是使用自动化系统,而不是需要仔细人工操作。

预测需要的数据

一旦确定了所需的预测,则需要查找或收集预测所基于的数据。预测所需的数据可能已经存在了。 近年来,大量的数据被记录,而预测者的任务往往是确定所需数据的存储位置和方式。 数据可能会包括公司的销售记录、产品的历史需求或地理区域的失业率。在制定合适的预测方法之前, 预测者大一部分的时间将用于寻找和整理可用数据。

预测数据和方法

在大程度上,什么数据是可用的决定了适合什么合适的预测方法。

定性预测方法

如果没有可用的数据,或者如果可用的数据与预测无关,那么应该使用 定性预测 方法。 这些方法不是纯粹的猜测—有完善的结构化方法来获得良好的预测,而不使用历史数据。

定量预测方法

在满足以下两个条件的时候可以使用 定量预测

  1. 关于过去的数字化信息是可以用的;
  2. 有理由假设过去的一些模式会在未来延续下去。

有各种各样的定量预测方法,这些方法通常是在特定的学科范围为特定的目的而开发的。 每一种方法都有自己的属性、精度和成本,这些应该在方法选择时考虑到。

大多数定量预测问题都使用 时间序列数据 (按时间间隔定期收集) 或 横截面数据 (在一个时间点收集)。 这里,我们只关注预测未来的数据,并且我们主要专注于时间序列领域。

时间序列预测

任何按照时间顺序观察的事物都是时间序列。 我们将只考虑定期观察的时间序列 (例如,每小时、每天、每周、每月、每季度、每年)。 不规则间隔时间序列也可能出现,目前暂不考虑。

最简单的时间序列预测方法只用了预测变量的信息,而不去寻找影响预测变量的因素。 因此,这些方法可以推断趋势部分和季节性部分,但是它们会忽略掉所有其他的信息, 如营销计划,竞争对手活动,经济状况变动等。

预测变量和时间序列预测

通常预测变量在时间序列预测中是有用的。例如,假设我们想要预测炎热地区夏季时每小时用电需求量。 可以用如下包含预测变量的模型:

$$ED = f(当前气温,经济实力,人口当日时间,星期几,误差)$$

这种关系并不确切–总会有不能由预测变量决定的电力需求变化。 右侧的“误差”项表示随机波动和没有被包括在模型中的相关变量的影响。 我们将它称之为可解释模型,因为它帮助解释电力需求变化的原因。


因为电力需求数据构成了一组时间序列,我们也可以用一个时间序列模型来进行预测。 在这种情况下,一个合适的时间序列模型可以为如下形式:

$$ED_{t+1}=f(ED_{t},ED_{t-1},ED_{t-2},ED_{t-3},\cdots,误差)$$

$t$ 表示当前得时间,$t+1$ 表示下一个小时,$t-1$ 表示前一个小时,$t-2$ 表示前两个小时,以此类推。 此处,对未来的预测是基于变量得过去值,而不是基于可能影响系统得外部变量。 同样,右侧得“误差”项允许随机波动和不包含在模型中的相关变量的影响。


还有第三种模型,它结合了上述两种模型的特定。例如,它可能有如下形式:

$$ED_{t+1}=f(ED_{t},当前气温,当前时间,星期几,误差)$$

这些类型的“混合模型”在不同的学科中给出了不同的名称。它们被称为动态回归模型、面板数据模型、纵向模型。 传递函数模型和线性系统模型(假设 $f$ 是线性的)。

解释模型非常有用,因为它包含了有关其他变量的信息,而不仅仅是要预测的变量的历史值。 但是,预测者可能选择时间序列模型而不是解释性或混合模型的原因有多种:

在预测中使用的模型取决于可用的资源和数据、模型的准确性以及预测模型的使用方式。

预测过程的主要步骤

定义问题

通常这是预测中最困难的步骤。要准确定义这个问题,需要了解怎样运用预测方法,谁需要这个预测, 以及预测效果如何满足需要这个预测的机构。预测人员需要花费一定时间与所有参与收集数据、 维护数据库和使用这个预测对未来进行规划的人沟通。

收集信息

一般至少需要两种信息收集方式:

  1. 统计数据
  2. 收集数据和进行预测方面专家的积累经验

通常情况下,要获得足够多的历史数据以构建良好的统计模型是很困难的。 在这种情况下,可以使用判断预测方法。有时候,陈旧数据会因相应数据发生结构变化而失效, 因而我们一般只选择使用较新的数据。然而,一个好的统计模型可以处理系统中的结构变化, 因此不要轻易丢弃好的数据。

初步探索性分析

选择及拟合模型

最佳模型的选择取决于历史数据的可用性、预测变量与各解释变量之间的相关性,以及预测的使用方式。 比较两个或三个潜在的模型是很常见的。每个模型本身都基于人为提出的一组假设(显式和隐式)而建立, 通常包含一个或多个参数,这些参数必须使用已知的历史数据进行估计。

常用统计学模型:

使用及评估预测模型

一旦模型及其参数确定后,该模型就可以用来进行预测。 模型的预测效果只有用于预测的数据得到之后才能得到正确的评价。 目前已经开发了许多方法来评估预测的准确性。在使用和进行预测时会存在很多组织结构问题。 当在实践中使用预测模型时,会出现许多实际问题,例如如何处理缺失值和异常值,或者如何处理短时间序列。

统计预测观点

区间预测与点预测

我们试图预测的东西是未知的(或者我们不能预测它),所以我们可以把它想象成一个 随机变量。 例如,下个月的总销售额可能会有一系列的可能值,直到月底我们把实际销售额加起来,我们才知道这个值会是多少。 所以在我们知道下个月的销售情况之前,这是一个随机的变量。

因为下个月时间节点比较近,我们通常清楚销售量大概是多少。如果我们预测明年同一个月的销售情况, 可能的销售量变动就会较大。在大多数预测情况下,随着事件的临近,预测对象的相关变动较小。 换句话说,预测的越早,预测结果越不稳定

我们进行预测的过程实际是寻找随机变量可能取值范围内的中间值。通常情况下,预测会伴随着一个 预测区间, 给出一个随机变量具有较高概率的范围值。例如,95% 的预测区间包含一系列的值,这个预测区间包含实际未来值的概率为 95%。

我们通常会给出这些预测区间,而不是下图中显示的单个可能的预测值。 下面的图表显示了未来澳大利亚国际游客的 80% 和 95% 的预测区间。 蓝线是可能的预测值的平均值,我们称之为 点预测

img

预测分布

使用下标 $t$ 作为时间。例如,$y_{t}$ 表示时间 $t$ 对应的观察值。假设将观察到的所有信息表示为 ${\cal I}$, 目标是预测 $y_{t}$。此时,我们将 $y_{t}|{\cal I}$ 表示为“给定已知 ${\cal I}$” 情况下的随机变量 $y_{t}$。 这个随机变量取值的概率测度称为 $y_{t}|{\cal I}$ 的“概率分布”。在预测中,我们称之为 预测分布

每当我们谈到“预测”时,通常指的是预测分布的平均值,用 $\hat{y}_{t}$ 来表示 $y_{t}$ 的预测值, 这意味着 $y_{t}$ 所有可能取值的均值包含了我们所有已知的信息。

明确指出我们在进行预测时使用的信息时很必要的。 例如,我们使用 $\hat{y}_{t|t-1}$ 表示在已知观测值 $(y_{1},\cdots,y_{t-1})$ 的情况下 $y_{t}$ 的预测值。 类似地,我们使用 $\hat{y}_{T+h|T}$ 表示在已知观测值 $y_{1},\cdots,y_{T}$ 的情况下 $y_{T+h}$ 的预测值(即考虑时间 $T$ 之前所有观测值的 $h$ 步预测)。

预测工具集

规整的预测工作流程

为时间序列数据生成预测的过程可以分解为几个步骤:

img

  1. 数据准备–整理

预测的第一步是以正确的格式准备数据。 此过程可能涉及加载数据、识别缺失值、过滤时间序列和其他预处理任务。

许多模型有不同的数据要求; 有些要求序列按时间顺序排列,有些则要求没有缺失值。 检查数据是了解其特征的重要步骤,应始终在估计模型之前完成。

  1. 数据可视化–可视化

可视化是理解数据的重要步骤。 查看您的数据可以让您识别常见模式,然后指定合适的模型。

  1. 定义模型–指定

有许多不同的时间序列模型可用于预测,为数据指定适当的模型对于生成适当的预测至关重要。

  1. 训练模型–估计

一旦指定了合适的模型,接下来我们将在一些数据上训练模型。

  1. 检查模型性能–评估

拟合模型后,重要的是检查它对数据的执行情况。 有多种诊断工具可用于检查模型行为, 以及允许将一个模型与另一个模型进行比较的准确性度量。

  1. 产生预测–预测

指定、估计和检查了适当的模型后,就可以生成预测了。

在其他情况下,提供未来时间段的数据集进行预测可能更方便。 当您的模型使用数据中的附加信息(例如外生回归变量)时,通常需要这样做。 模型所需的额外数据可以包含在要预测的观测数据集中。

一些简单的预测方法

一些预测方法虽然简单但非常有效。下面介绍的这四种预测方法可以作为预测的基准方法。

有时候这些最简单的方法可能会是最好的预测方法,但是在很多情况下, 这些方法只是作为基准方法而不是被直接运用。 也就是说,我们提出的任何预测方法都会和这些简单方法比较, 以保证其预测结果优于这些简单方法,否则,新的方法就不值得考虑。

均值法

此方法中,所有未来值的预测值等于历史数据的平均值。我们把历史数据记作:$y_{1},\cdots,y_{T}$, 预测值就可以表示为:

$$\hat{y}_{T+h|T}=\bar{y}=\frac{(y_{1} + \cdots + y_{T})}{T}$$

其中:

朴素方法

Naïve 方法

在朴素预测方法中,我们简单地将所有预测值设为最后一次的观测值,即:

$$\hat{y}_{T+h|T} = y_{T}$$

这种方法在很多经济和金融时间序列预测中表现得非常好。 当数据服从随机游动过程时 Naïve 预测是最优的, 因此 Naïve 方法也被称为“随机游动预测”。

季节性朴素方法

季节性朴素方法与朴素方法类似,它适用于季节性变化剧烈的数据。 我们将每个预测值设为同一季节的前一期观测值(例如:去年的同一个月)。 那么,$T+h$ 时刻的预测值可以记作:

$$\hat{y}_{T+h|T}=y_{T+h-m(k+1)}$$

其中:

这个等式并没有看起来那么复杂,例如,对于月度数据,未来所有二月的预测值都等于前一年二月的观测值。 对于季度数据,未来所有第二季度的预测值都等于前一年第二季度的观测值。 相似的规则适用于其他的月份、季度和其他周期长度。

漂移法

相对于朴素方法,漂移法允许预测值随着时间的推移增大或减小, 并且我们假定单位时间改变量(称作“漂移”)等于历史数据的平均改变量, 因此 $T+h$ 时刻的预测值可以表示为:

$$\hat{y}_{T+h|T}=y_{T}+\frac{h}{T-1}\sum_{T}^{t=2}(y_{t}-y_{t-1})=y_{T}+ h \Big(\frac{y_{T}-y_{1}}{T-1} \Big)$$

这相当于把第一个观测点和最后一个观测点连成一条直线并延伸到未来预测点。

拟合值与残差

拟合值

时间序列中的每个观测值都可以用其之前的观测值预测,我们称其为“拟合值”并记作 $\hat{y}_{t|t-1}$, 代表基于观测值 $y_{1} \cdots,y_{t-1}$ 得出的预测值 $y_{t}$,由于经常用到, 有时我们会去掉部分下标并简写成 $\hat{y}_{t}$,而不是 $\hat{y}_{t|t-1}$,拟合值总是包含到一步预测。

事实上,拟合值通常不是真正的预测值因为包含于预测方法中的任何参数都是利用时间序列中所有可得到的观测值估计出来的, 甚至包括未来观测值。例如,假如我们采用平均方法,拟合值如下给出:

$$\hat{y}_{t}=\hat{c}$$

该式中,$\hat{c}$ 是所有可得观测值的平均值,包括那些在 $t$ 时间以后的观测值。相似地, 对于趋势法,趋势参数是用所有可得观测值估计出来的,在这种情况下拟合值如下:

$$\hat{y}_{t}=y_{t-1}\hat{c}$$

其中:

$$\hat{c}=\frac{y_{T}-y_{1}}{T-1}$$

两种方法中都有参数是用数据估计出来的,$c$ 上的“帽子”说明它是个估计值, 当 $c$ 的估计值由包含时间 $t$ 以后的观测值估计出来时,拟合值不是真正的预测值。 另一方面,Naïve 方法和季节性朴素法不包括任何参数,因此得到的拟合值是真正的预测值。

残差

时间序列模型中的残差可以理解为是在拟合模型后剩余的值。残差等于观测值与相应拟合值之间的差值:

$$e_{t}=y_{t}-\hat{y}_{t}$$

如果在模型中使用了变换,那么查看变换尺度上的残差通常是有用的。我们称这些为“创新残差”。 例如,假设我们对数据的对数建模 $w_{t}=log(y_{t})$。创新残差由 $w_{t}-\hat{w}_{t}$ 给出, 常规残差由 $y_{t}-\hat{y}_{t}$ 给出。如果没有使用变换,那么创新残差与常规残差相同, 在这种情况下,我们将简单地称之为“残差”。

残差在检查模型是否充分捕获了数据中的信息时很有用。为此,我们使用创新剩余。 如果在创新残差中可以观察到残差模式,则可能对模型进行改进。

残差诊断

预测分布和预测区间

使用变换进行预测

分解预测

评估预测精度

评估分布预测准确性

时间序列交叉验证

判断预测

在实践中,使用判断进行预测非常普遍。在很多情况下,判断预测是唯一的选择。 例如 完全缺乏历史数据时, 新产品上市时,新的竞争对手进入市场时,或者在全新并且独特的市场条件下。 例如,2012年12月,澳大利亚政府首次通过立法禁止在香烟包装上使用公司标识, 并要求所有香烟包装必须为深绿色。由于没有历史先例,所以必须采用判断法来预测这种政策的效果。

还有一些情况是 数据不完整,或者数据获取有一定的滞后。 例如,中央银行在预测当前经济活动水平时会采用判断法,因为 GDP 只能按季度计算,这一过程被称为临近预测。

这个领域的研究已经表明,当预测者拥有:重要的专业知识和更及时的最新信息时,判断预测的准确性会提高。 判断方法可以快速适应这些变化、信息或事件。

多年来,人们越来越多地接受判断预测作为一门科学,也越来越认识到它的必要性。更重要的是,判断预测的质量也有所提高, 其直接原因是认识到 通过实施结构完善的系统方法可以实现对判断预测的改进。 需要注意的是,判断预测具有主观性和局限性。 然而,实施系统化和结构完善的方法可以解决这些限制并显着提高预测精度。

一般有三种情况需要使用判断预测:

  1. 没有可用数据,因此统计方法不适用,判断预测是唯一可行的方法;
  2. 数据可用,先进行统计预测,然后使用判断法进行调整;
  3. 数据可用,分别使用统计预测和判断预测,然后将两者进行组合。

需要说明的是,当数据可用时,更倾向于应用统计方法,或者至少应该从统计方法入手。 统计预测通常优于仅使用判断预测。我们将重点讨论第一种没有可用数据的情况。

动态回归模型

在之前介绍的预测模型中,我们仅利用变量的实际观测值进行建模, 却没有考虑到随时间的推移而产生的相关信息的影响。 例如,假期、竞争对手活动、法律法规变化或其它外部变量影响。 若合理利用此类信息修整模型,可以得到预测效果更好的时间序列模型。 另一方面,在回归模型中,模型考虑了大量预测变量的相关信息, 但并未采用 ARIMA 模型处理时间序列中的动态因素。 在这里,我们考虑如何扩展 ARIMA 模型,将一些与预测变量相关的信息纳入模型之中。

回归模型:

$$y_{t}=\beta_{0}+\beta_{1}x_{1,t} + \cdots + \beta_{k}x_{k,t} +\varepsilon_{t}$$

其中:

这里我们允许误差项中存在自相关。为了与之前的误差项进行区分,我们用 $\eta_{t}$ 代替 $\varepsilon_{t}$$\varepsilon_{t}$ 表示误差项,且利用 ARIMA 模型拟合残差 $\eta_{t}$。例如:若残差 $\eta_{t}$ 满足 $ARIMA(1, 1, 1)$,则回归模型可写为:

$$y_{t} = \beta_{0} + \beta_{1}x_{1, t}+\cdots+\beta_{k}x_{k,t}+\eta_{t}$$ $$(1-\phi_{1}B)(1-B)\eta_{t} = (1+\theta_{1}B)\varepsilon_{t}$$

其中:

需要注意的是,模型中存在两个残差项:一是来自回归模型的误差, 可用 $\eta_{t}$ 表示;二是来自 ARIMA 模型的误差, 可用 $\varepsilon_{t}$ 表示。且假设来自 ARIMA 模型的误差为白噪声。

参考