如果想知道一个序列是否对预测另一个序列有用,可以用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的最大值。

我们使用关于澳大利亚药物销售的数据集做预测,并利用Granger causality检测‘月份’这个序列是否对数据集的预测用。

from statsmodels.tsa.stattools import grangercausalitytests

df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/a10.csv', parse_dates=['date'])

df['month'] = df.date.dt.month

grangercausalitytests(df[['value', 'month']], maxlag=2)

输出结果: Granger Causality number of lags (no zero) 1 ssr based F test: F=54.7797 , p=0.0000 , df_denom=200, df_num=1 ssr based chi2 test: chi2=55.6014 , p=0.0000 , df=1 likelihood ratio test: chi2=49.1426 , p=0.0000 , df=1 parameter F test: F=54.7797 , p=0.0000 , df_denom=200, df_num=1 Granger Causality number of lags (no zero) 2 ssr based F test: F=162.6989, p=0.0000 , df_denom=197, df_num=2 ssr based chi2 test: chi2=333.6567, p=0.0000 , df=2 likelihood ratio test: chi2=196.9956, p=0.0000 , df=2 parameter F test: F=162.6989, p=0.0000 , df_denom=197, df_num=2

每个检验的p值都小于5%,所以可以说月份对澳大利亚药物销售的预测有用,或者说药物的销售可能存在季节性。

原文作者: 程序员一一涤生(云+社区)

python时间序列因果检验_用python做时间序列预测8:Granger causality test(格兰杰因果检验)...相关推荐

  1. python时间序列因果检验_用python做时间序列预测八:Granger causality test(格兰杰因果检验)...

    如果想知道一个序列是否对预测另一个序列有用,可以用Granger causality test(格兰杰因果检验). Granger causality test的思想 如果使用时间序列X和Y的历史值来 ...

  2. 用python做时间序列预测八:Granger causality test(格兰杰因果检验)

    如果想知道一个序列是否对预测另一个序列有用,可以用Granger causality test(格兰杰因果检验). Granger causality test的思想 如果使用时间序列X和Y的历史值来 ...

  3. python怎么做q检验_关于eviews做时间序列模型的残差Q统计量检验我决定写一些!...

    本文目的:1.做arima模型的时候你需要在模型拟合完之后做残差的Q统计量检验,但是你又不会看结果: 2.你会看结果,但是是否发现疑问:为什么直接在模型中选择残差检验中的Q统计量检验得出的结果与选择r ...

  4. python 分类变量xgboost_如何用XGBoost做时间序列预测?

    作者:Jason Brownlee翻译:wwl校对:王雨桐本文约3300字,建议阅读10分钟本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型 ...

  5. python大数据免费_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  6. python时间序列如何拟合曲线_【Python】keras使用LSTM拟合曲线

    keras生成的网络结构如下图: 代码如下: from sklearn.preprocessing import MinMaxScaler from keras.models import Seque ...

  7. python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

  8. 编程游戏python我的世界_乐学Python编程-做个游戏很简单

    1.进入Python 编程世界/ 2 1.1 启动Python 编程环境/ 5 1.2 Python 之禅/ 9 1.3 送你几朵玫瑰花--运行Python 程序/ 16 1.4 Python 的由来 ...

  9. 用python自动办公 百度_用Python自动办公,做职场高手,16章完整版百度云盘

    01.文件 [12.20更新课程代码]用Python自动办公做职场高手.rar [课程代码]从零写Python练手项目:实用脚本.zip [课程代码]四周实现爬虫网站.zip [课程代码]用NumPy ...

最新文章

  1. 线程的调度有抢占式或者非抢占 (转)
  2. 准备踏入Android开发的道路
  3. Ubuntu 16.04下Caffe-SSD的应用(一)——编译Caffe-SSD的CPU版本与GPU版本
  4. 深入Eureka/Feign/Hystrix原理学习(1)
  5. Linux系统时间与RTC时间【转】
  6. BZOJ #2874. 训练士兵(差分+离散化+主席树)
  7. 作者:石勇(1956-),男,中国科学院大学经济管理学院教授、博士生导师
  8. php 使用支付宝SDK报错解决
  9. 企业云网络安全解决方案的10条评估标准
  10. 华为网络篇 华为路由器的初始化配置-05
  11. 抖音短视频内容该如何创作
  12. python2/3 opencv的fitline函数
  13. postgresql 计算时间差
  14. Verilog HDL|实验项目六例
  15. FileInfo,DirectoryInfo
  16. Spire.XLS教程:在 Java 中接受或拒绝所有跟踪更改
  17. 如何利用 C# + KDTree 实现 K 最邻近算法?
  18. 苯酚物理化学性质及用途
  19. Python机器学习基础篇二《监督学习》
  20. Laravel源码解析之契约

热门文章

  1. 算法很美第一章 位运算的奇巧淫技
  2. es6--let和const
  3. 空巡店android,YGF巡店系统
  4. CodeForces-1062E LCA,DFN,RMQ
  5. python求平均值,python 怎么求平均值
  6. 照片损坏怎么办,怎么恢复受损照片
  7. edvac是商用计算机吗,计算机系统发展历程.ppt
  8. win10 共享热点
  9. 冬天别忘晒太阳[整理]
  10. Matlab论文插图绘制模板第69期—带误差棒的折线图(Errorbar)