6.3 ACF / PACF:统计量阅读


6.3 ACF / PACF:统计量阅读

本节摘要:ACF 和 PACF 是 ARIMA 阶数选择的"罗塞塔石碑"。本节教你怎么从 ACF / PACF 图的"截尾"或"拖尾"模式,反推 p、d、q 的合适值,并演示一个完整 ARIMA(p,d,q) 拟合流程。

先看目标

阅读完本节,你应当能够:

  1. 写出 ACF 与 PACF 的数学定义与差异。
  2. 识别 ACF 截尾 vs 拖尾、PACF 截尾 vs 拖尾四种模式。
  3. pmdarima.auto_arima 或手工根据 ACF / PACF 选定 p、q。

本节把 4.2 讲的 ACF 进一步延伸到 PACF,给出 ARIMA 阶数选择的统计依据。读完后你能从 ACF / PACF 图的"截尾 / 拖尾"反推 p、d、q 的合适值。

一、ACF vs PACF:一个简明对比

ACF(自相关函数):度量 y(t)y(t+k) 的总相关。包含了中间 lag 的"传递影响"——比如 lag=3 的 ACF 包含 lag=1、lag=2 的间接影响。

PACF(偏自相关函数):在排除中间 lag 的影响后,y(t)y(t+k) 的"纯"相关。衡量"如果中间 lag 都被解释掉,y(t-k) 对 y(t) 还有多少独立解释力"

直观上:

  • ACF 告诉你"过去所有值对现在的影响链条有多长"。
  • PACF 告诉你"真正独立有用的过去值有几个"。

二、四种典型模式

ACF 模式 PACF 模式 建议模型
拖尾(指数或正弦衰减) 截尾(lag p 之后为 0) AR(p)
截尾(lag q 之后为 0) 拖尾(指数或正弦衰减) MA(q)
拖尾 拖尾 ARMA(p, q)
全部衰减很慢 全部衰减很慢 序列不平稳,需要差分

"截尾"指 lag 大于某值后,系数突然落到置信区间内;"拖尾"指系数连续衰减而不突然归零。

三、实战判读:合成 AR(2) 序列

import numpy as np import pandas as pd from statsmodels.tsa.arima.model import ARIMA from statsmodels.graphics.tsaplots import plot_acf, plot_pacf import matplotlib.pyplot as plt rng = np.random.default_rng(0) # AR(2): y(t) = 0.6 y(t-1) - 0.3 y(t-2) + ε n = 500 y = np.zeros(n) eps = rng.normal(0, 1, n) for t in range(2, n): y[t] = 0.6 * y[t-1] - 0.3 * y[t-2] + eps[t] s = pd.Series(y) fig, axes = plt.subplots(1, 2, figsize=(10, 3.5)) plot_acf(s, lags=20, ax=axes[0]) plot_pacf(s, lags=20, ax=axes[1], method="ywm") plt.tight_layout()

预期结果:

  • ACF:拖尾(指数衰减 + 正弦振荡),不会突然归零。
  • PACF:在 lag=2 之后落到置信区间(截尾于 lag=2)。

按表格判读:AR(2) 是合适模型。

四、季节 lag 的判读

如果序列有 m=12 的季节性:

  • ACF 在 lag=12、24、36…会有显著峰。
  • PACF 在 lag=12、24、36…通常也是峰或接近显著。

这告诉模型需要"季节项":SARIMA(p,d,q)(P,D,Q,12) 中的 P、Q。

五、auto_arima:工程上更稳的替代

手工看 ACF / PACF 在实战中容易判错(特别是 lag 边界)。pmdarima.auto_arima 通过网格搜索自动选 p、d、q:

import pmdarima as pm auto_model = pm.auto_arima( s.values, start_p=0, start_q=0, max_p=5, max_q=5, seasonal=True, m=12, # 月度季节性 d=None, D=None, # 自动选差分阶数 trace=True, # 打印搜索过程 error_action="ignore", suppress_warnings=True, stepwise=True # 启发式搜索,比全网格快 ) print(auto_model.summary())

auto_arima 输出最优 (p,d,q)(P,D,Q,m) 组合。业务上这是一个"够用"的起点,但仍然建议人工 review——auto_arima 选出的模型可能在残差诊断上不如手工选的。

六、几个常见的判读错误

  1. ACF 衰减非常慢就当不平稳:可能只是序列带强趋势,先差分再判读。
  2. PACF 在 lag=1 显著就当 AR(1):还要看 lag=2、3 是不是接近显著,决定是 AR(1) 还是 AR(2)。
  3. 季节 lag 的峰不显著就当无季节性:可能是季节性弱或者采样频率不对。检查业务上是否真有季节性。
  4. auto_arima 给的模型当真理:它的目标函数是 AIC,不是预测精度。要在测试集上验证。

七、完整流程

八、一个 SARIMA 选型案例

某电商月度销量,48 个月数据:

  • 强线性趋势 → d=1。
  • 12 个月季节性 → m=12, D=1。
  • ACF 在 lag=1、2 显著后衰减 → q 选 1 或 2。
  • PACF 在 lag=1 显著后衰减 → p 选 1。
  • 季节 lag(12、24)处 ACF 显著 → Q 选 1。
  • 季节 lag 处 PACF 接近显著 → P 选 0 或 1。

候选模型:SARIMA(1,1,1)(1,1,1,12) 或 SARIMA(1,1,2)(0,1,1,12)。两个都跑,对比 AIC 和测试集 MAE 选优。

本节要点回顾

  • ACF vs PACF:总相关 vs 排除中间影响后的纯相关。
  • 四种模式:ACF 截尾 + PACF 拖尾 → MA;ACF 拖尾 + PACF 截尾 → AR;都拖尾 → ARMA。
  • 季节项:ACF/PACF 在 lag=m、2m、3m 处的峰指示季节项 P、Q。
  • auto_arima:工程上更稳的起点,但仍然需要人工 review + 测试集验证。
  • 常见错误:差分不够就判读、PACF 显著就当 AR(1)、auto_arima 当真理。
  • 下一节线索:6.4 介绍指数平滑族——SES、Holt、Holt-Winters,和 ARIMA 一起构成"经典时序模型"双雄。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U