📈 自相关与偏自相关
ACF · PACF · 拖尾 · 截尾
🔍 核心概念 —— 自相关函数 (ACF) 描述时间序列与其滞后版本之间的线性相关性;
偏自相关函数 (PACF) 则是在剔除中间滞后影响后的“净”相关。通过 ACF/PACF 图的拖尾(逐渐衰减)与截尾(突然截断)特征,
可判断 AR、MA、ARMA 模型阶数,是经典 Box-Jenkins 方法论的基石。
| 模型 | ACF (自相关) | PACF (偏自相关) | 典型图示 |
|---|---|---|---|
| AR(p) | 拖尾 (指数/正弦衰减) | 截尾 (p阶后为0) | 📉 拖尾 · 截尾 |
| MA(q) | 截尾 (q阶后为0) | 拖尾 (逐渐衰减) | 截尾 · 拖尾 |
| ARMA(p,q) | 拖尾 (缓慢衰减) | 拖尾 (缓慢衰减) | 拖尾 · 拖尾 |
📊 ACF 图 (自相关)
ACF 拖尾 (逐渐衰减至零)
📊 PACF 图 (偏自相关)
PACF 截尾 (2阶后骤减)
🧠 拖尾/截尾识别架构 · 模型定阶逻辑
- 📌 拖尾 (Tailing off):自相关或偏自相关缓慢衰减,通常呈指数或正弦波动,不会突然消失。
- 📌 截尾 (Cut off):在某个滞后阶数之后,相关系数突然变得不显著(落入置信区间内)。
- 📌 AR(p) 模型:PACF 在 p 阶后截尾,ACF 拖尾 → 阶数 p 由 PACF 显著滞后数决定。
- 📌 MA(q) 模型:ACF 在 q 阶后截尾,PACF 拖尾 → 阶数 q 由 ACF 显著滞后数决定。
- 📌 ARMA(p,q) 模型:ACF 和 PACF 均呈现拖尾,需借助信息准则 (AIC/BIC) 辅助定阶。
🐍 Python 示例 · 绘制 ACF 与 PACF
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# 模拟 AR(2) 序列
np.random.seed(42)
n = 200
ar_params = np.array([0.6, -0.3])
x = np.zeros(n)
for t in range(2, n):
x[t] = ar_params[0]*x[t-1] + ar_params[1]*x[t-2] + np.random.normal(0, 1)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))
plot_acf(x, lags=20, ax=ax1, title="ACF (拖尾)")
plot_pacf(x, lags=20, ax=ax2, title="PACF (截尾, p=2)")
plt.tight_layout()
plt.show()
💡 经验法则: 如果 ACF 拖尾且 PACF 在滞后 p 后截尾 → AR(p);如果 ACF 在滞后 q 后截尾且 PACF 拖尾 → MA(q);两者都拖尾 → ARMA。