第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图,把本章的核心逻辑串起来。你看完应该能一目了然。
1.7 避坑指南
我曾经犯过一个低级错误,说出来你们别笑。有一次做汇率分析,我直接用ADF检验判断序列是否平稳。结果检验说序列是平稳的,我就当白噪声处理了。后来发现,那个序列其实是趋势平稳的,不是白噪声。
趋势平稳和随机游走的区别,咱们后面章节会细讲。这里先记住一条:
重要提醒:不要把「平稳」和「白噪声」划等号。平稳序列可以有很多种,白噪声只是其中最简单的一种。AR(1)模型在|φ|<1时是平稳的,但它不是白噪声——因为它的值跟过去有关。
嗯,今天就先聊到这儿。白噪声和随机游走是时间序列分析的两大基石,搞懂了它们,后面学协整、误差修正模型都会轻松很多。
记住一句话:白噪声的冲击是过眼云烟,随机游走的冲击是刻骨铭心。