2016-07-12 15 views
-1

lme4を使用して)GLMMのすべての変数の組み合わせを見たいとしましょうが、私はモデル内で同時に2つの変数を考慮したくありません。それ、どうやったら出来るの?たとえば、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引数を使用しようとした場合:demo(dredge.subset)

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’ 

を、私は例として、これを試してみました:

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]、または保守者にMuMInmaintainer("MuMIn"))のメールを送信してください...

+0

ありがとうございます!私はそれらに連絡するか、またはすべての可能な組み合わせを行い、重要でないものを除外します。それは可能かもしれません! – Teresa

関連する問題