2016-07-12 72 views
-1

假設我希望看到(使用lme4)一GLMM的所有可能的變量組合,但我不希望在一個模型中同時考慮兩個變量。我怎麼做?舉例來說,我要考慮3個固定效應和3點隨機的影響,但我不希望任何隨機或固定效應在模型中同時考慮。如果你建造的模型是這樣的:GLMM-可以限制變量組合嗎?

model1 <- glmer(x~var1+var2+var3+(1|var4)+(1|var5)+(1|var6), 
data=data1) 

我用MuMIn::dredge()功能(執行模型後平均),我會得到他們之間的所有可能的組合,但我不想(1|var4)是在同一個模型作爲(1|var5)

那麼,是不是可以限制模型的組合?這樣我就可以避免不必要的模型並節省計算時間。

回答

1

我不知道了如何在MuMIn::dredge()做到這一點(見下文我嘗試)。

set.seed(101) 
dd <- data.frame(x=rnorm(1000), 
       var1=rnorm(1000), 
       var2=rnorm(1000), 
       var3=rnorm(1000), 
       var4=sample(factor(sample(1:20,size=1000,replace=TRUE))), 
       var5=sample(factor(sample(1:20,size=1000,replace=TRUE))), 
       var6=sample(factor(sample(1:20,size=1000,replace=TRUE)))) 
library(lme4) 
m0 <- lmer(x~var1+var2+var3+(1|var4)+(1|var5)+(1|var6),dd,REML=FALSE, 
      na.action=na.fail) 

如果我們嘗試使用m.lim論證其子集只有固定效應,但保留在所有的隨機效應而言:

dredge(m0,m.lim=c(0,1)) 
## Model selection table 
## (Intrc)  var1  var2 var3 df logLik AICc delta weight 
## 1 0.02350        5 -1417.485 2845.0 0.00 0.412 
## 3 0.02389   -0.03256   6 -1416.981 2846.0 1.02 0.248 
## 5 0.02327     0.02168 6 -1417.254 2846.6 1.56 0.189 
## 2 0.02349 -0.002981     6 -1417.480 2847.0 2.02 0.151 
## Models ranked by AICc(x) 
## Random terms (all models): 
## ‘1 | var4’, ‘1 | var5’, ‘1 | var6’ 

demo(dredge.subset),我想這是一個例子:

dredge(m0, 
    subset=expression(!((var1 && var2) || ((1|var4) && (1|var5))))) 

,但得到

Error in dredge(m0, subset = expression(!((var1 && var2) || ((1 | var4) && : 
    unrecognized names in 'subset' expression: "var4" and "var5" 

我無法找到如何在模型做疏通/模型平均有MuMIn::dredge()不同的隨機效應的任何文件(事實上,我不相信這是一個好主意)。 如果你想滿足所有車型恰好與一個固定作用,只有一個隨機的效果來看,可以按如下方式做到這一點:

設立的所有組合:

fvars <- paste0("var",1:3) 
gvars <- paste0("(1|var",4:6,")") 
combs <- as.matrix(expand.grid(fvars,gvars)) 

現在適合他們:

mList <- list() 
for (i in 1:nrow(combs)) { 
    mList[[i]] <- update(m0, 
      formula=reformulate(combs[i,],response="x")) 
} 

現在你可以使用lapplysapply對列表中的元素,如操作:

lapply(mList,formula) 
## [[1]] 
## x ~ var1 + (1 | var4) 
## 
## [[2]] 
## x ~ var2 + (1 | var4) 
## 
## [[3]] 
## x ~ var3 + (1 | var4) 
## 
## [[4]] 
## x ~ var1 + (1 | var5) 
## ... et cetera ... 

bbmle::AICtab(mList,weights=TRUE) 
##  dAIC df weight 
## model5 0.0 4 0.344 
## model6 0.5 4 0.262 
## model4 1.0 4 0.213 
## model8 4.1 4 0.044 
## ... et cetera ... 

...但你必須要繼續有點難做模型平均。您可以嘗試[email protected],[email protected]或電子郵件MuMInmaintainer("MuMIn"))的維護人員...

+0

非常感謝您Ben!我會聯繫他們,或者做所有可能的組合,排除那些無關緊要的組合。在Excel中它可能是可能的! – Teresa

相關問題