多元序列与因果
两条曲线一起涨,这句话本身什么都没说。可能是 A 带动 B,可能是 B 带动 A,可能有一个看不见的 C 同时带动了两个,也可能两条各自随机游走、纯属巧合。这一页把这四种情况分别造出来,看统计方法能分辨到哪一步、在哪儿会失手。
LAB 01
互相关与领先滞后
把一条序列左右平移,看相关系数在哪个滞后阶最大
互相关最大的滞后阶—
真实的滞后阶—
峰值的相关系数—
95% 置信带的宽度—
互相关函数是回答"谁领先谁"最直接的工具。做法是把一条序列整体平移各种步数,每次算一次相关系数,然后看哪个平移量给出最大值。默认参数下真实滞后是 7,峰值也准确地落在 7。但这个工具有一个非常容易踩的坑:如果两条序列自身都有强自相关,互相关图会一片高,峰变得很宽很钝。把"x 自身的持续性"从 0.7 拖到 0.9 试试:峰的位置还在,但两侧的值也跟着抬起来了,如果噪声再大一点,你就分不出峰到底在 6、7 还是 8。标准的对策叫预白化:先给 x 拟合一个 AR 模型,把它变成白噪声,再用同一个滤波器处理 y,最后对这两组残差算互相关。这样得到的图峰会尖锐得多,置信带也才是正确的。另一个更大的坑:互相关完全不区分"领先"和"引起"。公鸡打鸣领先日出,冰淇淋销量领先溺水人数,这些序列的互相关都很漂亮。领先只是一个时间顺序上的事实,而因果需要额外的论证。下一个实验台会给出一个更严格(但仍然不够)的定义。
LAB 02
VAR 模型
两条序列互相解释,脉冲响应显示一次冲击传了多久
估出来的 x 方程系数 / 真值—
估出来的 y 方程系数 / 真值—
x 自己的冲击衰减一半要多久—
y 受到的影响在什么时候最大—
VAR 的想法非常朴素:让每个变量都对"所有变量的历史"做回归。两个变量、滞后一阶,就是两个方程、四个系数,用普通最小二乘分别估就行——读数前两行里估计值和真值贴得很紧,说明这件事不难。难的是怎么读懂它。四个系数本身不好解释,所以标准做法是画脉冲响应:假设某一期给 x 一个单位的意外冲击,然后让模型自己往前跑,看两个变量各自怎么反应。图上蓝线是 x 自己的衰减,橙线是这个冲击传到 y 身上的过程——注意它通常不是立刻最大,而是过几期才见顶,然后慢慢消退。这个"先升后降"的形状,正是宏观经济学里描述政策传导的标准语言:加息之后,通胀不会当月就下来,而是几个季度后见效。把"y 对 x 的影响"(第二个滑杆)从 0 拖到正数:反馈回路建立了起来,衰减会变慢,甚至出现来回震荡的响应。拖到足够大时系统会不稳定——对应的数学条件是 VAR 系数矩阵的特征值必须都在单位圆内,和差分方程那一页里的稳定性判据是同一件事。(要提醒的是:脉冲响应的解释依赖于"冲击是怎么定义的"。这里用的是最朴素的形式;实际研究中还要处理同期相关,这就是 Cholesky 分解、结构 VAR 之类做法的由来,而它们各自都需要额外的假设。)
LAB 03
格兰杰因果
加上对方的历史能不能显著降低预测误差——以及为什么这不叫因果
x → y 的 F 统计量—
y → x 的 F 统计量—
大致的显著门槛—
结论—
格兰杰因果给了一个可以计算的定义:如果在预测 y 的时候,加上 x 的历史能显著降低误差,就说 x 格兰杰引起 y。做法是比较两个回归的残差平方和:只用 y 自己的历史,和同时用 y 与 x 的历史,然后做一个 F 检验。先把共同驱动因素调到 0,把影响强度设成 0.6。F(x→y) = 74.9,F(y→x) = 0.46——方向干干净净,正是我们希望看到的。再把影响强度设成 0:两个 F 都掉到 3 以下,也正确。现在把共同驱动因素拖到 0.9,同时把影响强度设回 0。x 和 y 之间根本没有直接联系,可是两个方向的 F 都显著了(8.7 和 14.1)。原因是那个看不见的 z:它有自相关,所以 x 的历史里含有关于 z 的信息,而 z 又影响着 y 的未来——于是 x 的历史"确实"能帮着预测 y。这就是格兰杰因果最重要的局限:它检验的是预测能力,不是因果。格兰杰本人非常清楚这一点,这个名字是后人叫开的。实践中的经验判据是:如果两个方向都显著,第一反应应该是"有没有共同驱动因素",而不是"它们互为因果"。(另外两个常见的失手场景:序列不平稳时 F 检验的分布不对,要先差分或做协整检验;真实的因果延迟比你选的滞后阶数长时,检验会漏掉它。)
LAB 04
伪回归与协整
两条独立的随机游走能跑出 0.9 的 R²,差分或协整检验才救得回来
直接回归的平均 R²—
差分后回归的平均 R²—
直接回归 R²>0.5 的比例—
差分后 R²>0.5 的比例—
先选"完全独立的两条随机游走",然后读那四个数。这两条序列在生成时没有任何联系,可是直接回归的平均 R² 是 0.24,而且有 16%–18% 的配对能跑出 R² > 0.5。如果你手上正好是这样一对,画出来的散点图会漂亮得让人想写论文。更要命的是:把序列长度从 100 加到 1000,这个比例几乎不变(18.5% → 15.8%)。这和一般的统计直觉正好相反——通常样本越多越可靠,而伪回归的问题不会随样本量消失。这就是 Granger 和 Newbold 1974 年那篇著名论文的结论。根源在于随机游走不平稳:它的方差随时间增长,没有均值可回归,于是"两条都在漂"这件事本身就会制造相关。差分之后一切正常:平均 R² 掉到 0.001,超过 0.5 的比例是 0%。现在换成"协整的一对"。这时两条序列各自仍然不平稳(都在乱走),但它们的某个线性组合是平稳的——差距被一根看不见的皮筋拉着。这种情况下直接对原序列回归反而是对的、有意义的,而机械地差分会把这个长期关系洗掉。所以正确的流程是:先检验平稳性,不平稳则检验协整,有协整用误差修正模型,没有协整才差分。"看到不平稳就差分"和"看到 R² 高就相信",是两个方向相反的错误。
这一页想说的
多元时间序列的核心难题不是拟合,是解释。互相关能告诉你谁领先,但领先不是引起;格兰杰因果能算出一个显著性,但它检验的是预测能力,共同驱动因素会让两个方向同时显著;VAR 的脉冲响应给出传导的形状,但依赖冲击如何定义;而最容易被忽略的是平稳性:两条独立的随机游走有近两成的概率跑出 R²>0.5,而且不随样本量消失。