簡體   English   中英

GLMM-是否可以限制變量組合?

[英]GLMM- Is it possible to limit variable combinations?

假設我想查看GLMM的所有可能變量組合(使用lme4 ),但我不想在模型中同時考慮兩個變量。 我怎么做? 例如,我想考慮3種固定效應和3種隨機效應,但我不想在模型中同時考慮任何隨機效應或固定效應。 如果我以這種方式構造模型:

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

我用MuMIn::dredge()函數(執行后模型平均),我會得到他們之間的所有可能的組合,但我不希望(1|var4)是在同一個模型(1|var5)

因此,可以限制模型組合嗎? 這樣,我將避免不必要的模型並節省計算時間。

萬一有人在尋找對此的更新解決方案...現在,您可以使用dredge的subset參數使此操作更容易:

#full model
model1 <- glmer(x~var1+var2+var3+(1|var4)+(1|var5)+(1|var6),data=data1)
#exclude models containing both (1|var4) & (1|var5) at the same time
dredge(model1, subset = !((1|var4) && (1|var5)))

我不知道如何在MuMIn::dredge()執行此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 ...

...但是您必須更加努力地進行模型平均。 您可以嘗試r-sig-mixed-models@r-project.org - r-sig-ecology@r-project.org - r-sig-ecology@r-project.org - r-sig-mixed-models@r-project.orgr-sig-ecology@r-project.org - r-sig-ecology@r-project.org - r-sig-mixed-models@r-project.org r-sig-ecology@r-project.org或向MuMIn的維護者發送電子郵件( maintainer("MuMIn") ))。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM