测试面板数据中的多重共线性R

时间:2013-11-29 08:12:19

标签: r regression plm panel-data

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

有没有办法计算vif的类似测试,或者我可以将每个变量视为时间序列,省略面板信息并使用car包运行测试?

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

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

然后再

vif(fixed) 

返回错误。


提前谢谢。

1 个答案:

答案 0 :(得分:9)

此问题已经参考其他统计软件包,例如SAS https://communities.sas.com/thread/47675和Stata http://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=plm.data(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)