如何在 R 中的面板向量自回归pVAR后进行格兰杰因果关系检验?

问题描述

在 R 中运行面板向量自回归后如何进行格兰杰因果关系检验(使用 panelvar 包)?

为了运行面板 VAR,可以执行以下操作:

library(plm)
library(panelvar)

set.seed(12345)

x = rnorm(240)
z = x + rnorm(240)
y = rep(rnorm(15),each=16) + 2*x + 3*z + rnorm(240)
country = rep(c("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"),each=16 )
year = rep(seq(1995,2010),15)

panel = cbind.data.frame(country,year,x,z,y)

model <- pvargmm(dependent_vars = c("y","x","z"),lags = 1,transformation = "fod",data = panel,panel_identifier=c("country","year"),steps = c("twostep"),system_instruments = FALSE,max_instr_dependent_vars = 99,max_instr_predet_vars = 99,min_instr_dependent_vars = 2L,min_instr_predet_vars = 1L,collapse = TRUE
)

我的问题是如何执行格兰杰因果检验(panelvar 不提供此功能)。 似乎需要使用 pgrangertest 包中的函数 plm。但是,我不确定“公式”是什么,因为 pVAR 模型不同于简单的线性模型。此外,“顺序”是否应该是在运行具有多个滞后选项的 pVAR 后发现的最佳滞后数,然后选择提供最佳模型拟合的一个(基于 Andrews_Lu_MMSC 函数提供的 BIC、AIC 等)?

pgrangertest(inv ~ value,data = Grunfeld,order = 2L)

换句话说,我需要将“inv ~ value”替换为其他东西,我不清楚如何做到这一点。

鉴于我对 y、x 和 z 之间的相互关系感兴趣,我应该运行 pgrangertest 六次吗?以下内容有意义吗?

pgrangertest(y ~ x,order = 2L)
pgrangertest(y ~ z,order = 2L)
pgrangertest(x ~ z,order = 2L)
pgrangertest(x ~ y,order = 2L)
pgrangertest(z ~ x,order = 2L)
pgrangertest(z ~ y,order = 2L)

我知道 pgrangertest 一次只允许两个变量,但我不应该控制第三个变量吗?

解决方法

这只是一个建议,所以它可能有帮助,也可能没有帮助。尽管该函数只允许使用 2 个变量,但您可能能够准确地探索该函数正在做什么以发现“公式”并使用 edit(pgrangertest) 调整/修改它以满足您的需要。类似地,您可以通过手动指定要使用的测试类型并模拟实际函数正在执行的操作来克服函数 grangertest 的共线性错误(请参阅我自己的问题和答案 here)。也许这可以让您指定所需的所有变量?此外,另一个问题 here 也可能有帮助(尽管它是关于常规多元格兰杰的)

或者,尝试向软件包的创建者发送电子邮件。这是一个长期目标,但它也可能非常有帮助,他们可能能够真正解决您的问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...