数据分析之ARIMA模型
ARIMA 全称是 差分整合移动平均自回归模型(Autoregressive Integrated Moving Average Model)。我们可以将其拆解为三个部分:AR(自回归)、I(差分项)和 MA(移动平均)。
1. 核心前提:平稳性 (Stationarity)
在学习 ARIMA 之前,必须理解平稳性。这是所有时间序列建模的基石。
一个平稳的时间序列具有以下特征:
- 均值是常数(不随时间漂移)。
- 方差是常数(不随时间剧烈波动)。
- 自协和只与时间间隔(Lag)有关,而与所处的时间点无关。
通俗理解: 序列看起来像是在一个固定的水平线上下随机波动,没有明显的趋势(上升或下降)或季节性。
2. 模型的三大组成部分
ARIMA 模型通常表示为 $ARIMA(p, d, q)$,其中三个参数分别对应以下部分:
2.1 AR (AutoRegressive) - 自回归部分:$p$
逻辑: 认为当前的观测值 $Y_t$ 是过去若干个观测值的线性组合。
- 公式: $Yt = c + \phi_1 Y{t-1} + \phi2 Y{t-2} + \dots + \phip Y{t-p} + \epsilon_t$
- 其中 $\epsilon_t$ 是白噪声(均值为0,方差固定的随机干扰)。
- 含义: 如果 $p=1$,说明今天的值很大程度上取决于昨天的值。
2.2 I (Integrated) - 差分部分:$d$
逻辑: 大多数现实中的数据(如股票、气温)是不平稳的。差分是将非平稳数据转为平稳数据的手段。
- 一阶差分: $\Delta Yt = Y_t - Y{t-1}$
- 含义: 如果 $d=1$,说明原始数据不平稳,但相邻两天的差值是平稳的。
2.3 MA (Moving Average) - 移动平均部分:$q$
逻辑: 认为当前的观测值是过去若干个预测误差的线性组合。它捕捉了系统受到的“冲击”效应。
- 公式: $Yt = \mu + \epsilon_t + \theta_1 \epsilon{t-1} + \theta2 \epsilon{t-2} + \dots + \thetaq \epsilon{t-q}$
- 含义: 如果昨天发生了一个突发新闻(误差 $\epsilon$ 很大),MA 模型会计算这个冲击对今天及之后几天的持续影响。
3. 如何确定参数 $p, d, q$?
这是 ARIMA 建模中最关键的一步,通常使用 Box-Jenkins 方法。
- 确定 $d$: 使用 ADF 单位根检验。如果原始数据不平稳,进行差分,直到数据平稳为止。
- 确定 $p$ 和 $q$: 观察 ACF(自相关系数) 和 PACF(偏自相关系数) 图像。
| 图像特征 | AR(p) 模型 | MA(q) 模型 | ARMA(p, q) 模型 |
|---|---|---|---|
| ACF (自相关) | 拖尾(几何衰减) | $q$ 阶截尾($q$阶后变为0) | 拖尾 |
| PACF (偏自相关) | $p$ 阶截尾($p$阶后变为0) | 拖尾 | 拖尾 |
什么是“截尾”? 图像在某个点之后突然落在置信区间(虚线)以内,趋近于 0。
4. 完整的建模流程
如果你现在要处理一份数据,你应该遵循以下步骤:
- 可视化: 画出时间序列图,观察是否有趋势或季节性。
- 平稳性处理:
- 如果有趋势 $\rightarrow$ 差分 ($d$)。
- 如果方差不稳定 $\rightarrow$ 取对数 ($log$)。
- 模型识别: 画出 ACF 和 PACF 图,初步预估 $p$ 和 $q$。
- 参数优化: 比较不同 $(p, d, q)$ 组合下的 AIC 或 BIC 指标(这两个值越小,模型拟合效果越好且越简洁)。
- 模型检验(残差分析): 检查模型的残差是否为白噪声(即残差中是否已无有用信息)。如果残差还有规律,说明模型没建好。
- 预测: 使用模型进行外推预测。
5. 进阶提示
可以进一步研究以下概念来深化理解:
- 白噪声检验 (Ljung-Box Test):用于验证残差是否随机。
- 最大似然估计 (MLE):ARIMA 参数是如何通过数学计算出来的。
- SARIMA:如果你的数据有季节性(比如每 12 个月循环一次),需要引入季节性参数。
6.演示
R 拥有全球最顶尖的时间序列分析生态系统(如 forecast 和 fable 包)。
下面将使用 R 内置的 Nile(尼罗河年度流量) 数据集,演示一个标准的 ARIMA 建模全流程。
6.1 环境准备与数据观察
首先,我们需要加载核心工具包 forecast。
R
1 | # 安装并加载必要的包 |
观察: 图像显示流量随时间有下降趋势且波动较大,初步判断它可能不是平稳的。
6.2 平稳性检验与差分 (Step 1: 确定 $d$)
我们需要通过 ADF 检验 (Augmented Dickey-Fuller) 来严谨地判断平稳性。
R
1 | # 1. ADF 检验 |
- 如果原始数据 $p > 0.05$,则不平稳,需要差分。
- 一阶差分后平稳,则参数 $d = 1$。
6.3 模型识别 (Step 2: 确定 $p$ 和 $q$)
通过观察 ACF 和 PACF 图来寻找 $p$ 和 $q$ 的蛛丝马迹。
R
1 | # 画出自相关和偏自相关图 |
- ACF 截尾 $\rightarrow$ 考虑 MA 模型。
- PACF 截尾 $\rightarrow$ 考虑 AR 模型。
- 如果都表现为拖尾(缓慢衰减),则考虑 ARIMA 混合模型。
6.4 模型拟合:手动 vs 自动
在 R 中,我们可以手动指定参数,也可以让算法自动寻找最优组合(基于 AIC/BIC 最小化原则)。
方法 A:自动寻找最优模型(推荐)
R
1 | # auto.arima 会自动测试多组 p,d,q 组合 |
方法 B:手动指定(假设我们确定为 ARIMA(1, 1, 1))
R
1 | fit_manual <- Arima(data, order=c(1, 1, 1)) |
6.5 模型诊断 (Step 3: 检查残差)
一个好的模型,其残差应该是白噪声(即没有任何规律的随机波动)。
R
1 | # 残差分析 |
合格标准:
- Ljung-Box 检验 的 $p$ 值大于 0.05(说明残差之间没有自相关性)。
- 残差图看起来像随机噪声。
- 残差的直方图符合正态分布。
6.6 预测未来 (Step 4)
模型通过检验后,就可以预测未来的流量了。
R
1 | # 预测未来 10 年 |


