通过时间序列建模ARIMA利用过去来预测未来

2020-7-24 14:24 3074 66

ARIMA模型是线性回归模型的子集,这些模型试图使用目标变量的过去观察值来预测其未来值。ARIMA模型的一个关键方面是,在其基本形式中,它们不考虑外生变量。相反,预测纯粹是使用目标变量的过去值(或根据这些过去值制作的特征)进行的。

ARIMA代表自回归综合移动平均线。让我们遍历ARIMA模型的每一部分,以便我们完全理解它。

通过时间序列建模ARIMA利用过去来预测未来

AR:自回归

这是最简单的部分。自回归意味着我们根据目标变量的过去值对其进行回归。也就是说,我们将目标变量的滞后值用作X变量:

Y = B0 + B1 * Y_lag1 + B2 * Y_lag2 + ... + B n * Y_lag n

那很简单。所有这些方程式都表明,Y的当前观测值是其过去n值的线性函数(其中n是我们选择的参数; B0,B1等是我们训练模型时拟合的回归beta) )。先前的等式通常称为AR(n)模型,其中n表示滞后次数。我们可以通过稍微改变一下表示法来轻松地将其作为对未来的预测:

Y_forward1 = B0 + B1 * Y + B2 * Y_lag1 + B3 * Y_lag3 + ... B n * Y_lag (n-1)

现在,我们使用当前值及其过去的滞后来预测未来值(提前1个时间)。

一:集成

集成表示我们对数据应用差分步骤。也就是说,不要运行如下所示的回归:

Y_forward1 = B0 + B1 * Y + B2 * Y_lag1 + ...

我们这样做:

Y_forward1-Y = B0 + B1 *(Y-Y_lag1)+ B2 *(Y_lag1-Y_lag2)+ ...

第二个方程式是说Y的未来变化是Y的过去变化的线性函数。原因是,差异通常比原始无差异值要平稳得多。在进行时间序列建模时,我们希望Y变量是均值方差平稳的。这意味着模型的主要统计属性不会随采样时间的不同而变化。基于固定数据的模型通常更健壮。

例如,以实际GDP(实际是指已针对通货膨胀进行调整)。从图中可以明显看出原始GDP数据不是固定的。它的上升使得该地区上半年的平均GDP远低于下半年的平均值。

通过时间序列建模ARIMA利用过去来预测未来

美国实际GDP(来源:圣路易斯联邦储备银行)

如果我们对数据进行差异化,则会得到以下图表。请注意,它现在要平稳得多(多年来的均值和方差大致一致)。

通过时间序列建模ARIMA利用过去来预测未来

实际GDP的变化更为平稳

MA:移动平均线

当我第一次研究时间序列时,我假设移动平均值只是Y变量的尾随移动平均值(例如200天移动平均值)。但是,尽管它们在精神上有些相似,但它们是不同的数学实体。

移动平均模型由以下方程式总结:

Y = B0 + B1 * E_lag1 + B2 * E_lag2 + ... + B n * E_lag n

与AR部分类似,我们在此处使用历史值进行操作,因此会产生所有滞后。但是,这是什么E?在大多数对MA模型的解释中,E通常被称为误差,它代表模型和目标变量之间的随机残差(如果您问我们在拟合模型之前是否有可能出现误差,请按住只是想了一秒钟)。

基本回归模型的完整方程为:

Y = B0 + B1 * X + E

通过时间序列建模ARIMA利用过去来预测未来

我们需要方程式中的E来显示回归输出B0 + B1 * X仅仅是Y的近似值。左侧的图显示了我的意思。黑点是我们要预测的,蓝线是我们的预测。尽管我们已经成功地捕获了总体趋势,但总会有一些无法捕获的特质差异。E项解释了这个未捕获的部分,换句话说,E表示我们的模型提供的准确答案和近似正确答案之间的差。

因此,如果您一直在仔细阅读,您可能会问:"在出现模型错误(Es)之前我们不需要先建立模型吗?" 你说的没错。E是我们所谓的不可观察参数。与Y(我们的目标变量)或外生X变量的滞后值不同,E是不可直接观察到的。附带说明,这也意味着我们无法使用OLS拟合ARIMA模型(因为我们有不可观测的参数)。相反,我们需要像这样的迭代估计方法,该方法可以同时估计beta参数和残差(以及残差项上的beta)。

因此,MA模型使用模型的过去错误来预测Y(与AR模型类似,我们告诉它要考虑多少过去的错误)。

让我们花点时间考虑一下为什么行得通。请考虑以下简化的MA(1)模型:

Y = u + B1 * E_lag1 其中u = Y的平均值E = Y-预测的

第一项,u,意味着我们的模型将其预测集中在Y的平均值附近(这就像在说什么都不知道,我会猜测平均值)。第二项B1 * E_lag1是错误的来源。我们假设现在估计B1为0.2。误差(E)定义为Y的实际值减去模型的预测值。

这意味着,如果最近的误差(E_lag1)为正(意味着实际误差大于我们的预测),我们将把预测上移误差量的1/5。这具有使模型的错误程度降低的效果(因为第二项,B1 * E_lag1将模型的预测略微推向正确的答案)。

因此,如果模型知道自己的错误,那么为什么它不会一直过拟合(换句话说,为什么我们不通过不公平地给出一些答案来偏向我们的模型)?除非过度拟合,否则MA模型不会固有地产生偏差,因为模型误差是独立的并且近似正态分布(误差是随机变量)。并且由于它们是随机变量,因此误差(E_lag1)可以取大不相同的值,具体取决于观察到它们的时间步长。误差中固有的噪声意味着仅需一个beta(B1)就能找到一个完美地调整每个误差的B1,从而使它们的产品完美地塞住实际Ys和预测Ys之间的每个孔,这几乎是不可能的。 换一种说法,MA(1)模型只能使用其对错误的了解来非常正确地将自己推向正确的方向。

当然,与任何其他模型一样,我们可以通过允许更多功能来过拟合MA模型-在这种情况下,它将出现越来越多的滞后错误(这意味着要安装更多的beta)。但是,这种过拟合模型的性能将超出样本。

ARIMA实际GDP预测

让我们通过构建一个ARIMA模型来预测实际GDP来将它们放在一起。我们将使用ARIMA的statsmodel实现。我从FRED(圣路易斯联邦储备银行的数据存储库)中提取了实际GDP数据。

statsmodel中的ARIMA函数至少需要两个参数:

  1. 数据-在这种情况下,我们为它提供了一系列原始的真实GDP实际值(由于ARIMA算法会为我们完成此操作,因此我们无需事先进行差分)。
  2. 第二个参数order告诉ARIMA函数,以下顺序应考虑每种模型类型的多少个组成部分-(AR滞后,差异之间的时间步长,MA滞后)。

让我们检查一下AR(4)模型的外观(没有MA)。我们采取1步的差异来使我们的数据稳定:

从statsmodels.tsa.arima_model导入ARIMA mod = ARIMA(master_df ['GDP'],order =(4,1,0))mod.fit()预测= mod.fit()。predict()

我们的预测如下图所示。如果仔细看,橙色线(我们的预测)落后于蓝色线(实际)。这不好。这意味着我们的预测总是落后于现实。因此,如果遵循此模型,我们总是会落后几步。但这是AR模型所期望的,AR模型试图通过推断最近的过去来预测未来(如果很简单的话)。

通过时间序列建模ARIMA利用过去来预测未来

AR(4)模型

还需要注意的是,在本演示中,我并没有拆分火车和测试仪。我正在使用整个数据集来拟合我的参数(而不是扩展窗口)。在实践中,我们希望对模型的样本外预测能力进行更强大的测试。因此,我们希望使用时间点数据(而不是修订的GDP数据)和扩展的窗口回归,以便在每个时间步长,我们仅使用历史上该点可用的数据来估计参数。

现在,将2个MA组件添加到模型中:

mod = ARIMA(master_df ['GDP'],order =(4,1,2))mod.fit()预测= mod.fit()。predict()

通过赋予模型考虑误差的大小和方向的能力,我们赋予了模型进行一定程度的修正的能力。这是以较长的模型估计过程为代价的-与OLS相比,MLE需要花费一些时间来收敛,而OLS的速度非常快。让我们看看我们的新预测如何:

通过时间序列建模ARIMA利用过去来预测未来

ARIMA有4个AR滞后和2个MA滞后

没有更好的。但是,我们不应期望仅通过添加一些MA组件就能获得巨大的改进。AR和MA成分均来自目标变量的过去值-因此它们都试图通过推断过去来预测未来。您可能希望这在平静期间可以正常工作,但是在尝试预测转折点时却失败了。

结论

因此,在所有这些之后,我们最终得到了一个乏善可陈的模型。但是不要绝望。ARIMA模型并不意味着是理想的预测工具。而是第一步。从我们的目标变量的过去值得出的特征应作为补充,而不是替代外生变量。因此,实际上,我们的GDP模型不仅包括AR和MA组成部分,还包括与GDP紧密相关的外生组成部分,例如通货膨胀,股票收益,利率等。

此外,拟合的beta本身通常也很有趣。例如,如果我们正在构建真实GDP的模拟,则需要测量GDP的自相关(自相关是指GDP的当前变化与其过去值之间的相关性)。因为如果存在自相关,那么我们绝对不希望建立一个GDP模型,在该模型中,我们模拟GDP的每季度每季度变化与其他所有方面无关。那是错误的,我们的模型将产生与现实脱节的结果。因此,分析ARIMA模型的beta有助于我们更好地了解目标目标变量的统计特性。

推荐阅读
夏普打造世界第一款全面屏到沦落为洋垃圾,各大厂商仍在突破前进 2020-07-17 17:12
iPhone 11 Pro Max iFixit拆解,不具备反向无线充电、相机额外记忆体 2019-09-23 17:48
三菱PLC MELSEC网络结构与特殊功能大全有哪些? 2020-03-04 15:55
电脑电路板工艺坑有多深!西毒欧阳锋果然毒,显卡用一个月就坏 2020-03-19 11:49
常用LED 发光二极管压降有哪些,具体压降参考值汇总 2019-09-17 11:34