格兰杰因果检验_R实现

前言

  • 先做单位根检验,看变量序列是否平稳序列,若平稳,可构造回归模型等经典计量经济学模型;若非平稳,进行差分
  • 当进行到第i次差分时序列平稳,则服从i阶单整(注意趋势、截距不同情况选择,根据P值和原假设判定)。
  • 若所有检验序列均服从同阶单整,可构造VAR模型,做协整检验(注意滞后期的选择),判断模型内部变量间是否存在协整关系,即是否存在长期均衡关系。
  • 如果有,则可以构造VEC模型或者进行Granger因果检验,检验变量之间“谁引起谁变化”,即因果关系。
一、平稳性问题

1、单位根检验是序列的平稳性检验,如果不检验序列的平稳性直接OLS容易导致伪回归。

2、当检验的数据是平稳的(即不存在单位根),要想进一步考察变量的因果联系,可以采用格兰杰因果检验,但要做格兰杰检验的前提是数据必须是平稳的,否则不能做。

3、当检验的数据是非平稳(即存在单位根),并且各个序列是同阶单整(协整检验的前提),想进一步确定变量之间是否存在协整关系,可以进行协整检验,协整检验主要有EG两步法和JJ检验

A、EG两步法是基于回归残差的检验,可以通过建立OLS模型检验其残差平稳性(一般用EG两步法)

B、JJ检验是基于回归系数的检验,前提是建立VAR模型(即模型符合ADL模式)

4、当变量之间存在协整关系时,可以建立ECM进一步考察短期关系,Eviews这里还提供了一个Wald-Granger检验,但此时的格兰杰已经不是因果关系检验,而是变量外生性检验,请注意识别

二、协整性问题

1、格兰杰检验只能用于平稳序列!这是格兰杰检验的前提,而其因果关系并非我们通常理解的因与果的关系,而是说x的前期变化能有效地解释y的变化,所以称其为“格兰杰原因”。

2、非平稳序列很可能出现伪回归,协整的意义就是检验它们的回归方程所描述的因果关系是否是伪回归,即检验变量之间是否存在稳定的关系。所以,非平稳序列的因果关系检验就是协整检验。

3、平稳性检验有3个作用:1)检验平稳性,若平稳,做格兰杰检验,非平稳,作协正检验。2)协整检验中要用到每个序列的单整阶数。3)判断时间学列的数据生成过程。

三、格兰杰因果问题

其实很多人存在误解。有如下几点,需要澄清:

第一,格兰杰因果检验是检验统计上的时间先后顺序,并不表示而这真正存在因果关系,是否呈因果关系需要根据理论、经验和模型来判定。

第二,格兰杰因果检验的变量应是平稳的,如果单位根检验发现两个变量是不稳定的,那么,不能直接进行格兰杰因果检验,所以,很多人对不平稳的变量进行格兰杰因果检验,这是错误的。

第三,协整结果仅表示变量间存在长期均衡关系,那么,到底是先做格兰杰还是先做协整呢?因为变量不平稳才需要协整,所以,首先因对变量进行差分,平稳后,可以用差分项进行格兰杰因果检验,来判定变量变化的先后时序,之后,进行协整,看变量是否存在长期均衡。

第四,长期均衡并不意味着分析的结束,还应考虑短期波动,要做误差修正检验。

理论参考:https://blog.csdn.net/littlely_ll/java/article/details/54866179

R语言实现

  • 创建两列数据
e1 = rnorm(500)
e2 = rnorm(500)
y1 = 0.8  + cumsum(e1)
y2 = 0.6  + cumsum(e2)
plot(y1)
line(y2)

cumsum累加前面的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sOWCcBg4-1591775914492)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENResource/p49)]

单位根检验
library(tseries)
adf.test(y1)
adf.test(y2)

Augmented Dickey-Fuller Test
data: y1
Dickey-Fuller = -2.3544, Lag order = 7, p-value = 0.4283
alternative hypothesis: stationary

Augmented Dickey-Fuller Test
data: y2
Dickey-Fuller = -2.9604, Lag order = 7, p-value = 0.1718
alternative hypothesis: stationary

P值均大于0.05,所以两者都没有通过单位根检验(都是不平稳的时间序列),因此对两者进行一阶差分,然后再进行单位根检验。

adf.test(diff(y1))
adf.test(diff(y2))

Augmented Dickey-Fuller Test
data: diff(y1)
Dickey-Fuller = -8.7806, Lag order = 7, p-value = 0.01
alternative hypothesis: stationary

Augmented Dickey-Fuller Test
data: diff(y2)
Dickey-Fuller = -8.0616, Lag order = 7, p-value = 0.01
alternative hypothesis: stationary

都通过了平稳性检验

yy1=diff(y1)
yy2=diff(y2)
sr.reg = lm(yy1 ~ yy2)
error = residuals(sr.reg)
plot(error, main = "Plot of error")
adf.test(error)
summary(sr.reg)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BgZ4l9Gd-1591775914495)(evernotecid://DD492144-9AFF-43C1-9BC0-5A625709FC62/appyinxiangcom/28357599/ENResource/p50)]

Augmented Dickey-Fuller Test
data: error
Dickey-Fuller = -8.8595, Lag order = 7, p-value = 0.01
alternative hypothesis: stationary

残差通过单位根检验

Call:
lm(formula = yy1 ~ yy2)
Residuals:
Min 1Q Median 3Q Max
-3.8563 -0.6486 0.0671 0.7018 2.7345
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.01142 0.04461 0.256 0.798
yy2 -0.07026 0.04520 -1.555 0.121
Residual standard error: 0.9964 on 497 degrees of freedom
Multiple R-squared: 0.004839, Adjusted R-squared: 0.002837
F-statistic: 2.417 on 1 and 497 DF, p-value: 0.1207

协整检验未通过,也就是不能确认两者具有协整关系

为了走通流程我们接下来还是继续做格兰杰检验

格兰杰检验
library(zoo)
library(lmtest)
grangertest(yy1~yy2,order=2)

Granger causality test
Model 1: yy1 ~ Lags(yy1, 1:2) + Lags(yy2, 1:2)
Model 2: yy1 ~ Lags(yy1, 1:2)
Res.Df Df F Pr(>F)
1 492
2 494 -2 3.6924 0.02561 *
—Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1

P值小于0.05,通过检验,也就是拒绝了yy1不是引起yy2格兰杰变化的原因
即yy1是引起yy2格兰杰变化的原因

grangertest(yy2~yy1,order=2)

Granger causality test
Model 1: yy2 ~ Lags(yy2, 1:2) + Lags(yy1, 1:2)
Model 2: yy2 ~ Lags(yy2, 1:2)
Res.Df Df F Pr(>F)
1 492
2 494 -2 1.0705 0.3436

P值大于0.05,没有通过检验,也就是接受了yy2不是引起yy1格兰杰变化的原因
即yy1不是引起yy2格兰杰变化的原因

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章