如何检测ivreg中的共线性并提取其所用数据框的因果变量?

时间:2017-09-06 22:14:44

标签: r

我正在运行ivreg,但由于多重共线性,我的数据矩阵是单数的。我想提取导致共线性的变量并再次执行ivreg。我尝试使用VIF(它没有工作),ALIAS(它只检测导致共线性但不能用于ivreg的列),...

我决定使用条件编号创建一个执行我想要的过程的函数。接下来是:

`estikappa<-function(reg,formula,data,crv,...){(if(kappa(reg)>crv)
{if(is.null(alias(reg)$Complete)==T)
{reg<-lm(formula,data)return(reg)}else{ld.vars<-attributes(alias(reg)$Complete)$dimnames[[1]]
 formulan<-as.formula(paste(paste(deparse(formula),collapse = ""),
paste(ld.vars,collapse = "-"),
 sep="-"))
regn<-lm(formulan,data)
reg<-regn
return(reg)}})
(if(kappa(reg)<-crv){reg<-lm(formula,data)
return(reg)})
}`

不幸的是,estikappa()仅适用于lm,而不适用于&#34; ivreg&#34;类。因此,我尝试手工制作2SLS(打字),但是&#34; Betas&#34;第二阶段和ivreg()是不同的,原因之一是我无法弄清楚。因此,我决定找到一种替代方法来提取导致多重共线性的变量,但我并不幸运。

任何帮助我都会非常感激。

0 个答案:

没有答案