[英]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"))
}
現在,您可以使用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 ...
...但是您必須更加努力地進行模型平均。 您可以嘗試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.org
, r-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.