python实现格兰杰因果关系检验

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

目标使用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

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

参考值:主要看p值,p小于0.05才能证明b对a有效

其他参考文章
https://www.biaodianfu.com/granger-causality-test.html

你可能感兴趣的:(python,python,开发语言,后端)