本文主要阐述Granger Causality,即格兰杰因果关系在时间序列预测中的应用。
本系列前面的文章中,我们讨论过了时序分析预测的多种方法,包括单变量时序问题和多变量时序问题。我们也讨论过了时序的分解:趋势、周期和随机噪声。预测时序在未来某个时间点的值是时序预测问题的常见问题,时序预测问题经常会使用机器学习方法,在金融、天气预报、医疗、商务和零售等领域都有很多应用。
在实际问题中,时序预测问题通常涉及多个变量,而各个变量之间经常存在依赖关系。这种依赖关系经常会对预测结果产生严重的影响,尤其是业界常用的多元回归方法,人们通常会被误导,结果的决定性系数很高,但实际上所训练的模型是非常不可靠的。为了进一步理解这种误导所带来的问题,让我们看一个例子:
线性回归通常会揭示变量之间的线性关系,但很可能实际上这种关系根本不存在。领域知识会告诉我们预测模型完全无用,这种现象称为伪回归。请见下图:
从上图中可以看到,鸡肉的消费量和原油的出口呈现很强的相关性,但这是完全不符合逻辑的。
伪回归中经常会呈现明显的趋势、非平稳时序和较高的决定性系数。我们需要在构建模型时消除伪回归,因为所得出的结果既没有相关性也不具备因果性。可能有的读者会说,在构建多元回归模型时需要观察变量之间的相关矩阵,如果出现两个自变量之间的相关系数较高,那么会留下一个变量而剔除另外一个以达到消除自变量之间的依赖关系。但是这种方式并不能完全解决这个问题,因为如果时序数据中的时间是一个干扰因素(confounding factor)或者潜在变量(lurking variable),那么前面所说的计算的相关系数很可能存在时间区间限制问题,换句话说就是它只是测量了两个自变量之间的关系而已,并没有充分考虑它们与时间的关系。为了清晰解释这个问题,请看下面维基百科上的图:
上图中,时序X对时序Y显然有很直接的影响,但是它们大概差了5个时间点。这种情况下,相关系数失效。
注:本文中会提到一些时序分析的基本概念,读者可自行查阅其他文档或参见本人时序分析其他系列文章。
格兰杰因为发展了因果概念来提高经济学上的时序预测的效果而在2003年获得了诺贝尔经济学奖,但这个因果概念依然不是人类逻辑学上的因果关系,而是预测上的因果关系(predictive causality),所以才会被称为格兰杰因果关系。
我们首先从直观上理解一下:如果一个时序变量X是另外一个时序变量Y的格兰杰因(Granger-Causes, 又称为G-Causes),那么说明利用Y过去的信息和X过去的信息来预测Y的效果要好于只使用Y过去的信息。也就是说,X现在和过去的信息包含了关于Y的某种信息。
格兰杰因果关系有两个原则:
我们给出格兰杰因果关系的数学定义:
如果有一下两个自回归建模的时序变量,
X 1 ( t ) = ∑ j = 1 p A 11 , j X 1 ( t − j ) + ∑ j = 1 p A 12 , j X 2 ( t − j ) + E 1 ( t ) X_1(t) = \sum_{j=1}^p{A_{11,j}X_1(t-j)} + \sum_{j=1}^p{A_{12,j}X_2(t-j)+E_1(t)} X1(t)=j=1∑pA11,jX1(t−j)+j=1∑pA12,jX2(t−j)+E1(t)
X 2 ( t ) = ∑ j = 1 p A 21 , j X 1 ( t − j ) + ∑ j = 1 p A 22 , j X 2 ( t − j ) + E 2 ( t ) (1) \tag{1}X_2(t) = \sum_{j=1}^p{A_{21,j}X_1(t-j)} + \sum_{j=1}^p{A_{22,j}X_2(t-j)+E_2(t)} X2(t)=j=1∑pA21,jX1(t−j)+j=1∑pA22,jX2(t−j)+E2(t)(1)
上式中, 是自回归阶数, 为系数矩阵, 为残差。
如果在 X 1 X_1 X1 的自回归模型中加入了 X 2 X_2 X2 ,而导致了 E 1 E_1 E1 的方差的减少,那么我们说 X 2 X_2 X2 是 X 1 X_1 X1 的格兰杰原因,即G-Causes。换句话说,如果系数 A 12 A_{12} A12 具有统计显著意义地区别于0,那么说 X 2 X_2 X2 是 X 1 X_1 X1 的格兰杰原因。可以通过F检验来进行假设检验(请看下节)。
格兰杰因果检验(Granger Causality test),是一种统计检验法用来检验一个时序变量是否对预测另一个时序变量有显著意义,或者说是否存在G-Causes关系。它有一个先决条件就是时序必须是平稳的。下面简单介绍一下这种检验法的基本原理。
假设我们时序数据中有三个变量,,,考虑下面三种情况:
,这里 为阶数。
情况2中 的数据蕴含了预测 +1 的信息,如果这是事实,那么说 Y t Y_t Yt 是 X t + 1 X_{t+1} Xt+1 的G-Causes。数学模型如下:
X t = α + γ 1 X t − 1 + γ 2 X t − 2 + ⋯ + γ X t − p + α 1 Y t − 1 + ⋯ + α Y t − p X_t = \alpha + \gamma_1 X_{t-1} + \gamma_2X_{t-2} + ⋯ + \gamma_X_{t-p} + \alpha_1Y_{t-1}+ ⋯ + \alpha_ Y_{t-p} Xt=α+γ1Xt−1+γ2Xt−2+⋯+γpXt−p+α1Yt−1+⋯+αpYt−p,自由度为 2 p 2p 2p 。
如果 Y t Y_t Yt 是 X t X_t Xt 的G-Causes,那么 Y Y Y 必定走在 X X X的前面并且意味着:
原假设( H 0 H_0 H0): Y t Y_t Yt 对 X t + 1 X_{t+1} Xt+1 不存在格兰杰因果关系,或者说 α 1 = α 2 = ⋯ = α = 0 \alpha_1 = \alpha_2 = \dots = \alpha_ = 0 α1=α2=⋯=αp=0
备选假设( H A H_A HA): Y t Y_t Yt 对 X t + 1 X_{t+1} Xt+1 存在格兰杰因果关系,或者说至少有一个滞后值具备统计显著意义。
计算F统计量:
F p , n − 2 p − 1 = 可 解 释 方 差 不 可 解 释 方 差 F_{p,n-2p-1} = \frac{可解释方差}{不可解释方差} Fp,n−2p−1=不可解释方差可解释方差
F p , n − 2 p − 1 = ( S S E R M − S S E U M ) p S S E U M ( n − 2 p − 1 ) F_{p,n-2p-1} = \frac{\frac{(SSE_{RM}-SSE_{UM})}{p}}{\frac{SSE_{UM}}{(n-2p-1)}} Fp,n−2p−1=(n−2p−1)SSEUMp(SSERM−SSEUM)
这里 n n n 是观察值的个数,SSE是Sum of Squared Errors。
S S E R M SSE_{RM} SSERM 是情况1下的SSM, S S E U M SSE_{UM} SSEUM 是情况2下的SSM。
可以尝试不同的阶数 p p p ,通过BIC( Bayesian Information Criterion )和AIC(Akaike Information Criterion)来决定。