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

模型显著性检验、优化与序列预测

约 66 分钟

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

平稳时间序列建模:模型检验、优化与预测

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

在掌握了平稳时间序列模型(AR、MA、ARMA)的识别、定阶与参数估计后,我们面临三个关键问题:如何判断模型是否有效?当多个模型都有效时如何选择最优?以及如何利用模型对未来进行预测?本节将系统讲解模型显著性检验、信息准则优化和序列预测三大核心环节,为你提供从建模到应用的完整闭环。

💡 核心导读

  • 模型显著性检验:通过残差白噪声检验(Ljung-Box)判断模型是否充分提取了序列信息,通过参数t检验判断模型结构是否最简
  • 模型优化准则:引入AIC(赤池信息准则)和BIC(贝叶斯信息准则)量化模型拟合优度与复杂度,实现多模型间的客观比较
  • 序列预测原理:基于格林函数推导AR、MA、ARMA模型的点预测与区间预测公式,理解预测误差随步长增加的规律
  • 修正预测技术:学习如何利用新观测值动态更新预测结果,提高预测精度

模型显著性检验:判断拟合是否充分

模型整体显著性检验:残差白噪声检验

一个有效的拟合模型应当能够提取观测序列中几乎所有的样本相关信息。如果模型拟合充分,那么残差序列 ε^t\hat{\varepsilon}_t 中不应再包含任何可预测的模式,即残差序列应为白噪声序列:

ε^tWN(0,σ2)\hat{\varepsilon}_t \sim WN(0, \sigma^2)

检验原理:将模型显著性检验转化为对残差序列的纯随机性检验。

假设设定

  • 原假设 H0H_0:残差序列为白噪声序列,即 ρ1=ρ2==ρm=0\rho_1 = \rho_2 = \cdots = \rho_m = 0
  • 备择假设 H1H_1:残差序列不是白噪声序列,至少存在某个 ρk0\rho_k \neq 0

检验统计量:Ljung-Box(LB)统计量

QLB=n(n+2)k=1mρ^k2nkχ2(m)Q_{LB} = n(n+2) \sum_{k=1}^{m} \frac{\hat{\rho}_k^2}{n-k} \sim \chi^2(m)

其中 nn 为样本量,mm 为检验的最大滞后阶数,ρ^k\hat{\rho}_k 为残差序列的 kk 阶自相关系数。

判定规则

  • pp 值 > 0.05:不能拒绝原假设,认为残差是白噪声,模型显著有效
  • pp 值 ≤ 0.05:拒绝原假设,认为残差不是白噪声,模型需要改进

参数显著性检验:t检验

即使模型整体有效,也可能包含不显著的参数。参数显著性检验旨在识别并删除不显著的参数,使模型结构达到最简。

假设设定(以ARMA模型为例):

  • 原假设 H0H_0βj=0\beta_j = 0(第 jj 个参数不显著)
  • 备择假设 H1H_1βj0\beta_j \neq 0(第 jj 个参数显著)

检验统计量

t=β^js(β^j)t(nm)t = \frac{\hat{\beta}_j}{s(\hat{\beta}_j)} \sim t(n-m)

其中 β^j\hat{\beta}_j 为参数估计值,s(β^j)s(\hat{\beta}_j) 为其标准误,nn 为样本量,mm 为模型参数总数。

判定规则

  • pp 值 ≤ 0.05:拒绝原假设,认为参数显著不为零
  • pp 值 > 0.05:不能拒绝原假设,考虑删除该参数

两类检验的关系与意义

检验类型检验对象目的通过标准
模型整体显著性残差序列判断模型是否充分提取信息残差为白噪声(p>0.05p > 0.05
参数显著性单个参数判断模型结构是否最简参数显著不为零(p0.05p ≤ 0.05

重要提示:两类检验必须同时通过,模型才算有效。可能出现以下情况:

  1. 模型整体有效但参数不有效:可能存在多重共线性,需要简化模型
  2. 参数有效但模型整体无效:模型未能充分提取信息,需要改进模型形式

模型优化:选择相对最优模型

问题背景:模型不唯一性

对于同一时间序列,可能存在多个通过显著性检验的模型。例如,某化学序列既可通过自相关图2阶截尾拟合MA(2)模型,也可通过偏自相关图1阶截尾拟合AR(1)模型,两个模型都显著有效。

优化目标:在多个有效模型中选择相对最优的模型。

AIC准则:最小信息量准则

AIC(Akaike Information Criterion)准则基于信息论思想,平衡模型拟合优度与复杂度:

指导思想

  1. 似然函数值越大越好(拟合优度高)
  2. 未知参数个数越少越好(模型简洁)

AIC统计量

AIC=2lnL+2kAIC = -2 \ln L + 2k

其中:

  • LL 为模型似然函数的最大值
  • kk 为模型参数总数(包括常数项)
  • 2lnL-2 \ln L 衡量拟合优度(越小越好)
  • 2k2k 惩罚参数个数(防止过拟合)

对于ARMA(p,q)模型,参数个数 k=p+q+1k = p + q + 1(+1为常数项)。

BIC准则:贝叶斯信息准则

AIC准则在样本量趋于无穷大时,选择的模型通常比真实模型参数更多。BIC(Bayesian Information Criterion)准则通过加强参数惩罚来解决这一问题:

BIC统计量

BIC=2lnL+klnnBIC = -2 \ln L + k \ln n

其中 nn 为样本量。当 n8n \geq 8 时,lnn>2\ln n > 2,BIC对参数个数的惩罚力度大于AIC。

准则应用与比较

选择原则:AIC和BIC值越小,模型相对越优。

特点比较

  • AIC:倾向于选择参数稍多的模型,在小样本下可能过拟合
  • BIC:倾向于选择更简洁的模型,在大样本下更接近真实模型
  • 实践建议:同时计算AIC和BIC,优先选择两者都较小的模型

自动定阶:Auto ARIMA

在实际应用中,自相关图和偏自相关图的识别可能存在主观性。现代时间序列分析常采用自动定阶方法:

# Python实战:模型诊断、选择与预测
import numpy as np
import pandas as pd
from statsmodels.tsa.arima_process import ArmaProcess
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.stats.diagnostic import acorr_ljungbox
from scipy.stats import jarque_bera

np.random.seed(42)
n = 300

# 1. 生成真实 ARMA(1, 1) 过程
ar_true = np.array([1, -0.6])
ma_true = np.array([1, 0.5])
process = ArmaProcess(ar_true, ma_true)
data = pd.Series(process.generate_sample(nsample=n), name='series')

# 2. 拟合多个候选模型比较 AIC/BIC
candidate_orders = [(1, 0, 0), (0, 0, 1), (1, 0, 1), (2, 0, 1)]
results = {}

print("候选模型信息准则比较:")
for order in candidate_orders:
    m = ARIMA(data, order=order).fit()
    results[order] = m
    print(f"  ARMA{order}: AIC = {m.aic:.2f}, BIC = {m.bic:.2f}, LogLik = {m.llf:.2f}")

# 3. 选取最佳模型进行残差白噪声检验 (Ljung-Box) 与正态性检验 (Jarque-Bera)
best_model = results[(1, 0, 1)]
residuals = best_model.resid[1:]  # 去除首项条件初始效应

lb_test = acorr_ljungbox(residuals, lags=[6, 12], return_df=True)
jb_stat, jb_pvalue = jarque_bera(residuals)

print(f"\n最佳模型 ARMA(1,1) 残差诊断:")
print(f"  Ljung-Box 白噪声检验:")
for lag in [6, 12]:
    p_val = lb_test.loc[lag, 'lb_pvalue']
    stat_val = lb_test.loc[lag, 'lb_stat']
    print(f"    Lag {lag}: 统计量 = {stat_val:.4f}, p值 = {p_val:.4f} (p > 0.05 接受白噪声假设: {p_val > 0.05})")

print(f"  Jarque-Bera 正态性检验: 统计量 = {jb_stat:.4f}, p值 = {jb_pvalue:.4f}")
print(f"  残差均值: {residuals.mean():.4f}, 残差标准差: {residuals.std():.4f}")

运行结果

候选模型信息准则比较:
  ARMA(1, 0, 0): AIC = 881.84, BIC = 892.95, LogLik = -437.92
  ARMA(0, 0, 1): AIC = 899.68, BIC = 910.80, LogLik = -446.84
  ARMA(1, 0, 1): AIC = 848.07, BIC = 862.88, LogLik = -420.03
  ARMA(2, 0, 1): AIC = 848.19, BIC = 866.71, LogLik = -419.10

最佳模型 ARMA(1,1) 残差诊断:
  Ljung-Box 白噪声检验:
    Lag 6: 统计量 = 5.7645, p值 = 0.4501 (p > 0.05 接受白噪声假设: True)
    Lag 12: 统计量 = 8.0794, p值 = 0.7789 (p > 0.05 接受白噪声假设: True)
  Jarque-Bera 正态性检验: 统计量 = 6.6623, p值 = 0.0358
  残差均值: -0.0021, 残差标准差: 0.9827

代码解读

  1. 我们生成了一个真实的ARMA(1,1)过程:Xt=0.6Xt1+εt+0.5εt1X_t = 0.6X_{t-1} + \varepsilon_t + 0.5\varepsilon_{t-1}
  2. 比较了四个候选模型:AR(1)、MA(1)、ARMA(1,1)、ARMA(2,1)
  3. ARMA(1,1)的AIC(848.07)和BIC(862.88)均最小,被选为最佳模型
  4. 残差白噪声检验p值均大于0.05,接受白噪声假设,模型整体显著有效
  5. 正态性检验p=0.0358<0.05,拒绝正态性假设,但这对预测影响不大

序列预测:从理论到实践

预测的基本原理

对于平稳时间序列模型,未来观测值可以表示为历史观测值和未来随机扰动的线性组合。以ARMA(p,q)模型的传递形式为例:

Xt=i=0GiεtiX_t = \sum_{i=0}^{\infty} G_i \varepsilon_{t-i}

其中 GiG_i 为格林函数。基于此,ll 步超前预测值为:

X^t(l)=E[Xt+lXt,Xt1,]\hat{X}_t(l) = E[X_{t+l} | X_t, X_{t-1}, \ldots]

AR(p)序列的预测

对于AR(p)模型 Xt=ϕ1Xt1++ϕpXtp+εtX_t = \phi_1 X_{t-1} + \cdots + \phi_p X_{t-p} + \varepsilon_t

预测公式

  • 1步预测:X^t(1)=ϕ1Xt+ϕ2Xt1++ϕpXtp+1\hat{X}_t(1) = \phi_1 X_t + \phi_2 X_{t-1} + \cdots + \phi_p X_{t-p+1}
  • 2步预测:X^t(2)=ϕ1X^t(1)+ϕ2Xt++ϕpXtp+2\hat{X}_t(2) = \phi_1 \hat{X}_t(1) + \phi_2 X_t + \cdots + \phi_p X_{t-p+2}
  • 一般地:X^t(l)=i=1pϕiX^t(li)\hat{X}_t(l) = \sum_{i=1}^{p} \phi_i \hat{X}_t(l-i),其中 k0k \leq 0 时取已知观测值 X^t(k)=Xt+k\hat{X}_t(k) = X_{t+k}li>0l-i>0X^t(li)\hat{X}_t(l-i) 取此前按步长从小到大递推得到的预测值

预测方差Var[et(l)]=σ2i=0l1Gi2Var[e_t(l)] = \sigma^2 \sum_{i=0}^{l-1} G_i^2 其中 et(l)=Xt+lX^t(l)e_t(l) = X_{t+l} - \hat{X}_t(l) 为预测误差。

置信区间:在正态性假设下,Xt+lX_{t+l}(1α)100%(1-\alpha)100\% 置信区间为: X^t(l)±z1α/2Var[et(l)]\hat{X}_t(l) \pm z_{1-\alpha/2} \sqrt{Var[e_t(l)]}

MA(q)序列的预测

对于MA(q)模型 Xt=εtθ1εt1θqεtqX_t = \varepsilon_t - \theta_1 \varepsilon_{t-1} - \cdots - \theta_q \varepsilon_{t-q}

重要特性:当预测步长 l>ql > q 时,X^t(l)=0\hat{X}_t(l) = 0(若序列均值为0)

预测方差

  • lql \leq qVar[et(l)]=σ2(1+θ12++θl12)Var[e_t(l)] = \sigma^2 (1 + \theta_1^2 + \cdots + \theta_{l-1}^2)
  • l>ql > qVar[et(l)]=σ2(1+θ12++θq2)Var[e_t(l)] = \sigma^2 (1 + \theta_1^2 + \cdots + \theta_q^2)

ARMA(p,q)序列的预测

结合AR和MA的特性,预测值通过递推计算,预测方差为: Var[et(l)]=σ2i=0l1Gi2Var[e_t(l)] = \sigma^2 \sum_{i=0}^{l-1} G_i^2

关键观察:预测方差随步长 ll 增加而增加,置信区间逐渐变宽,体现了”预测越远,不确定性越大”的直观认知。

修正预测:利用新信息提高精度

当获得新的观测值 Xt+1X_{t+1} 后,可以修正对未来时期的预测:

修正原理

  1. 计算一步预测误差:εt+1=Xt+1X^t(1)\varepsilon_{t+1} = X_{t+1} - \hat{X}_t(1)
  2. 更新未来预测:X^t+1(l1)=X^t(l)+Gl1εt+1\hat{X}_{t+1}(l-1) = \hat{X}_t(l) + G_{l-1} \varepsilon_{t+1}

修正方差Var[et+1(l1)]=Var[et(l)]Gl12σ2Var[e_{t+1}(l-1)] = Var[e_t(l)] - G_{l-1}^2 \sigma^2

修正后的预测方差减小,置信区间变窄,预测精度提高。

📝 动手练一练

  1. 模型诊断综合题
    某时间序列拟合AR(2)模型后得到残差序列,Ljung-Box检验在滞后6阶、12阶、18阶的p值分别为0.03、0.25、0.42。请问:

    • (1) 在5%显著性水平下,模型是否通过整体显著性检验?
    • (2) 如果参数检验显示两个AR系数都显著(p<0.05),这个模型是否可用?为什么?

    参考答案
    (1) 滞后6阶p=0.03<0.05,拒绝白噪声原假设,模型未通过整体显著性检验。
    (2) 不可用。虽然参数显著,但模型整体未通过检验,说明模型未能充分提取序列信息,需要重新选择模型形式。

  2. AIC/BIC计算题
    两个ARMA模型拟合同一序列的结果如下:

    • 模型A:ARMA(1,1),对数似然值=-150.2,样本量n=200
    • 模型B:ARMA(2,1),对数似然值=-148.5,样本量n=200

    计算两个模型的AIC和BIC值,并判断哪个模型更优。

    参考答案
    模型A:参数k=3,AIC=-2×(-150.2)+2×3=306.4,BIC=-2×(-150.2)+3×ln(200)=300.4+3×5.298≈316.29
    模型B:参数k=4,AIC=-2×(-148.5)+2×4=305.0,BIC=-2×(-148.5)+4×ln(200)=297.0+4×5.298≈318.19
    按AIC准则,模型B更优(305.0<306.4);按BIC准则,模型A更优(316.29<318.19)。两准则结论分歧,需结合样本量大小权衡。

本章小结

本节系统讲解了平稳时间序列建模的最后三个关键环节,构建了完整的建模工作流:

核心要点回顾

  1. 模型检验是建模的必经之路:必须同时通过残差白噪声检验(模型整体显著性)和参数t检验(模型结构最简性)
  2. 信息准则提供客观比较标准:AIC和BIC平衡拟合优度与模型复杂度,BIC在大样本下更可靠
  3. 预测精度随步长增加而降低:预测方差随预测步长增加,置信区间逐渐变宽
  4. 新信息可动态改进预测:修正预测利用最新观测值更新预测结果,提高短期预测精度

行动清单

  1. 立即实践:使用Python的statsmodels库对任一经济或气象时间序列进行完整建模流程,包括模型识别、估计、检验、优化和预测
  2. 对比分析:对同一序列尝试AR、MA、ARMA不同模型,比较AIC/BIC值,理解模型选择过程
  3. 预测验证:将序列分为训练集和测试集,用训练集建模预测测试集,计算预测误差,评估模型预测能力

通过本节学习,你已掌握从数据到预测的完整时间序列分析流程。在实际应用中,需要结合业务背景理解预测结果,特别是置信区间的经济或管理含义,将统计工具转化为决策支持。

— 小象教研组

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

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

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

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