使用python做格兰杰因果检验

本文介绍了如何使用格兰杰因果性检验来判断两个时间序列变量间是否存在因果关系,通过实例展示了如何解读统计结果并确定变量b对a的有效预测。关键步骤包括设置检验、查看p值和选择合适的滞后阶数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

目标使用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 检验结果

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值