时间序列分析(二)——平稳性检验

此前篇章:

时间序列分析(一)——基础概念篇


一、相关知识点

为什么要进行平稳性检验?——进行平稳性检验是时间序列分析中的一个重要步骤,主要原因如下:

  • 经典统计模型的前提条件:许多经典的时间序列模型(如ARIMA、ARMA等)都假设数据是平稳的。如果数据不平稳,直接应用这些模型可能会导致模型参数估计不准确、预测结果不可靠。
  • 避免伪回归:在非平稳时间序列中,即使两个序列之间没有实际关系,也可能表现出显著的相关性,这种现象称为伪回归。例如,如果两个非平稳时间序列都具有相同的趋势,它们可能会表现出很高的相关性,但实际上这种相关性是虚假的。

矩:

  • 一阶矩:期望值(E[X]),描述分布的中心,可用于预测和决策。
  • 二阶矩:随机变量平方的期望(E[X2]),用于计算方差。
  • 二阶中心矩:方差,var(X),衡量离散程度,可用于风险评估和质量控制。

自协方差函数与自相关函数:

  • 自协方差函数:衡量时间序列在不同时间点的取值之间的协方差。对于时间序列 {Xt},自协方差函数的定义如下。

特别的,当k=0时,\gamma(0)=var(X_{t}) ,即时间序列的方差。

  • 自相关系数(ACF):自协方差函数的标准化形式,用于衡量时间序列在不同时间点的取值之间的线性相关性。定义如下。

 自协方差函数、自相关函数的应用:

  1. 描述时间序列的内部结构:帮助分析时间序列在不同时间点的取值之间的依赖关系。例如,如果 ρ(k) 在某个滞后 k 处显著不为零,说明时间序列在滞后 k 处存在相关性。
  2. 判断平稳性:对于平稳时间序列,自协方差和自相关只与滞后 k 有关,而与时间 t 无关。
  3. 模型识别、预测参考。

严平稳:严平稳要求时间序列的所有统计性质在时间平移下保持不变。严平稳的条件非常严格,实际中很难验证严平稳性,因为需要知道整个联合分布。 

宽平稳(也叫弱平稳):只要求时间序列的均值和自协方差在时间平移下保持不变。我们在分析时,通常只要求宽平稳,而不是严平稳。

宽平稳的条件,有3个:

  1. 均值恒定,是一个常数
  2. 方差恒定
  3. 自协方差只与时间间隔有关(与滞后k有关,而与t无关)

二、图检验(主观判断)

(一)时序图检验

时序图检验是平稳性检验的一种直观方法,通过绘制时间序列的图形来初步判断其是否平稳。只能靠主观初步判断平稳性。

横轴:时间

纵轴:观测值

判断:

  • 均值是否随时间变化(是否存在趋势)
  • 方差是否发生随时间变化(是否存在波动性变化)
  • 是否存在明显季节性

平稳时的特征:

  • 均值恒定:围绕一条水平线波动
  • 方差恒定:波动幅度大致相同
  • 无明显的趋势或季节性

非平稳时的特征:

  • 存在趋势:呈现明显的上升或下降趋势
  • 存在季节性:呈现周期性波动
  • 方差变化:序列的波动幅度随时间变化

趋势非平稳,图例如下:存在向下递减的趋势,故序列非平稳。

方差非平稳,图例如下:虽然均值大致相同(围绕一条线附近波动),但是波动幅度不一样,随时间推移,波动幅度越大。

季节性非平稳,图例如下: 均值大致相同,但是在数据在固定间隔(如每月或每两周)呈现周期性波动,数值在特定时间点重复上升或下降。

 趋势+季节性非平稳,图例如下 :

平稳,图例如下:序列大致围绕一条线附近波动,波动幅度大致相同,且不存在明显的上升或下降趋势,也不存在明显的季节性(固定间隔无明显周期性波动,比较杂乱),因此可以初步判断序列是平稳的(但不一定平稳,因为图检验方法是主观判断的)

 (二)自相关图检验

平稳序列

  • 如果时间序列是平稳的,自相关系数通常会迅速衰减,尤其是在较大的滞后期时,相关性趋于零。
  • 自相关图显示出大部分自相关系数都位于零附近,且不呈现明显的周期性或趋势。

趋势非平稳

  • 如果时间序列是非平稳的,尤其是具有趋势的非平稳序列,自相关系数通常会在较大的滞后期上仍然较高。这表明数据点之间有较强的依赖关系,序列存在较长时间的相关性。
  • 在具有趋势的序列中,自相关系数往往在滞后期较长时才逐渐衰减,而不是快速趋近于零。

季节性非平稳

  • 如果时间序列具有季节性,通常会看到自相关图在某些滞后期有显著的峰值。例如,如果数据具有年季节性,自相关系数可能会在12个月的滞后期上出现一个显著的周期性波动。

 三、单位跟检验

(一)ADF检验、PP检验

ADF检验是时间序列分析中用于检验平稳性的常用方法,通过构建回归模型来检测单位根,判断序列是否平稳。如果存在单位根,序列是非平稳的;反之,序列是平稳的。

原假设与备择假设

  • 原假设(H₀): 序列存在单位根(非平稳)。

  • 备择假设(H₁): 序列不存在单位根(平稳)。

ADF检验根据模型的形式分为三种(简单看看就行):

  • 无常数项和趋势项:

  •  有常数项,无趋势项:

  •  有常数项和趋势项:

其中:

  • yt:时间序列在时间点 t 的值。

  • Δyt:一阶差分,\Delta y_{t}=y_{t}-y_{t-1}​。

  • α:常数项(截距)。

  • βt:时间趋势项(可选)。

  • γ:滞后项的系数,用于检验单位根。

  • ϕi​:差分滞后项的系数,用于控制序列相关性。

  • ϵt​:误差项。

  • p:滞后阶数。

关键步骤:确定滞后阶数(p)。常用信息准则法(如AIC或BIC),选择使信息准则最小的 p;也可以用自相关函数(ACF)和偏自相关函数(PACF),通过观察ACF和PACF图确定滞后阶数。

关键代码(python):

from statsmodels.tsa.stattools import adfuller

result = adfuller(timeseries, autolag='AIC')  # 使用AIC自动选择滞后阶数

# 输出p值
p_value = result[1]

# 根据p值,是否拒绝原假设(95%置信度)
if result[1] < 0.05:
    print("拒绝原假设:时间序列是平稳的")
else:
    print("不可拒绝原假设:时间序列是非平稳的")

局限性:

  • 对小样本数据敏感
  • 预先假设误差项为正态分布
  • 对滞后长度选择敏感(ADF检验需要选择合适的滞后长度)
  • 对季节性或周期性数据不敏感:可能无法准确判断具有季节性或周期性的时间序列的平稳性

解决方法:结合其他检验方法,比如KPSS检验、pp检验


 PP检验与ADF检验类似,但允许误差项存在自相关和异方差。PP检验通过构建一个包含滞后项和差分的模型,来检验时间序列是否存在单位根。

原假设与备择假设:与ADF检验的假设相同。

关键代码:

from statsmodels.tsa.stattools import adfuller

result = result = pp_test(x)  # 使用AIC自动选择滞后阶数

# 输出p值
p_value = result[1]

# 根据p值,是否拒绝原假设(95%置信度)
if result[1] < 0.05:
    print("拒绝原假设:时间序列是平稳的")
else:
    print("不可拒绝原假设:时间序列是非平稳的")

 PP检验与ADF检验的适用场景:

  • ADF检验:适用于误差项独立同分布的情况。

  • PP检验:适用于误差项存在自相关或异方差的情况。

(二)KPSS检验

与ADF检验不同,KPSS检验的原假设是时间序列是平稳的,而备择假设是时间序列存在单位根(非平稳),当然检验方法也肯定不同。

原假设与备择假设

  • 原假设(H0):时间序列是平稳的。

  • 备择假设(H1):时间序列存在单位根,即非平稳

检验步骤:

  • 计算时间序列的累积偏差序列。

  • 基于累积偏差计算KPSS统计量。

  • 将统计量与临界值进行比较,判断是否拒绝原假设

KPSS检验的类型:

  • 水平KPSS检验:检验时间序列是否围绕一个固定水平波动。适用于检测均值平稳性。

  • 趋势KPSS检验:检验时间序列是否围绕一个线性趋势波动。适用于检测趋势平稳性。

关键代码:

from statsmodels.tsa.stattools import kpss

# 水平KPSS检验。regression用于选择模型。
result = kpss(series, regression='c')    # 'c'表示在KPSS检验中,回归模型包含常数项而无趋势项
print(f"P-Value: {result[1]:.4f}")

# 趋势KPSS检验
result1 = kpss(series, regression='c')    # 'c'表示在KPSS检验中,回归模型包含常数项和趋势项
print(f"P-Value: {result1[1]:.4f}")

# 也是根据p值判断是否拒绝原假设

要点

在进行平稳性检验时,可以先用图检验方法简单地直观判断,再决定是否要用统计方法检验(ADF检验等),进行更准确的判断,还有就是最好将ADF与KPSS检验结合在一起用,提高判断的准确度。

# 文章如有错误,欢迎大家指正。我们下期再见

猜你喜欢

转载自blog.csdn.net/weixin_74268817/article/details/145520638
今日推荐