自回归模型——直观解释

自回归模型(AR 模型)是一类可用于分析时间序列数据的统计模型,其中变量的当前值是根据其过去值进行预测的。这些模型通常用于多个领域,包括金融、工程和经济学。在本文中,我们将更详细地探讨自回归模型,讨论它们的特征、优点和局限性。此外,我们将提供易于理解的 AR 模型实现。


什么是自回归模型?

自回归模型是一种时间序列模型,它将因变量表示为其过去值的函数。换句话说,AR 模型是一种线性回归模型,其中因变量根据其过去的值进行回归。AR 模型的阶数决定了使用多少过去的值来预测当前值。例如,一阶自回归模型(表示为 AR(1))仅使用先前的值来预测当前值,而二阶自回归模型(表示为 AR(2))则使用两个先前的值。

自回归模型的优点

与其他时间序列模型相比,AR 模型有几个优点。

  1. 它们相对容易理解和实施。
  2. 它们可以捕获数据中的短期和长期模式,从而有助于预测未来值。
  3. 它们在计算复杂性方面非常高效,这使得它们适合分析大型数据集。

自回归的局限性

尽管 AR 模型有很多优点,但它也有一些需要考虑的局限性。

  1. 他们假设时间序列数据是平稳的,这意味着数据的均值和方差随着时间的推移保持不变。如果数据不稳定,则模型可能不准确。
  2. 它们没有考虑外部因素对因变量的影响。如果数据受到外部因素的影响,模型可能无法捕捉到这种影响。
  3. 最后,它们对数据中的异常值很敏感,这可能会影响模型的准确性。

ARIMA模型是对AR模型的改进。请参阅链接了解更多信息。


在 Python 中实现自回归模型

在本节中,我们将提供一个易于理解的自回归模型的实现。我们将使用Python编程语言和Statsmodels库,它提供了广泛的统计分析工具。

首先,我们需要导入必要的库:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.ar_model import AutoReg

加载时间序列数据

接下来,我们需要加载要分析的时间序列数据。在此示例中,我们将使用航空公司乘客数据集,其中包含 1949 年 1 月至 1960 年 12 月期间每月的航空公司乘客数量。

url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv'
df = pd.read_csv(url, header=0, index_col=0, parse_dates=True)

绘制和可视化数据

然后我们可以绘制数据以可视化其随时间变化的模式。

plt.plot(df)
plt.show()
航空公司乘客模式

该图显示航空公司乘客数量随着时间的推移而增加,但数据中也存在季节性模式。

创建 AR 模型

然后,我们可以通过指定模型的顺序并将其拟合到数据来创建 AR 模型。

model = AutoReg(df, lags=20)
model_fit = model.fit()

在此示例中,我们指定了一个一阶自回归模型 (lags=20),它使用 20 个先前值来预测当前值。然后我们可以打印模型的摘要以查看其系数和其他统计度量。

使用更多的滞后可以捕获数据中的长期模式,但也会使模型更加复杂且计算密集。选择适当的滞后数来平衡捕获长期模式和保持模型简单之间的权衡非常重要。

滞后数量的选择还可以取决于所分析的数据的特征(通过使用自相关)和分析的目标。

print(model_fit.summary())
系数,标准差 误差、t 和 p 值
根和频率

代码的输出提供自回归模型的摘要,包括系数、标准误差、t 值和p 值。这里我只展示了前 10 名乘客。我们可以使用这些值来评估模型的性能并对未来值进行预测。

要使用自回归模型进行预测,我们可以使用预测方法,该方法将要预测的周期数作为输入。

forecast = model_fit.forecast(steps=24)

在此示例中,我们指定预测未来 24 个月。然后,我们可以将预测值与原始数据一起绘制,以可视化模型对数据的拟合程度以及预测未来值的程度。

plt.plot(df, label='Actual')
plt.plot(forecast, label='Predicted')
plt.legend()
plt.show()
预计产量

上述代码的输出显示了原始数据和未来 24 个月的预测值的图。预测值遵循数据的季节性模式,模型捕获数据的总体趋势。


结论

AR模型是一类可用于分析时间序列数据的统计模型。这些模型相对容易理解和实施,并且可以捕获数据中的短期和长期模式。它们有一些局限性,包括对平稳性的假设以及对异常值的敏感性。

在本文中,我们使用 Python 编程语言和 Statsmodels 库提供了一个易于理解的 AR 模型实现。我们以航空公司乘客数据集为例,展示了如何创建 AR 模型、进行预测并评估模型的性能。