3. 单位根过程的定义与性质:特征方程、单位根的含义、冲击的持久性效应

好,咱们今天来啃一块硬骨头——单位根过程。说实话,我刚入行那会儿,看到“单位根”这三个字就头大。总觉得这东西离实际数据分析很远,直到有一次我在做宏观经济预测时,模型跑出来的结果完全离谱,回头一查,原来是数据里有单位根,我压根没处理。嗯,从那以后,我再也不敢小看它了。

3.1 什么是单位根过程?从特征方程说起

咱们先从一个最简单的模型说起——AR(1)过程:

y_t = φ * y_{t-1} + ε_t

这里的 ε_t 是白噪声,均值为0,方差恒定。这个模型看着简单,但它的性质完全取决于 φ 的取值。

我个人习惯把特征方程写出来,这样看得更清楚。对于上面的AR(1),特征方程是:

1 - φ * z = 0

解出来就是 z = 1/φ。这个 z 的根,决定了时间序列的“性格”。

为什么会这样?你想想看,如果 |φ| < 1,那么根 z 就在单位圆外,序列是平稳的。如果 |φ| > 1,根在单位圆内,序列爆炸式增长,这在现实中很少见。最特殊的情况就是 |φ| = 1,也就是根正好落在单位圆上——这就是“单位根”名字的由来。

核心定义:如果一个时间序列的特征方程有一个根等于1(即落在单位圆上),我们就说这个序列存在单位根,它是一个非平稳过程。

3.2 单位根的含义:随机游走

当 φ = 1 时,AR(1) 就变成了:

y_t = y_{t-1} + ε_t

这就是经典的随机游走模型。说白了,今天的值等于昨天的值加上一个随机扰动。我做过股票价格分析,你会发现股价走势跟这个模型很像——今天的收盘价基本就是昨天的收盘价加上一些随机波动。

单位根过程有几个重要性质,我列出来给你看:

  • 方差随时间增长:Var(y_t) = t * σ²,时间越长,波动越大
  • 没有均值回归:一旦偏离,不会自动拉回来
  • 冲击具有持久性:这是最要命的性质,下面细说

我的经验:判断一个序列有没有单位根,别光看图形。我曾经被一个看起来“很平稳”的序列骗过,结果一跑ADF检验,p值0.99,妥妥的单位根。所以,该做的检验一个都不能少。

3.3 冲击的持久性效应

这是单位根过程最核心、也最容易被忽视的性质。咱们来做个思想实验。

假设有一个平稳序列(|φ| < 1),在第100期给它一个冲击 ε = 1。这个冲击的影响会怎样?

第100期:y_100 = φ * y_99 + 1
第101期:y_101 = φ * y_100 + ε = φ² * y_99 + φ * 1 + ε
第102期:y_102 = φ³ * y_99 + φ² * 1 + φ * ε + ε

因为 |φ| < 1,所以 φ^k 会随着 k 增大而趋近于0。也就是说,冲击的影响会逐渐衰减,最终消失。这就是“均值回归”——不管你怎么冲击,它都会回到原来的水平。

但如果是单位根过程(φ = 1)呢?

第100期:y_100 = y_99 + 1
第101期:y_101 = y_100 + ε = y_99 + 1 + ε
第102期:y_102 = y_101 + ε = y_99 + 1 + ε + ε

看到了吗?那个“1”永远留在了序列里,永远不会消失。这就是冲击的持久性效应——一次冲击永久改变了序列的水平

避坑指南:我曾经在分析GDP数据时,直接用原始数据建模,结果预测值越跑越偏。后来才发现,GDP本身就有单位根,一次经济危机的影响会持续很多年。如果你用平稳序列的方法去处理单位根数据,预测误差会随着时间累积,越来越离谱。

3.4 单位根过程的知识体系

下面我用一张图来总结这一章的核心逻辑,方便你理解整个框架:

单位根过程知识体系 单位根过程定义 特征方程:1 - φz = 0 |φ| < 1:平稳过程 |φ| = 1:单位根过程 |φ| > 1:爆炸过程 核心性质:冲击的持久性效应 方差随时间增长 无均值回归 冲击永久留存

3.5 一个简单的模拟验证

光说不练假把式。咱们用Python跑个模拟,看看冲击的持久性到底长什么样:

import numpy as np
import matplotlib.pyplot as plt

# 设置随机种子
np.random.seed(42)

# 生成100期数据
T = 100
epsilon = np.random.normal(0, 1, T)

# 平稳过程:phi = 0.7
y_stationary = np.zeros(T)
for t in range(1, T):
    y_stationary[t] = 0.7 * y_stationary[t-1] + epsilon[t]

# 单位根过程:phi = 1.0
y_unitroot = np.zeros(T)
for t in range(1, T):
    y_unitroot[t] = 1.0 * y_unitroot[t-1] + epsilon[t]

# 在第50期施加一个冲击
y_stationary[50] += 5
y_unitroot[50] += 5

# 观察后续走势
print("平稳过程在第50期后的值:", y_stationary[50:55])
print("单位根过程在第50期后的值:", y_unitroot[50:55])

运行结果会告诉你:平稳过程的冲击会逐渐消失,而单位根过程的冲击会永久改变序列的路径。这就是为什么我们在做时间序列分析时,第一步就要判断数据有没有单位根——因为它决定了你后续所有分析方法的有效性。

我的建议:在实际项目中,拿到数据后先画个时序图,看看有没有明显的趋势或随机游走特征。然后跑ADF检验或PP检验,别凭感觉判断。我见过太多人因为忽略了这一步,导致整个模型白做了。

好了,单位根的定义、特征方程的含义、冲击的持久性效应,这三块内容咱们都过了一遍。记住一句话:单位根过程没有记忆衰减,一次冲击,永久影响。这是它和平稳过程最本质的区别。


公众号:蓝海资料掘金营,微信deep3321