4. 平稳性检验方法

在时间序列建模中,平稳性是决定模型选择与统计推断有效性的前提。若序列存在单位根,回归结果可能呈现虚假显著,冲击具有永久性,均值回归假设也随之失效。因此,在建立ARIMA、协整或均值回归模型之前,必须对序列进行平稳性检验。本节聚焦三类最常用的检验方法:ADF、KPSS与PP,从原理、假设、实现步骤到结果解读逐一展开。

一、核心原理:三类检验的统计逻辑

ADF检验(Augmented Dickey-Fuller)的核心思想是检验序列是否存在单位根。它从回归式出发,将因变量的一阶差分对滞后水平项和若干滞后差分项回归,通过判断滞后水平项系数是否显著为负来推断平稳性。若系数显著小于零,说明序列具有均值回归倾向,拒绝单位根假设。

PP检验(Phillips-Perron)与ADF检验的原假设相同,都假设序列存在单位根。区别在于,PP检验不通过增加滞后差分项来修正自相关,而是采用非参数方法对统计量进行修正,因此对滞后阶数选择不敏感,适合存在较强自相关或异方差的情形。

KPSS检验(Kwiatkowski-Phillips-Schmidt-Shin)则采用相反的原假设:序列是平稳的。它将序列分解为确定性趋势、随机游走和误差项,检验随机游走成分的方差是否为零。若方差显著不为零,则拒绝平稳性假设。因此,KPSS常与ADF配合使用,形成“双重确认”。

记忆要点:ADF与PP的原假设是“有单位根”,KPSS的原假设是“平稳”。拒绝ADF/PP意味着支持平稳;拒绝KPSS意味着支持非平稳。

二、假设体系与结果判读

三类检验的假设体系可归纳如下表。理解原假设与备择假设的方向,是避免误读p值的关键。

检验方法 原假设 H₀ 备择假设 H₁ 拒绝H₀的含义 常见用途
ADF 存在单位根(非平稳) 无单位根(平稳) 支持平稳 常规平稳性判断
PP 存在单位根(非平稳) 无单位根(平稳) 支持平稳 自相关/异方差稳健判断
KPSS 平稳 存在单位根(非平稳) 支持非平稳 与ADF交叉验证

结果解读时,通常以p值与显著性水平α(常取0.05)比较。对于ADF和PP,若p值小于α,则拒绝单位根,认为序列平稳;对于KPSS,若p值小于α,则拒绝平稳,认为序列非平稳。当ADF与KPSS结论一致时,判断较为可靠;若二者冲突,则需检查趋势项设定、样本量、滞后阶数或结构突变。

三、实现步骤与代码示例

以Python的statsmodels为例,三类检验的实现流程高度相似,但参数设定需注意。ADF需指定回归类型(常数、常数加趋势、无)和滞后阶数;PP需指定回归类型和带宽;KPSS需指定回归类型和滞后截断参数。

import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller, kpss
from statsmodels.tsa.stattools import PhillipsPerron

# 模拟一个带趋势的非平稳序列
np.random.seed(42)
n = 300
trend = np.linspace(0, 10, n)
noise = np.random.normal(0, 1, n)
series = trend + noise

# ADF检验:默认含常数项,滞后阶数由AIC自动选择
adf_result = adfuller(series, autolag='AIC')
print('ADF统计量:', adf_result[0])
print('ADF p值:', adf_result[1])
print('滞后阶数:', adf_result[2])
print('临界值:', adf_result[4])

# PP检验
pp_result = PhillipsPerron(series, regression='c')
print('PP统计量:', pp_result.stat)
print('PP p值:', pp_result.pvalue)

# KPSS检验:回归类型为常数项,滞后截断使用默认
kpss_result = kpss(series, regression='c', nlags='auto')
print('KPSS统计量:', kpss_result[0])
print('KPSS p值:', kpss_result[1])
print('KPSS临界值:', kpss_result[3])

执行上述代码后,若ADF的p值较大(如0.8),PP的p值也较大,而KPSS的p值较小(如0.01),则三者一致指向序列非平稳。此时可对序列进行一阶差分,再重复检验,直至差分序列平稳。

注意:ADF与PP的p值来自非标准分布,不能与普通t检验的p值直接类比。statsmodels返回的p值已基于MacKinnon临界值计算,可直接使用,但需确保回归类型与数据特征匹配。

四、案例场景与常见误区复盘

假设我们研究某股票价格与宏观经济指标的关系。价格序列通常非平稳,而收益率序列往往平稳。若直接对价格做回归,可能得到高R²但残差存在单位根,导致伪回归。正确做法是:先对价格做ADF、PP、KPSS检验,确认非平稳后,再检验一阶差分是否平稳。若一阶差分平稳,则序列为I(1),可进一步做协整检验。

常见误区包括:

  • 只看ADF,忽略KPSS。ADF在接近单位根时检验力较低,容易误判为平稳。KPSS可作为补充,二者结论一致时更可信。
  • 回归类型设定错误。若序列明显带趋势,却使用仅含常数项的ADF,会降低检验力。应选择“常数+趋势”或先去除趋势。
  • 滞后阶数选择随意。ADF的滞后阶数过少会导致自相关残留,过多会损失检验力。建议使用AIC或BIC自动选择。
  • 混淆“拒绝”与“接受”。ADF不拒绝原假设,只能说明“没有足够证据证明平稳”,不能直接断言“序列就是非平稳”。
  • 忽略结构突变。若序列存在均值突变或趋势突变,传统ADF、KPSS可能失效,需使用Zivot-Andrews等考虑突变的检验。

复盘时,建议形成固定流程:先画时序图观察趋势与突变,再同时运行ADF、PP、KPSS,记录统计量、p值、滞后阶数和回归类型,最后结合差分后的结果做综合判断。只有检验结论稳健,后续的协整与均值回归建模才有可靠基础。

实操建议:在量化研究报告中,至少同时报告ADF与KPSS的结果,并注明回归类型、滞后阶数和样本区间。若两者冲突,应优先检查数据生成过程与结构突变,而非强行选择有利结论。