面板数据中的多重共线性检验

12

我正在使用R中的plm包运行面板数据回归,并希望控制解释变量之间的多重共线性。
我知道car包中有vif()函数,但据我所知,它无法处理面板数据输出。
plm可以进行其他诊断,如单位根测试,但我没有找到计算多重共线性的方法。

是否有一种类似于vif的测试方法,或者我可以将每个变量视为时间序列,省略面板信息并使用car包运行测试?

我不能透露数据,但问题应该与所有面板数据模型相关。
维度大约为1,000个观测值,超过50个时间段。
我使用的代码如下:

pdata <- pdata.frame(RegData, index=c("id","time"))
fixed <- plm(Y~X, data=pdata, model="within")

然后

vif(fixed) 

返回一个错误。

1
我不知道在面板数据中计算VIF的R函数,但您可以查看解释变量之间的相关性来获得一个好的想法。设计越平衡,您得到的图片可能就越好。 - Edwin
1
感谢 @Edwin 的想法。 但是,在不考虑面板数据的情况下使用面板数据变量之间的相关性是否有效?这样做会不会在结果中产生一些扭曲? - David
这只是我的直觉,但我认为当您在同一时间点相关测量的变量时,它是有效的。至少可以获得一个大致的印象,以确定是否存在多重共线性问题。 - Edwin
1个回答

19

这个问题已经涉及到其他统计软件,比如SAShttps://communities.sas.com/thread/47675和Statahttp://www.stata.com/statalist/archive/2005-08/msg00018.html,通常的答案是使用汇集模型来获取VIF。其逻辑是,由于多重共线性只涉及独立变量,因此无需使用面板方法控制个体效应。

以下是从另一个网站提取的一些代码:

mydata=read.csv("US Panel Data.csv")
attach(mydata)  # not sure is that's really needed
Y=cbind(Return) # not sure what that is doing
pdata=pdata.frame(mydata, index=c("id","t"))
model=plm(Y ~ 1+ESG+Beta+Market.Cap+PTBV+Momentum+Dummy1+Dummy2+Dummy3+Dummy4+Dummy5+
                   Dummy6+Dummy7+Dummy8+Dummy9,
           data=pdata,model="pooling")
vif(model)

谢谢@Rfan!这正是我问题的答案。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接