📑 查看全课大纲(第 6 / 20 节)
- 1.时间序列分析简介
- 2.平稳性检验与特征
- 3.纯随机性检验(白噪声检验)
- 4.时间序列预处理代码实战
- 5.自回归模型(AR 模型)
- 6.自相关系数与偏自相关系数
- 7.移动平均模型(MA)与自回归移动平均模型(ARMA)
- 8.平稳时序模型识别与参数估计
- 9.模型显著性检验、优化与序列预测
- 10.平稳时间序列建模代码实战
- 11.确定性序列分解与趋势分析
- 12.季节效应分析与综合波动分析
- 13.确定性时序分析代码实战
- 14.差分平稳化与 ARIMA 模型
- 15.残差自回归模型
- 16.ARCH / GARCH 模型及其衍生
- 17.异方差检验:Portmanteau Q 检验与 LM 检验
- 18.随机性非平稳建模与 GARCH 实战
- 19.ARIMAX 模型与单位根(DF/ADF)检验
- 20.协整检验与误差修正模型(ECM)
自相关系数与偏自相关系数
约 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) 模型: 其均值为零,即 。其自协方差函数定义为 。
协方差函数的递推公式
在模型等式两边同乘 并求期望,利用白噪声 与过去观测值 不相关的性质,可推导出著名的 Yule-Walker 方程: 其中 即为方差 。这是一个关于 的 p 阶线性齐次差分方程。只要知道前 p 个协方差 ,就可以递推计算出任意滞后阶数 k 的协方差 。
自相关系数的定义与性质
自相关系数(ACF)是标准化后的协方差函数: 将 Yule-Walker 方程两边同除以 ,即得到自相关系数的递推公式: 这是一个与协方差函数同形式的齐次差分方程。其解可以表示为特征根的线性组合: 其中 是 AR 模型特征方程 的根。根据平稳性条件,所有 。由此,我们得到 AR 模型自相关系数的两个核心性质:
- 拖尾性:由于 , 不会在有限阶后恒等于零,而是随着 k 增大逐渐衰减,但始终有非零值(尽管可能非常小)。这反映了 AR 模型的“长记忆”特性,即当期值受到所有过去值的间接影响。
- 负指数衰减: 的衰减速度由最大模的特征根决定,整体上呈负指数速度收敛到零。衰减的具体形式(单调、震荡、伪周期性)取决于特征根是实根还是复根。
AR(1) 与 AR(2) 模型示例
- AR(1) 模型:,其自相关系数为 。当 时单调指数衰减;当 时正负交替指数衰减。
- AR(2) 模型:,其自相关系数满足 。根据特征根的不同,衰减形式可以是单调的、震荡的或具有“伪周期性”。
偏自相关系数及其截尾性
自相关系数 度量的是 与 之间的总相关性,这种相关性包含了通过中间变量 产生的间接影响。为了剔除这些中间变量的干扰,更纯粹地度量两期观测值之间的直接相关性,我们引入了偏自相关系数(PACF)。
偏自相关系数的定义与计算
滞后 k 阶的偏自相关系数 ,定义为在给定中间 个随机变量 的条件下, 与 之间的条件相关系数。一个等价且更易于计算的定义是:
等于用 对 进行线性回归时,最后一个自变量 的回归系数。
即,考虑如下回归方程(称为第 k 阶自回归方程): 则 就是我们要的滞后 k 阶偏自相关系数。对于不同的 k,我们进行一系列这样的回归,每次回归的最后一个系数 就构成了偏自相关系数序列。
AR(p) 模型偏自相关系数的截尾性
对于真正的 AR(p) 过程,其偏自相关系数具有一个极其重要的性质:p 阶截尾。 直观理解:对于一个 AR(p) 模型, 只直接依赖于前 p 期的值 。当我们试图用超过 p 个滞后项(例如 )去回归 时,多出来的 对 没有直接的线性影响(其影响已完全由前 p 期变量解释),因此其回归系数 的理论值应为零。
示例:
- AR(1) 模型:,且 对于所有 。PACF 在滞后 1 阶后截尾。
- AR(2) 模型:,,且 对于所有 。PACF 在滞后 2 阶后截尾。
模型识别:ACF 与 PACF 的联合诊断
自相关系数(ACF)的拖尾性和偏自相关系数(PACF)的截尾性,构成了识别 AR 模型及其阶数的核心工具。
| 模型类型 | 自相关系数 (ACF) | 偏自相关系数 (PACF) |
|---|---|---|
| AR(p) | 拖尾 (负指数衰减) | p 阶截尾 (p阶后近似为0) |
| MA(q) | q 阶截尾 | 拖尾 |
| ARMA(p, q) | 拖尾 | 拖尾 |
实践中的判断:
- 观察序列的样本自相关图。如果 ACF 呈现缓慢衰减(拖尾)的模式,则初步排除纯 MA 模型,考虑 AR 或 ARMA 模型。
- 观察序列的样本偏自相关图。如果 PACF 在滞后 p 阶后,其值迅速落入(并持续保持在)置信区间内(通常为 ),呈现出“截尾”的特征,则强烈提示该序列适合用 AR(p) 模型进行拟合。
- 截尾点对应的滞后阶数 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结果解读:
- 样本 PACF 在滞后 1 阶和 2 阶的值(0.496 和 -0.210)显著超出了红色虚线表示的置信区间(±0.088),表明它们与零有显著差异。
- 从滞后 3 阶开始,PACF 值(-0.018, -0.034, 0.074)全部落在置信区间内,与零没有统计上的显著差异。
- 这清晰地展示了 PACF 在滞后 2 阶后“截尾” 的现象,与 AR(2) 模型的理论性质完全吻合。在实际分析中,如果看到这样的 PACF 图,我们会优先考虑用 AR(2) 模型来拟合该数据。
📝 动手练一练
理论推导:对于一个平稳的 AR(1) 模型 ,请:
- a) 写出其自相关系数 的表达式。
- b) 计算其理论偏自相关系数 和 的值。
- c) 描述其 ACF 图和 PACF 图分别应呈现什么特征。
代码实践:修改上面实战代码中的
ar_params,将其改为np.array([1, -0.9])以生成一个 AR(1) 过程。重新运行代码,观察并描述生成的 PACF 图与之前 AR(2) 的图有何不同?是否验证了 AR(1) 模型 PACF 的 1 阶截尾性?
参考答案:
- a) 。 b) ,(因为对于 AR(1),k>1 时 )。 c) ACF 图应从 0.8 开始单调指数衰减,拖尾。PACF 图应在滞后 1 阶有一个显著峰(约 0.8),之后所有阶数都落在置信区间内,呈现 1 阶截尾。
- 修改后,生成的 PACF 图应仅在滞后 1 阶有一个显著的大于阈值的峰值,从滞后 2 阶开始,所有值都落入置信带内。这直观地展示了 AR(1) 过程 PACF 的“1阶截尾”特性,与理论一致。
本章小结
本节我们深入剖析了平稳 AR 模型的三项核心统计性质:
- 协方差与自相关:满足 Yule-Walker 递推方程,导致自相关系数(ACF)具有拖尾性,即按负指数速度衰减,永不截断。
- 偏自相关:具有截尾性,即对于 AR(p) 模型,偏自相关系数(PACF)在滞后 p 阶后理论值为零。这是识别 AR 模型及其阶数的关键指纹。
- 模型识别原理:通过观察序列的样本 ACF(拖尾)和样本 PACF(p阶截尾),我们可以初步判断数据适合用 AR(p) 模型拟合,其中截尾点 p 即为模型阶数。
行动清单:
- 理论回顾:确保理解 ACF 拖尾与 PACF 截尾背后的数学原理(递推方程与回归系数解释)。
- 图形诊断:找一组真实的时间序列数据(如股票收益率、气温数据),使用
statsmodels.graphics.tsa.plot_acf和plot_pacf函数绘制其 ACF 和 PACF 图,尝试根据图形特征猜测它可能服从哪种模型(AR/MA/ARMA)。 - 代码复现:运行并理解本节提供的 Python 实战代码,尝试修改参数生成 AR(1) 和 AR(3) 过程,观察其 PACF 截尾点的变化,巩固“阶数识别”的直观感受。
— 小象教研组
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加顾问免费领取;想学什么,直接告诉顾问
微信扫码添加顾问