第1章:白噪声 vs 随机游走——AR(1)模型的冲击响应

大家好,我是你们的老朋友。今天咱们来聊聊时间序列分析里最基础、也最容易搞混的两个概念——白噪声随机游走

说实话,我刚开始做宏观分析那会儿,也在这上面栽过跟头。有一次做GDP增长率预测,我把一个随机游走过程当成了白噪声来处理,结果模型跑出来完全不对。后来复盘才发现,问题就出在对冲击响应的理解上。

嗯,咱们今天就从AR(1)模型入手,把这两个东西彻底掰扯清楚。

1.1 白噪声:纯粹的随机性

白噪声,说白了就是完全随机的序列。每个时间点的值跟过去没有任何关系,就像你抛硬币——这次是正面,下次还是正面?不一定,完全独立。

数学上,白噪声序列 ε_t 满足:

  • E(ε_t) = 0(均值为零)
  • Var(ε_t) = σ²(方差恒定)
  • Cov(ε_t, ε_{t-k}) = 0(任意滞后阶数都不相关)

你想想看,如果某个经济指标的变动是白噪声,那意味着什么?意味着你没法用过去的数据预测未来。今天涨了,明天可能跌,也可能继续涨,完全没规律。

核心要点:白噪声的冲击是一次性的。今天的冲击只影响今天,明天就消失了。

1.2 随机游走:冲击的永久性

随机游走就完全不一样了。它的定义是:

y_t = y_{t-1} + ε_t

这里的 ε_t 是白噪声。但你看,y_t 的值等于上一期的值加上一个随机冲击。这意味着什么?

今天的冲击会永远留在序列里。我举个例子你就明白了:

假设 y_0 = 100,然后 ε_1 = 5,ε_2 = 0,ε_3 = -3。那么:

  • y_1 = 100 + 5 = 105
  • y_2 = 105 + 0 = 105
  • y_3 = 105 - 3 = 102

看到了吗?第一次的+5冲击,到了第三期还在影响y的值。这就是永久冲击

注意:随机游走是非平稳的。它的方差会随时间无限增大。很多经济指标,比如股票价格、汇率,都表现出随机游走的特征。

1.3 AR(1)模型:连接两者的桥梁

AR(1)模型长这样:

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

这里的 φ 是自回归系数。你猜猜看,当 φ 取不同值时,会发生什么?

φ 的取值 模型性质 冲击响应
φ = 0 白噪声 冲击立即消失
0 < |φ| < 1 平稳AR(1) 冲击指数衰减
φ = 1 随机游走 冲击永久存在
|φ| > 1 爆炸性过程 冲击放大

我个人习惯用这个表格来快速判断。你看,φ=0 就是白噪声,φ=1 就是随机游走。中间的平稳AR(1)过程,冲击会慢慢衰减,但不会完全消失——至少理论上是这样。

1.4 冲击响应函数:直观理解

咱们用数学推导一下。对于AR(1)模型:

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

如果初始 y_0 = 0,在 t=1 时施加一个单位冲击 ε_1 = 1,之后 ε_t = 0(t≥2)。那么:

  • y_1 = 1
  • y_2 = φ × 1 = φ
  • y_3 = φ × φ = φ²
  • ...
  • y_k = φ^{k-1}

这就是冲击响应函数。它告诉你:一个冲击发生后,随着时间的推移,它对序列的影响是如何变化的。

实战技巧:我在做宏观经济预测时,经常用这个来判断政策冲击的持续性。比如央行加息,如果利率是平稳AR(1)过程,那加息的影响会逐渐消退;如果是随机游走,那加息的影响就是永久性的。

1.5 代码示例:模拟三种过程

光说不练假把式。咱们用Python跑个模拟,看看这三种过程长什么样。

import numpy as np
import matplotlib.pyplot as plt

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

# 生成白噪声
n = 100
white_noise = np.random.normal(0, 1, n)

# 生成随机游走
random_walk = np.zeros(n)
for t in range(1, n):
    random_walk[t] = random_walk[t-1] + np.random.normal(0, 1)

# 生成平稳AR(1),φ=0.7
ar1 = np.zeros(n)
for t in range(1, n):
    ar1[t] = 0.7 * ar1[t-1] + np.random.normal(0, 1)

# 绘制
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
plt.plot(white_noise)
plt.title('白噪声 (φ=0)')
plt.subplot(3, 1, 2)
plt.plot(ar1)
plt.title('平稳AR(1) (φ=0.7)')
plt.subplot(3, 1, 3)
plt.plot(random_walk)
plt.title('随机游走 (φ=1)')
plt.tight_layout()
plt.show()

你跑一下这段代码,会看到:白噪声像心电图一样上下乱跳,但始终围绕0波动;平稳AR(1)也有波动,但会向均值回归;随机游走则像喝醉了酒,越走越远,没有回归的趋势。

1.6 知识体系图

下面我用一张SVG图,把本章的核心逻辑串起来。你看完应该能一目了然。

AR(1)模型冲击响应知识体系 AR(1): y_t = φ y_{t-1} + ε_t φ=0:白噪声 0<|φ|<1:平稳AR φ=1:随机游走 冲击响应:一次性 冲击只影响当期 下一期完全消失 冲击响应:指数衰减 冲击影响逐渐减弱 最终回归均值 冲击响应:永久性 冲击永远留在序列中 方差随时间增大 核心结论 φ=0 → 临时冲击(白噪声) | 0<|φ|<1 → 衰减冲击(平稳AR) | φ=1 → 永久冲击(随机游走) 判断一个时间序列的性质,关键看自回归系数φ的取值

1.7 避坑指南

我曾经犯过一个低级错误,说出来你们别笑。有一次做汇率分析,我直接用ADF检验判断序列是否平稳。结果检验说序列是平稳的,我就当白噪声处理了。后来发现,那个序列其实是趋势平稳的,不是白噪声。

趋势平稳和随机游走的区别,咱们后面章节会细讲。这里先记住一条:

重要提醒:不要把「平稳」和「白噪声」划等号。平稳序列可以有很多种,白噪声只是其中最简单的一种。AR(1)模型在|φ|<1时是平稳的,但它不是白噪声——因为它的值跟过去有关。

嗯,今天就先聊到这儿。白噪声和随机游走是时间序列分析的两大基石,搞懂了它们,后面学协整、误差修正模型都会轻松很多。

记住一句话:白噪声的冲击是过眼云烟,随机游走的冲击是刻骨铭心


无相订单流研究社 微信Lucian808555