数据分析——比特币与以太币有因果关系吗?(格兰杰因果关系检验)

昨日,一位朋友来问我格兰杰因果关系检验的操作问题,帮助完后发现,格兰杰因果关系检验非常具有实际意义,今天通过比特币的案例分享给大家。

本篇文章将会给大家介绍格兰杰因果关系检验的理论原理和python操作流程。

Python操作流程

导入数据

首先,我们需要加载所需的包,并导入数据

import pandas as pd
import statsmodels.tsa.stattools as sm
data = pd.read_csv('F:\\公众号\\python\\【案例】数据分析---格兰杰因果关系检验\\虚拟货币数据.csv',header = 0)

在这里插入图片描述
说明:
pd.read_csv(filepath_or_buffer,header=0,names=None)
(1)filepath_or_buffer : 路径 URL 可以是http, ftp, s3, 和 file;
(2)header:指定第几行作为列名(忽略注解行),如果没有指定列名,默认header=0; 如果指定了列名header=None;
(3)names:指定列名,如果文件中不包含header的行,应该显性表示header=None。
pd.read_csv()的其它参数的介绍可看文末链接

格兰杰因果关系检验

接下来,就可以利用统计工具包里的.grangercausalitytests()进行检验了,这里呢我就以比特币(BTC)和以太币(ETC)来进行检验,其它的检验可由读者们自行操作。
首先,我们先以BTC为“果”,以ETC为“因”进行检验

result_1 = sm.grangercausalitytests(data[['BTC','ETC']],25)

在这里插入图片描述
从结果可以发现,不论滞后多少期,都没有足够的证据拒绝原假设,说明以太币都不是比特币价格的影响原因;

紧接着我们再以ETC为“果”,以比特币为“因”进行检验:

result_2 = sm.grangercausalitytests(data[['BCH','BTC']],25)

在这里插入图片描述
我们发现,在滞后期为6、7、8时,拒绝了原假设,说明比特币是以太币价格的影响原因。

使用grangercausalitytests()时常见的错误

在这次案例的过程中,曾发生过一个错误,因为比特币的数据文件里的数据储存是按货币的规则储存,即:
在这里插入图片描述
因此在使用grangercausalitytests()时产生了下图的报错:
在这里插入图片描述
这是因为数据文件中的数字包含了其它符号例如“,”,无法将该字符串转换为浮点类型的数字,所以在导入数据前,各位小伙伴务必先检查数据。

格兰杰因果关系检验理论原理

格兰杰因果关系检验介绍

格兰杰因果关系检验方法为2003年诺贝尔经济学奖得主克莱夫·格兰杰(Clive W. J. Granger)所开创,用于分析经济变量之间的格兰杰因果关系。

在时间序列情形下,两个经济变量X、Y之间的格兰杰因果关系定义为:若在包含了变量X、Y的过去信息的条件下,对变量Y的预测效果要优于只单独由Y的过去信息对Y进行的预测效果,即变量X有助于解释变量Y的将来变化,则认为变量X是引致变量Y的格兰杰原因。

进行格兰杰因果关系检验的一个前提条件是时间序列必须具有平稳性,否则可能会出现虚假回归问题。因此在进行格兰杰因果关系检验之前首先应对各指标时间序列的平稳性进行单位根检验(unit root test)。常用增广的迪基—富勒检验(ADF检验)来分别对各指标序列的平稳性进行单位根检验。

格兰杰因果关系检验的步骤

(1)利用OLS法,估计两个回归模型
在这里插入图片描述
并计算各自的残差平方和RSS1和RSS2;

(2)原假设是H0:β1=β2=⋯=βk=0,即滞后项x不能显著增加回归模型的解释能力。因此,构造统计量:
在这里插入图片描述
其中n为样本容量,s,k均为参数个数;
(3)利用F统计量检验原假设,对于给定的显著性水平α,若F=Fα则拒绝H0,认为βi中至少有一个显著的不为零,即X是引起Y变化的原因。反之,则不认为。

pd.read_csv()的参数介绍:https://blog.csdn.net/weixin_44056331/article/details/89366105

获取代码

以下是我的个人公众号,该篇的数据和代码可在公众号中回复“格兰杰因果关系检验”即可获得,谢谢大家支持。
在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页