记录
https://zhuanlan.zhihu.com/p/79936875
简单介绍了格兰杰因果,是强调时间序列的因果关系,其出发点在于变量B存在与否,对变量A取值概率大小会发生影响,则B是A的因。
没有介绍具体的算法。
https://zhuanlan.zhihu.com/p/24647310
指出格兰杰因果检验需要证明随机变量是平稳序列(因为要用到F统计)
引出了新的概念:F统计检验,平稳序列
F统计检验又称联合假设检验,在零假设下,统计值服从F分布的检验。
https://blog.csdn.net/baimafujinji/article/details/6496224
有具体的公式和案例
首先需要零假设$H_0$:X不是引起Y变化的Granger原因
无约束回归模型(u):
$$
Y_t=\alpha_0 + \sum_{i=1}^p \alpha_i Y_{t-i} +\sum_{i=1}^q \beta_i X_{t-i} + \epsilon_t
$$
有约束回归模型(r):
$$
Y_t=\alpha_0 + \sum_{i=1}^p \alpha_i Y_{t-i} + \epsilon_t
$$
其中p,q为最大滞后期数,$\epsilon_t$为白噪声
记n为样本容量,二者的残差平方和为$RSS_u$和$RSS_r$,则可构造F统计量(残差平方和为点与回归线之间的距离的平方和)
$$
F=\frac{(RSS_r-RSS_u)/q}{RSS_u/(n-p-q-1)}
$$
可认为$H_0$的检验为检验$\beta_0=\beta_1=…=\beta_q=0$是否成立
若$F\geq F_\alpha(q,n-p-q-1)$则$\beta_1..\beta_q$显著不为0,拒绝其为Granger因
再反过来,检验Y不是引起X变化的原因,从而得到X是Y的Granger原因
https://www.cnblogs.com/hdu-zsk/p/7235200.html
有详细的步骤,并且将格兰杰因果的条件检验和标准流程都列出来了,适合作为实现的参考。
https://pengfoo.com/post/machine-learning/2017-01-24
格兰杰因果检验要求随机变量是平稳的,平稳要求没有单位根,这里介绍了Python利用ADF检验来检测单位根的方法
(网上找到的大多数都是直接调库,没发现原理解释的)
https://zhuanlan.zhihu.com/p/21566798
除了差分外,协整也可以是让随机变量变成平稳的方法
https://github.com/h-cel/ClimateVegetationDynamics_GrangerCausality/tree/691b7a1979144be8e7fd64beab338bbab93ce0f0
github上找到的实现,方法是随机森林回归加上K-Fold交叉验证后的r2_score
https://github.com/USC-Melady/Granger-causality
使用的方法是Lasso Granger,查了下,相关描述是:Lasso-Granger is an efficient algorithm for learning the temporal dependency among multiple time series based on variable selection using Lasso.
Reference:A. Arnold, Y. Liu, and N. Abe.Temporal causal modeling with graphical granger methods. In KDD, 2007.
https://github.com/statsmodels/statsmodels/blob/1212616d27ab820d303377f0bcf421cd3f46c289/statsmodels/tsa/vector_ar/vecm.py
发现库内有实现,根据这里的类关系,格兰杰因果关系测试与向量误差修正模型(VECM)有关
杂语
网络上大部分人认为格兰杰因果检验不能检验因果关系,只是检验时间先后关系,或者说,可预测性。