ARIMA(自回归积分滑动平均)模型是用于预测时间序列数据的强大工具。它结合了三个核心组件:自回归(AR)、差分(I)和移动平均(MA)。这些组件使得模型能够捕捉趋势和季节性等模式,帮助我们根据历史数据预测未来的数值。它通过组合这三个关键组件来对数据进行建模:
1. 自回归(AR):
ARIMA 模型的自回归部分用参数 p 表示。它代表了当前观测值与其先前数值之间的依赖关系。从数学上讲,AR(p) 模型可以表示为:
> Yt=c+\phi1 Y{t-1}+\phi2 Y{t-2}+\ldots+\phip Y{t-p}+\epsilont
其中:
- Y_t 是当前观测值
- c 是常数项
- \phi1 到 \phi2 是自回归参数
- \epsilon_t 代表时间 t 的误差项
2. 差分(I):
ARIMA 的差分部分用参数 d 表示。它涉及通过对连续观测值进行差分,将非平稳时间序列转换为平稳序列。我们可以多次应用差分操作,直到数据达到平稳状态。差分的公式非常直观:
> Yt‘ = Yt – Y_{t-1}
其中:
- Y_t‘ 是时间 t 的差分序列
- Y_t 是时间 t 的原始序列
- Y_{t-1} 是上一个时间步的序列值
差分过程通常需要应用多次,直到实现平稳性。符号 I(d) 表示实现平稳性所需的差分阶数。
3. 移动平均(MA):
ARIMA 模型的移动平均部分用参数 q 表示。它表示当前观测值对先前预测误差的依赖程度。从数学上讲,MA(q) 模型可以表示为:
> Yt=c+\epsilont+\theta1 \epsilon{t-1}+\theta2 \epsilon{t-2}+\ldots+\thetaq \epsilon{t-q}
其中:
- Y_t 是当前观测值
- c 是常数项
- \epsilon_t 是时间 t 的误差
- \theta1 到 \thetaq 是移动平均参数
工作原理
- 识别平稳性: ARIMA 模型要求时间序列数据必须是平稳的。平稳性意味着时间序列的统计特性(如均值和方差)随时间保持恒定。
- 参数估计: 估计参数 p、d 和 q 涉及分析时间序列数据的自相关函数(ACF)和偏自相关函数(PACF)图。ACF 有助于确定 MA 阶数,而 PACF 则有助于确定 AR 阶数。
- 模型拟合: 一旦确定了参数,ARIMA 模型就会拟合到数据上。这涉及最小化误差,通常使用最大似然估计等方法,以获得自回归和移动平均项的最合适系数。
- 预测: 拟合模型后,我们可以通过随时间迭代来预测未来的数值。
ARIMA 中的模型参数
ARIMA 模型由三个主要参数定义:p、d 和 q。
- p(AR 阶数): 代表自回归项的数量,记为 p。它指的是直接影响当前值的过去观测值的数量。
- d(差分阶数): 代表使时间序列平稳所需的差分次数。它涉及计算连续观测值之间的差值。
- q(MA 阶数): 记为 q,它代表预测方程中滞后预测误差的数量。
为这些参数选择合适的值会显著影响模型的预测能力。然而,确定正确的值通常是一项具有挑战性的任务。
ARIMA 的实现
我们将在 Python 中实现 ARIMA 模型以进行时间序列预测。这包括检查平稳性、执行差分、分析 ACF/PACF 图以及使用网格搜索来确定用于预测的最佳 ARIMA 参数等步骤。
1. 安装必要的库
我们将导入时间序列分析所需的基本 Python 库。
- pandas、numpy和 matplotlib用于数据处理和绘图。
- statsmodels提供了 ARIMA 建模、ADF 检验(用于平稳性)和 ACF/PACF 绘图工具。
- warnings.filterwarnings(‘ignore‘) 用于在模型拟合和评估期间抑制警告,以保持输出整洁。
Python
“
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.stattools import adfuller
from statsmodels.grap