格兰杰因果关系检验的结论是一种统计估计,它先假设时间序列之间没有因果关系, 然后检验能否否定,如果能否定这个检验,那么这就可以验证这份时间序列数据对想要预测的目标是有效的。

目标使用b预测a,a是要得出预测结果的序列:

from statsmodels.tsa.stattools import grangercausalitytests
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0, 100, size=(10, 2)), columns=['a', 'b'])
grangercausalitytests(df[['a', 'b']], maxlag=2)

得到结果:

ssr based F test:         F=1.8500  , p=0.2227  , df_denom=6, df_num=1
ssr based chi2 test:   chi2=2.7750  , p=0.0957  , df=1
likelihood ratio test: chi2=2.4188  , p=0.1199  , df=1
parameter F test:         F=1.8500  , p=0.2227  , df_denom=6, df_num=1

Granger Causality
number of lags (no zero) 2
ssr based F test:         F=0.5091  , p=0.6451  , df_denom=3, df_num=2
ssr based chi2 test:   chi2=2.7152  , p=0.2573  , df=2
likelihood ratio test: chi2=2.3377  , p=0.3107  , df=2
parameter F test:         F=0.5091  , p=0.6451  , df_denom=3, df_num=2

主要看p值(第二列),所有的p小于0.05才能证明b对a有效

有时可以把x与y的顺序调过来,说不定是x=f(y)

grangercausalitytests(df[['b', 'a']], maxlag=2)

各项指标含义

number of lags (no zero) 1:当lags为1时的检测结果
ssr based F test:残差平方和F检验
ssr based chi2 test:残差平方和卡方检验
likelihood ratio test:似然比检验结果
parr F testamete:参数 F 检验结果

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐