考虑到随机效应/混合效应后的共线性

考虑到随机效应/混合效应后的共线性

问题描述:

在考虑随机效应后,两个/更多的预测变量会变得更低/共线性?考虑到随机效应/混合效应后的共线性

在我的情况下,我已经测试了建模前的共线性,使用VIF,并且一切都检查出来。然而,不同模型的排名(使用IC)使我不确定它是否真能区分预测变量。

任何想法?

ps!能否有人比我更高的代表添加更相关的标签,如共线性?

在此处列出了一些解决方案blog post。他们使用一些代码来创建一个函数,它将分别计算lmer和和nlme R包中的模型对象的VIF。我已经复制下面的函数的代码。

vif.lme <- function (fit) { 
    ## adapted from rms::vif 
    v <- vcov(fit) 
    nam <- names(fixef(fit)) 
    ## exclude intercepts 
    ns <- sum(1 * (nam == "Intercept" | nam == "(Intercept)")) 
    if (ns > 0) { 
     v <- v[-(1:ns), -(1:ns), drop = FALSE] 
     nam <- nam[-(1:ns)] } 
    d <- diag(v)^0.5 
    v <- diag(solve(v/(d %o% d))) 
    names(v) <- nam 
    v } 

一旦运行该代码一次,你将能够R环境中执行了新的功能,vif.lme。我用下面的例子给出了一个随机数据集和一个无信息的随机效应。我使用了无效的随机效应,以便lme的结果在nlme内将生成与基数为lm的预测变量相同的参数值。然后,我使用上面的代码来计算方差膨胀因子以及来自carvif functino包用于计算线性模型的VIF,以显示它们给出相同的输出。

#make 4 vectors- c is used as an uninformative random effect for the lme model 
a<-c(1:10) 
b1<-c(2,4,6,8,10,100,14,16,18,20) 
b2<-c(1,9,2,4,5,6,4,3,2,-1) 
c<-c(1,1,1,1,1,1,1,1,1,1) 
test<-data.frame(a,b1,b2,c) 

#model a as a function of b1 and b2, and c as a random effect 
require(nlme) 
fit<-lme(a~b1+b2, random=~1|c,data=test) 
#see how the model fits 
summary(fit) 
#check variance inflation factors 
vif.lme(fit) 

#create a new regular linear regression model and check VIF using the car package. 
#answers should be the same, as our random effect above was totally uninformative 
require(car) 
fit2<- lm(a~b1+b2,data=test) 
#check to see that parameter fits are the same. 
summary(fit2) 
#check to see that variance inflation factors are the same 
vif(fit2)