2016-07-12 6 views
-1

Предположим, что я хочу видеть комбинации всех возможных переменных GLMM (используя lme4), но я не хочу одновременно рассматривать две переменные в модели. Как мне это сделать? Например, я хочу рассмотреть 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")) 
} 

Теперь вы можете использовать lapply или sapply работать на элементах списка, например:

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] или отправить по электронной почте сопроводителя MuMIn (maintainer("MuMIn")) ...

+0

Большое спасибо! Я свяжусь с ними или, возможно, сделаю все возможные комбинации и исключу те, которые не имеют значения; в excel это возможно! – Teresa

Смежные вопросы