2014-10-29 7 views
3

랜덤 효과를 고려한 후 두 개 이상의 예측 변수가 동일 선상이 될 수 있습니까?랜덤/혼합 효과를 고려한 후의 공선 성

제 경우에는 모델링 이전에 공선 성을 테스트했습니다. VIF를 사용하면 모든 것이 체크 아웃됩니다. 그러나 여러 모델의 순위 결정 (IC 사용)은 예측 인자 사이를 진정으로 구분할 수 있는지 여부를 불확실하게 만듭니다.

아이디어가 있으십니까?

ps! 공선 성과 같은 관련성이 높은 태그를 추가 할 수 있습니까?

답변

7

여기에 나와있는 해결책 중 일부는 blog post입니다. 그들은 각각 lmerlme 모델 개체에 대한 VIF를 lmernlme R 패키지에서 각각 계산하는 함수를 만들기 위해 몇 가지 코드를 사용합니다. 아래 함수의 코드를 복사했습니다. 한 번 그 코드를 실행하면

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을 실행할 수 있습니다. 나는 임의의 데이터 세트와 정보가없는 무작위 효과를 사용하여 아래에 예를 든다. 나는 정보가없는 무작위 효과를 사용하여 nlme 내의 결과가 기본 R의 lm과 같은 매개 변수 값을 생성합니다. 그런 다음 위의 코드를 사용하여 vifcar의 차이점 인플레이션 요인을 계산합니다. 선형 모델에 대한 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)