时间序列预测的Box-Jenkins方法入门指南

自回归积分滑动平均模型,简称ARIMA,是时间序列预测和分析的标准统计模型。

随着其发展,Box和Jenkins的作者还提出了一个用于识别、估计和检验特定时间序列数据集的模型的过程。这个过程现在被称为Box-Jenkins方法。

在本文中,您将了解Box-Jenkins方法以及将其用于时间序列预测问题的技巧。

具体来说,您将学习

  • 关于ARIMA过程以及Box-Jenkins方法的3个步骤。
  • 选择ARIMA模型的q、d和p配置的最佳实践启发式方法。
  • 通过查找过拟合和残差误差作为诊断过程来评估模型。

立即开始您的项目,阅读我的新书《Python时间序列预测》,其中包括分步教程和所有示例的Python源代码文件。

让我们开始吧。

A Gentle Introduction to the Box-Jenkins Method for Time Series Forecasting

时间序列预测的Box-Jenkins方法入门指南
照片由 Erich Ferdinand 拍摄,保留部分权利。

自回归积分滑动平均模型

ARIMA模型是一类用于分析和预测时间序列数据的统计模型。

ARIMA是**A**uto**R**egressive **I**ntegrated **M**oving **A**verage(自回归积分滑动平均)的首字母缩写。它是更简单的自回归滑动平均模型的泛化,并增加了积分的概念。

这个缩写是描述性的,抓住了模型本身的特点。简而言之,它们是:

  • AR自回归。一种模型,它使用观察值与若干滞后观察值之间的依赖关系。
  • I积分。通过对原始观察值进行差分(即用前一个时间步的观察值减去当前时间步的观察值)来使时间序列平稳。
  • MA滑动平均。一种模型,它使用观察值与应用于滞后观察值的滑动平均模型中的残差误差之间的依赖关系。

这些组成部分中的每一个都在模型中作为参数明确指定。

使用标准表示法*ARIMA(p,d,q)*,其中参数被整数值替换,以快速指示正在使用的特定ARIMA模型。

ARIMA模型的参数定义如下:

  • p:模型中包含的滞后观察值的数量,也称为滞后阶数。
  • d:对原始观察值进行差分的次数,也称为差分阶数。
  • q:滑动平均窗口的大小,也称为滑动平均阶数。

停止以**慢速**学习时间序列预测!

参加我的免费7天电子邮件课程,了解如何入门(附带示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

Box-Jenkins方法

Box-Jenkins方法由George Box和Gwilym Jenkins在其开创性的1970年教科书《时间序列分析:预测与控制》中提出。

该方法的前提是,如果时间序列是平稳的,则生成该序列的过程可以用ARMA模型来近似;如果是非平稳的,则用ARIMA模型来近似。

该教科书的2016年第5版(第二部分,第177页)将该过程称为随机模型构建,并指出它是一个迭代过程,包含以下3个步骤:

  1. 识别。使用数据和所有相关信息来帮助选择最能概括数据的模型子类。
  2. 估计。使用数据训练模型的参数(即系数)。
  3. 诊断检查。在可用数据的背景下评估拟合的模型,并检查模型可以改进的方面。

这是一个迭代过程,因此,在诊断过程中获得新信息后,您可以返回第一步,将其纳入新的模型类别。

让我们更详细地看看这些步骤。

1. 识别

识别步骤进一步细分为:

  1. 评估时间序列是否平稳,如果不平稳,则需要多少差分才能使其平稳。
  2. 确定数据的ARMA模型的参数。

1.1 差分

以下是一些识别期间的技巧。

  • 单位根检验。对时间序列使用单位根统计检验,以确定它是否平稳。每次差分后重复进行。
  • 避免过度差分。对时间序列进行过多差分会引入额外的序列相关性和额外的复杂性。

1.2 配置AR和MA

可以使用两个诊断图来帮助选择ARMA或ARIMA的pq参数。它们是:

  • 自相关函数 (ACF)。该图总结了观察值与滞后值的相关性。x轴显示滞后,y轴显示-1到1之间的相关系数,分别表示负相关和正相关。
  • 偏自相关函数 (PACF)。该图总结了观察值与滞后值之间的相关性,但排除了先前滞后观察值的影响。

这两个图都显示为条形图,其中水平线表示95%和99%的置信区间。因此,跨越这些置信区间的条形更具显著性,值得注意。

在这些图上您可能会观察到的一些有用模式是:

  • 如果ACF在某个滞后后逐渐减小,而PACF在某个滞后后突然截止,则模型为AR。此滞后值作为p的值。
  • 如果PACF在某个滞后后逐渐减小,而ACF在某个滞后后突然截止,则模型为MA。此滞后值作为q的值。
  • 如果ACF和PACF都逐渐减小,则模型是AR和MA的混合。

2. 估计

估计涉及使用数值方法来最小化损失或误差项。

我们不会详细介绍模型参数的估计,因为这些细节由所选的库或工具处理。

我建议参考教科书,以更深入地理解ARMA和ARIMA模型需要解决的优化问题以及用于解决它的优化方法,例如有限内存BFGS

3. 诊断检查

诊断检查的目的是寻找模型与数据不匹配的证据。

以下是两个有用的诊断检查领域:

  1. 过拟合
  2. 残差误差。

3.1 过拟合

第一个检查是检查模型是否过拟合数据。通常,这意味着模型比必需的更复杂,并且捕获了训练数据中的随机噪声。

这对于时间序列预测是一个问题,因为它会负面影响模型泛化能力,导致在样本外数据上预测性能不佳。

必须仔细关注样本内和样本外性能,这需要仔细设计一个强大的测试框架来评估模型。

3.2 残差误差

预测残差为诊断提供了绝佳的机会。

检查误差的分布有助于揭示模型的偏差。理想模型的误差应类似于白噪声,即均值为零、方差对称的高斯分布。

为此,您可以使用密度图、直方图和Q-Q图来比较误差分布与预期分布。非高斯分布可能表明数据预处理的机会。分布的偏斜或非零均值可能表明预测存在偏差,可能需要纠正。

此外,理想模型在预测残差的时间序列中不应留下任何时间结构。可以通过创建残差误差时间序列的ACF和PACF图来检查这些。

残差误差中存在序列相关性表明有机会在模型中使用这些信息。

进一步阅读

该主题的权威资源是《时间序列分析:预测与控制》。我推荐2016年第5版,特别是第二部分和第6-10章。

以下是一些额外的阅读材料,如果您想深入了解,可以帮助您更全面地理解:

总结

在本文中,您了解了用于时间序列分析和预测的Box-Jenkins方法。

具体来说,你学到了:

  • 关于ARIMA模型和通用的Box-Jenkins方法的3个步骤。
  • 如何使用ACF和PACF图来选择ARIMA模型的pq参数。
  • 如何使用过拟合和残差误差来诊断拟合的ARIMA模型。

您对Box-Jenkins方法或本文有任何疑问吗?
在下面的评论中提出你的问题,我会尽力回答。

想用Python开发时间序列预测吗?

Introduction to Time Series Forecasting With Python

几分钟内开发您自己的预测

...只需几行python代码

在我的新电子书中探索如何实现
Python 时间序列预测入门

它涵盖了**自学教程**和**端到端项目**,主题包括:*数据加载、可视化、建模、算法调优*等等。

最终将时间序列预测带入
您自己的项目

跳过学术理论。只看结果。

查看内容

42条关于《时间序列预测的Box-Jenkins方法入门指南》的回复

  1. Cipher 2017年1月20日凌晨12:56 #

    感谢您的分享。
    这篇文章没有代码示例吗?

    • Jason Brownlee 2017年1月20日上午10:22 #

      请看这篇关于创建ARIMA模型的文章。
      https://machinelearning.org.cn/arima-for-time-series-forecasting-with-python/

    • Noha Nijim 2019年7月16日早上8:10 #

      非常感谢,这非常有帮助。我正在研究一些商品的商品价格波动性测量,并对使用单位根检验和BJ方法感到困惑,您的解释使我茅塞顿开。再次感谢:)

      • Jason Brownlee 2019年7月16日早上8:26 #

        谢谢,很高兴听到这个。

        • Martins 2019年9月13日晚上11:34 #

          你好Jason,

          感谢您的所有见解。

          我想知道您是否能帮忙解释如何构建一张图表来描绘Box-Jenkings方法论?

          此致

          • Jason Brownlee 2019年9月14日早上6:18 #

            也许您可以将这些步骤转换成流程图?

  2. MEENAKSHI 2017年4月21日中午12:39 #

    非常感谢分享。

  3. Eric F. 2017年5月1日早上10:00 #

    “如果ACF在某个滞后后逐渐减小,而PACF在某个滞后后突然截止,则模型为AR。此滞后值作为p的值……”

    如果您能提供视觉图表(如何解读)来解释模型是AR、MA还是两者的组合,那将非常有帮助。

    谢谢。

  4. Oumayma BOUNOUH 2017年5月23日晚上9:35 #

    请问,Box-Jenkins方法可以被视为一种机器学习方法吗?

    • Jason Brownlee 2017年5月24日早上4:55 #

      或许吧,我会将其视为一种统计方法。

      • J. Daniel 2019年5月12日早上3:03 #

        机器学习不就是“新一代统计学”的代名词吗?

        • Jason Brownlee 2019年5月12日早上6:46 #

          并非如此,这是一种哲学上的区别。

          例如,自动化/预测技能不惜一切代价(预测建模/机器学习)vs线性/理解数据(统计)。

          或者以结果为导向的项目(机器学习,使用任何有效的方法)vs以模型为导向的项目(统计学,使模型拟合数据)。

  5. Jay 2017年6月30日凌晨12:49 #

    您能解释一下,在我绘制了ACF和PACF图之后,如何确定p和q值吗?这一点不太清楚,我已经看了您关于ACF和PACF的各种文章,但还是没有真正理解。

  6. emy 2018年2月8日晚上8:06 #

    我能问您一个将此模型用于现实生活和学术的实际例子吗???????

  7. emy 2018年2月8日晚上8:12 #

    我还想知道您是否会在YouTube上制作Minitab程序的视频。

  8. mesfin 2018年5月28日早上9:23 #

    请给我一个带答案的例子或问题。

  9. mawuli 2018年12月8日中午11:20 #

    在Box Jenkins方法中,应该遵循什么数据预处理方法?

    • Jason Brownlee 2018年12月9日早上5:32 #

      一个技能较差的模型,不如序列平稳的模型。

  10. saveen 2018年12月30日凌晨2:19 #


    我正在尝试获取ARIMA预测模型,但图表显示未来五年都是平坦的,数值很低。我不知道这是对还是错,因为数值变得恒定。我已经对数据应用了adf检验、acf和pacf检验,然后是ar和ma模型,最后是arima模型。如果您能在这方面帮助我,我将非常感激。
    致敬
    array([1.26085233e+210, 6.43337688e+230, 8.23752178e+233, 2.53216424e+234,
    3.02366846e+234, 3.10968980e+234, 3.12351712e+234, 3.12570970e+234,
    3.12605663e+234, 3.12611150e+234, 3.12612018e+234, 3.12612155e+234,
    3.12612177e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234,
    3.12612181e+234, 3.12612181e+234, 3.12612181e+234, 3.12612181e+234])

  11. Farrukh 2019年2月26日下午1:29 #

    这是一个很好的博客。我特别对第1.2节“配置AR和MA”感兴趣。

    在这些图上您可能会观察到的一些有用模式是:

    如果ACF在某个滞后后逐渐减小,而PACF在某个滞后后突然截止,则模型为AR。此滞后值作为p的值。
    如果PACF在某个滞后后逐渐减小,而ACF在某个滞后后突然截止,则模型为MA。此滞后值作为q的值。
    如果ACF和PACF都逐渐减小,则模型是AR和MA的混合。

    也可能存在第四种情况,即ACF和PACF都突然截止,我们该如何解释?在这种情况下,我们的策略应该是什么?

    • Jason Brownlee 2019年2月26日下午2:22 #

      谢谢。

      也许这种情况需要仔细考虑。为您设计一个人为的数据集来演示每种情况可能是一个有趣的练习。

  12. Maysaa 2019年5月7日晚上8:09 #

    谢谢您的信息,但您是否有关于该方法复杂性的信息?

    • Jason Brownlee 2019年5月8日早上6:43 #

      计算复杂度?不,抱歉。

      • J. Daniel 2019年5月12日早上3:08 #

        由于这是匿名的,我可以头脑风暴一下。也许预测n个时间步的复杂度是O(n)。对于搜索p、q、d参数空间,可能是O(p*q*d)。但我仍在尝试弄清楚这种方法是如何工作的。它比拟合曲线要复杂得多。

        • Jason Brownlee 2019年5月12日早上6:48 #

          并非如此。这是对预测问题进行框架化的一种真正系统化的方法。

  13. Mnl 2019年8月6日晚上11:58 #

    感谢您的信息。但在通过最小化AIC选择的ARIMA模型中,我发现残差存在自相关(使用Ljung box检验)。如果我增加参数,我就会过拟合,在这种情况下,我应该忽略残差相关性吗?

    • Jason Brownlee 2019年8月7日早上7:58 #

      也许您可以更改模型以捕获更多问题结构?

  14. Maria Battle 2020年4月18日早上6:08 #

    太棒了!谢谢。

  15. tokyo 2020年5月20日下午4:53 #

    Jason先生,太棒了!谢谢您。

  16. Long 2020年8月8日中午11:19 #

    我是一名数据科学家,正在学习时间序列,只想说:您的文章非常简单明了。它甚至有开头的回顾来帮助我回忆。

    如果我能说点什么,我只希望有更多的图片。因为像ACF和PACF如何用于确定AR和MA的阶数这样的概念,在我的脑海中很难可视化。

    非常喜欢。非常感谢。

  17. Suad Osman 2020年11月30日下午2:17 #

    在Box-Jenkins方法中,应该遵循什么数据预处理方法?

    • Jason Brownlee 2020年12月1日早上6:15 #

      抱歉,我不明白您的问题,请详细说明或重新表述。

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。