2016-07-12 32 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

相关问题