📑 查看全课大纲(第 6 / 20 节)

自相关系数与偏自相关系数

约 41 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

平稳 AR 模型的统计性质:协方差、自相关与偏自相关

小象实战讲义 · 时间序列分析

在上一讲中,我们学习了 AR 模型的平稳性条件及其均值与方差的性质。本讲将深入探讨平稳 AR 模型的核心统计性质——协方差函数、自相关系数与偏自相关系数。掌握这些性质不仅有助于从理论上理解 AR 模型的内在结构,更是我们后续进行模型识别与定阶的基石。学完本节,你将能够通过观察数据的自相关图与偏自相关图,初步判断其是否适合用 AR 模型拟合,并确定模型的阶数。

💡 核心导读

  • 协方差函数的递推性:平稳 AR(p) 模型的协方差函数满足一个线性递推关系,这决定了其自相关结构的拖尾特性。
  • 自相关系数的拖尾性:AR 模型的自相关系数随着滞后阶数 k 的增加,呈负指数速度衰减,但永不截断为零。这是 AR 模型在自相关图上的“指纹”。
  • 偏自相关系数的截尾性:AR(p) 模型的偏自相关系数在滞后 p 阶之后,理论上严格为零。这一关键性质是识别 AR 模型及其阶数 p 的核心依据。
  • 模型识别原理:通过对比样本自相关图(ACF)的拖尾性与样本偏自相关图(PACF)的截尾性,我们可以初步判断序列是否适合 AR 模型,并利用 PACF 的截尾点确定模型阶数 p。
  • Python 实战验证:使用 statsmodels 库生成 AR(2) 过程,计算其样本 PACF,并观察其在滞后 2 阶后的截尾现象,直观验证理论。

协方差函数与自相关系数

对于一个满足平稳性条件的中心化 AR(p) 模型: Xt=ϕ1Xt1+ϕ2Xt2++ϕpXtp+εt,εtWN(0,σ2)X_t = \phi_1 X_{t-1} + \phi_2 X_{t-2} + \dots + \phi_p X_{t-p} + \varepsilon_t, \quad \varepsilon_t \sim WN(0, \sigma^2) 其均值为零,即 E(Xt)=0E(X_t) = 0。其自协方差函数定义为 γk=Cov(Xt,Xtk)=E(XtXtk)\gamma_k = \text{Cov}(X_t, X_{t-k}) = E(X_t X_{t-k})

协方差函数的递推公式

在模型等式两边同乘 XtkX_{t-k} 并求期望,利用白噪声 εt\varepsilon_t 与过去观测值 Xtk(k>0)X_{t-k} (k>0) 不相关的性质,可推导出著名的 Yule-Walker 方程γk=ϕ1γk1+ϕ2γk2++ϕpγkp,k1\gamma_k = \phi_1 \gamma_{k-1} + \phi_2 \gamma_{k-2} + \dots + \phi_p \gamma_{k-p}, \quad k \ge 1 其中 γ0\gamma_0 即为方差 Var(Xt)\text{Var}(X_t)。这是一个关于 γk\gamma_k 的 p 阶线性齐次差分方程。只要知道前 p 个协方差 γ0,γ1,,γp1\gamma_0, \gamma_1, \dots, \gamma_{p-1},就可以递推计算出任意滞后阶数 k 的协方差 γk\gamma_k

自相关系数的定义与性质

自相关系数(ACF)是标准化后的协方差函数: ρk=γkγ0\rho_k = \frac{\gamma_k}{\gamma_0} 将 Yule-Walker 方程两边同除以 γ0\gamma_0,即得到自相关系数的递推公式: ρk=ϕ1ρk1+ϕ2ρk2++ϕpρkp,k1\rho_k = \phi_1 \rho_{k-1} + \phi_2 \rho_{k-2} + \dots + \phi_p \rho_{k-p}, \quad k \ge 1 这是一个与协方差函数同形式的齐次差分方程。其解可以表示为特征根的线性组合: ρk=c1λ1k+c2λ2k++cpλpk\rho_k = c_1 \lambda_1^k + c_2 \lambda_2^k + \dots + c_p \lambda_p^k 其中 λi\lambda_i 是 AR 模型特征方程 λpϕ1λp1ϕp=0\lambda^p - \phi_1 \lambda^{p-1} - \dots - \phi_p = 0 的根。根据平稳性条件,所有 λi<1|\lambda_i| < 1。由此,我们得到 AR 模型自相关系数的两个核心性质:

  1. 拖尾性:由于 λi<1|\lambda_i| < 1ρk\rho_k 不会在有限阶后恒等于零,而是随着 k 增大逐渐衰减,但始终有非零值(尽管可能非常小)。这反映了 AR 模型的“长记忆”特性,即当期值受到所有过去值的间接影响。
  2. 负指数衰减ρk\rho_k 的衰减速度由最大模的特征根决定,整体上呈负指数速度收敛到零。衰减的具体形式(单调、震荡、伪周期性)取决于特征根是实根还是复根。

AR(1) 与 AR(2) 模型示例

  • AR(1) 模型Xt=ϕ1Xt1+εtX_t = \phi_1 X_{t-1} + \varepsilon_t,其自相关系数为 ρk=ϕ1k\rho_k = \phi_1^k。当 0<ϕ1<10<\phi_1<1 时单调指数衰减;当 1<ϕ1<0-1<\phi_1<0 时正负交替指数衰减。
  • AR(2) 模型Xt=ϕ1Xt1+ϕ2Xt2+εtX_t = \phi_1 X_{t-1} + \phi_2 X_{t-2} + \varepsilon_t,其自相关系数满足 ρk=ϕ1ρk1+ϕ2ρk2\rho_k = \phi_1 \rho_{k-1} + \phi_2 \rho_{k-2}。根据特征根的不同,衰减形式可以是单调的、震荡的或具有“伪周期性”。

偏自相关系数及其截尾性

自相关系数 ρk\rho_k 度量的是 XtX_tXtkX_{t-k} 之间的总相关性,这种相关性包含了通过中间变量 Xt1,Xt2,,Xtk+1X_{t-1}, X_{t-2}, \dots, X_{t-k+1} 产生的间接影响。为了剔除这些中间变量的干扰,更纯粹地度量两期观测值之间的直接相关性,我们引入了偏自相关系数(PACF)

偏自相关系数的定义与计算

滞后 k 阶的偏自相关系数 ϕkk\phi_{kk},定义为在给定中间 k1k-1 个随机变量 Xt1,Xt2,,Xtk+1X_{t-1}, X_{t-2}, \dots, X_{t-k+1} 的条件下,XtX_tXtkX_{t-k} 之间的条件相关系数。一个等价且更易于计算的定义是:

ϕkk\phi_{kk} 等于用 Xt1,Xt2,,XtkX_{t-1}, X_{t-2}, \dots, X_{t-k}XtX_t 进行线性回归时,最后一个自变量 XtkX_{t-k} 的回归系数。

即,考虑如下回归方程(称为第 k 阶自回归方程): Xt=ϕk1Xt1+ϕk2Xt2++ϕkkXtk+ϵt(k)X_t = \phi_{k1} X_{t-1} + \phi_{k2} X_{t-2} + \dots + \phi_{kk} X_{t-k} + \epsilon_t^{(k)}ϕkk\phi_{kk} 就是我们要的滞后 k 阶偏自相关系数。对于不同的 k,我们进行一系列这样的回归,每次回归的最后一个系数 ϕkk\phi_{kk} 就构成了偏自相关系数序列。

AR(p) 模型偏自相关系数的截尾性

对于真正的 AR(p) 过程,其偏自相关系数具有一个极其重要的性质:p 阶截尾ϕkk=0,对于所有 k>p\phi_{kk} = 0, \quad \text{对于所有 } k > p 直观理解:对于一个 AR(p) 模型,XtX_t 只直接依赖于前 p 期的值 Xt1,,XtpX_{t-1}, \dots, X_{t-p}。当我们试图用超过 p 个滞后项(例如 Xt1,,Xtp,Xtp1X_{t-1}, \dots, X_{t-p}, X_{t-p-1})去回归 XtX_t 时,多出来的 Xtp1X_{t-p-1}XtX_t 没有直接的线性影响(其影响已完全由前 p 期变量解释),因此其回归系数 ϕp+1,p+1\phi_{p+1, p+1} 的理论值应为零。

示例

  • AR(1) 模型ϕ11=ϕ1\phi_{11} = \phi_1,且 ϕkk=0\phi_{kk}=0 对于所有 k2k \ge 2。PACF 在滞后 1 阶后截尾。
  • AR(2) 模型ϕ110\phi_{11} \ne 0ϕ22=ϕ2\phi_{22} = \phi_2,且 ϕkk=0\phi_{kk}=0 对于所有 k3k \ge 3。PACF 在滞后 2 阶后截尾。

模型识别:ACF 与 PACF 的联合诊断

自相关系数(ACF)的拖尾性和偏自相关系数(PACF)的截尾性,构成了识别 AR 模型及其阶数的核心工具。

模型类型自相关系数 (ACF)偏自相关系数 (PACF)
AR(p)拖尾 (负指数衰减)p 阶截尾 (p阶后近似为0)
MA(q)q 阶截尾拖尾
ARMA(p, q)拖尾拖尾

实践中的判断

  1. 观察序列的样本自相关图。如果 ACF 呈现缓慢衰减(拖尾)的模式,则初步排除纯 MA 模型,考虑 AR 或 ARMA 模型。
  2. 观察序列的样本偏自相关图。如果 PACF 在滞后 p 阶后,其值迅速落入(并持续保持在)置信区间内(通常为 ±1.96/N\pm 1.96/\sqrt{N}),呈现出“截尾”的特征,则强烈提示该序列适合用 AR(p) 模型进行拟合。
  3. 截尾点对应的滞后阶数 p,即为 AR 模型的建议阶数。

Python 实战:验证 AR(2) 过程的 PACF 截尾性

下面,我们通过 Python 代码生成一个平稳的 AR(2) 过程,并计算其样本偏自相关系数,直观验证其在滞后 2 阶后的截尾特性。

"""
时间序列分析 3.2 课时配套实战代码
目标:生成 AR(2) 过程,计算并观察其偏自相关函数 (PACF) 的截尾特性。
"""

import numpy as np
import pandas as pd
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.tsa.stattools import pacf
import matplotlib.pyplot as plt

# 设置随机种子,确保结果可复现
np.random.seed(42)
n = 500  # 生成500个样本点

# 1. 构建理论 AR(2) 过程: X_t = 0.6*X_{t-1} - 0.2*X_{t-2} + e_t
# 特征多项式: 1 - 0.6B + 0.2B^2,其根在单位圆外,过程平稳。
# 理论特性:ACF 拖尾,PACF 在滞后 2 阶后截尾 (phi_22 = -0.2)。
ar_params = np.array([1, -0.6, 0.2])  # statsmodels 使用 [1, -phi1, -phi2, ...] 格式
ma_params = np.array([1])             # 移动平均部分为0
ar2_process = ArmaProcess(ar_params, ma_params)

# 生成模拟数据
data = ar2_process.generate_sample(nsample=n)

# 2. 计算样本 PACF (使用最小二乘法 OLS 估计)
max_lag = 10
pacf_vals, conf_int = pacf(data, nlags=max_lag, method='ols', alpha=0.05)

# 3. 准备绘图
lags = np.arange(max_lag + 1)
# 计算95%置信区间阈值 (近似为 ±1.96 / sqrt(N))
conf_bound = 1.96 / np.sqrt(n)

print(f"【模拟数据信息】")
print(f"样本量 N = {n}")
print(f"95% 白噪声置信阈值 (±1.96/√N) = ±{conf_bound:.4f}")
print(f"\n【样本偏自相关系数 (PACF) 前6阶】")
for i, (lag, val) in enumerate(zip(lags[:6], pacf_vals[:6])):
    print(f"  Lag {lag}: {val:.4f}")
print(f"\n【截尾性判断】")
print(f"  PACF(1) = {pacf_vals[1]:.4f}, |PACF(1)| > 阈值? {abs(pacf_vals[1]) > conf_bound}")
print(f"  PACF(2) = {pacf_vals[2]:.4f}, |PACF(2)| > 阈值? {abs(pacf_vals[2]) > conf_bound}")
print(f"  PACF(3) = {pacf_vals[3]:.4f}, |PACF(3)| < 阈值 (截尾)? {abs(pacf_vals[3]) < conf_bound}")

# 4. 绘制 PACF 图
plt.figure(figsize=(10, 5))
plt.stem(lags, pacf_vals, basefmt=" ")
plt.axhline(y=0, color='black', linestyle='-', linewidth=0.5)
plt.axhline(y=conf_bound, color='red', linestyle='--', linewidth=1, alpha=0.7, label=f'95% CI (±{conf_bound:.3f})')
plt.axhline(y=-conf_bound, color='red', linestyle='--', linewidth=1, alpha=0.7)
plt.fill_between(lags, -conf_bound, conf_bound, color='red', alpha=0.1)
plt.title(f'样本偏自相关图 (PACF) - AR(2) 过程模拟 (n={n})')
plt.xlabel('滞后阶数 (Lag)')
plt.ylabel('偏自相关系数')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

运行上述代码,你将得到类似以下的输出和图形:

【模拟数据信息】
样本量 N = 500
95% 白噪声置信阈值 (±1.96/√N) = ±0.0877

【样本偏自相关系数 (PACF) 前6阶】
  Lag 0: 1.0000
  Lag 1: 0.4961
  Lag 2: -0.2101
  Lag 3: -0.0176
  Lag 4: -0.0343
  Lag 5: 0.0739

【截尾性判断】
  PACF(1) = 0.4961, |PACF(1)| > 阈值? True
  PACF(2) = -0.2101, |PACF(2)| > 阈值? True
  PACF(3) = -0.0176, |PACF(3)| < 阈值 (截尾)? True

结果解读

  1. 样本 PACF 在滞后 1 阶和 2 阶的值(0.496 和 -0.210)显著超出了红色虚线表示的置信区间(±0.088),表明它们与零有显著差异。
  2. 从滞后 3 阶开始,PACF 值(-0.018, -0.034, 0.074)全部落在置信区间内,与零没有统计上的显著差异。
  3. 这清晰地展示了 PACF 在滞后 2 阶后“截尾” 的现象,与 AR(2) 模型的理论性质完全吻合。在实际分析中,如果看到这样的 PACF 图,我们会优先考虑用 AR(2) 模型来拟合该数据。

📝 动手练一练

  1. 理论推导:对于一个平稳的 AR(1) 模型 Xt=0.8Xt1+εtX_t = 0.8 X_{t-1} + \varepsilon_t,请:

    • a) 写出其自相关系数 ρk\rho_k 的表达式。
    • b) 计算其理论偏自相关系数 ϕ11\phi_{11}ϕ22\phi_{22} 的值。
    • c) 描述其 ACF 图和 PACF 图分别应呈现什么特征。
  2. 代码实践:修改上面实战代码中的 ar_params,将其改为 np.array([1, -0.9]) 以生成一个 AR(1) 过程。重新运行代码,观察并描述生成的 PACF 图与之前 AR(2) 的图有何不同?是否验证了 AR(1) 模型 PACF 的 1 阶截尾性?

参考答案

  1. a) ρk=0.8k\rho_k = 0.8^k。 b) ϕ11=0.8\phi_{11} = 0.8ϕ22=0\phi_{22} = 0(因为对于 AR(1),k>1 时 ϕkk=0\phi_{kk}=0)。 c) ACF 图应从 0.8 开始单调指数衰减,拖尾。PACF 图应在滞后 1 阶有一个显著峰(约 0.8),之后所有阶数都落在置信区间内,呈现 1 阶截尾。
  2. 修改后,生成的 PACF 图应仅在滞后 1 阶有一个显著的大于阈值的峰值,从滞后 2 阶开始,所有值都落入置信带内。这直观地展示了 AR(1) 过程 PACF 的“1阶截尾”特性,与理论一致。

本章小结

本节我们深入剖析了平稳 AR 模型的三项核心统计性质:

  1. 协方差与自相关:满足 Yule-Walker 递推方程,导致自相关系数(ACF)具有拖尾性,即按负指数速度衰减,永不截断。
  2. 偏自相关:具有截尾性,即对于 AR(p) 模型,偏自相关系数(PACF)在滞后 p 阶后理论值为零。这是识别 AR 模型及其阶数的关键指纹。
  3. 模型识别原理:通过观察序列的样本 ACF(拖尾)和样本 PACF(p阶截尾),我们可以初步判断数据适合用 AR(p) 模型拟合,其中截尾点 p 即为模型阶数。

行动清单

  • 理论回顾:确保理解 ACF 拖尾与 PACF 截尾背后的数学原理(递推方程与回归系数解释)。
  • 图形诊断:找一组真实的时间序列数据(如股票收益率、气温数据),使用 statsmodels.graphics.tsa.plot_acfplot_pacf 函数绘制其 ACF 和 PACF 图,尝试根据图形特征猜测它可能服从哪种模型(AR/MA/ARMA)。
  • 代码复现:运行并理解本节提供的 Python 实战代码,尝试修改参数生成 AR(1) 和 AR(3) 过程,观察其 PACF 截尾点的变化,巩固“阶数识别”的直观感受。

— 小象教研组

配套学习资源与课件
  • 第3章课件:平稳时间序列分析
    下载
  • 第3章配套代码
    下载
  • 时间序列分析推荐书籍(打包)(经典时序分析参考书合集)
    下载
  • 课程配套数据集(全课程实战数据)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加顾问免费领取;想学什么,直接告诉顾问
微信二维码:扫码添加课程顾问微信扫码添加顾问