如果想知道一个序列是否对预测另一个序列有用,可以用Granger causality test(格兰杰因果检验)。
Granger causality test的思想
如果使用时间序列X和Y的历史值来预测Y的当前值,比仅通过Y的历史值来预测Y的当前值得到的误差更小,并且通过了F检验,卡方检验,则X对Y的预测是有一定帮助的。
了解了Granger causality test的思想之后会发现,其实Granger causality test最多能推断出X对Y的预测是有一定帮助的,至于是否能说X和Y是因果关系,则不一定。
进一步了解可以去这里:https://www.zhihu.com/question/34787362
python代码
python的statsmodel包的grangercausalitytests函数中提供了很好的实现。
- 该方法接收一个包含2列的2维的数组作为主要参数:
第一列是当前要预测未来值的序列A,第二列是另一个序列B,该方法就是看B对A的预测是否有帮助。该方法的零假设是:B对A没有帮助。如果所有检验下的P-Values都小于显著水平0.05,则可以拒绝零假设,并推断出B确实对A的预测有用。- 第二个参数maxlag是设定测试用的lags的最大值。
- 我们使