ランダム効果の合計がGLMM(lme4を使用)でどれだけゼロに近いか


8

lme4R のパッケージを使用して、ロジスティック混合効果モデリングを行っています。
私の理解は、各変量効果の合計はゼロであるべきだということでした。

私が使用して混合モデル線形おもちゃを作るときはlmer、ランダム効果は、<通常、というのが私の信念を確認する のおもちゃ二項モデルではなく、(と私の本当の二項データのモデルで)をランダム効果の和の一部に〜 0.9。1010colSums(ranef(model)$groups) ~ 0

心配する必要がありますか?これをどのように解釈しますか?

これは線形おもちゃの例です

toylin<-function(n=30,gn=10,doplot=FALSE){
 require(lme4)
 x=runif(n,0,1000)
 y1=matrix(0,gn,n)
 y2=y1
 for (gx in 1:gn)
 {
   y1[gx,]=2*x*(1+(gx-5.5)/10) + gx-5.5  + rnorm(n,sd=10)
   y2[gx,]=3*x*(1+(gx-5.5)/10) * runif(1,1,10)  + rnorm(n,sd=20)
 }
 c1=y1*0;
 c2=y2*0+1;
 y=c(t(y1[c(1:gn),]),t(y2[c(1:gn),]))
 g=rep(1:gn,each=n,times=2)
 x=rep(x,times=gn*2)
 c=c(c1,c2)
 df=data.frame(list(x=x,y=y,c=factor(c),g=factor(g)))
 (m=lmer(y~x*c + (x*c|g),data=df))
 if (doplot==TRUE)
  {require(lattice)
   df$fit=fitted(m)
   plot1=xyplot(fit ~ x|g,data=df,group=c,pch=19,cex=.1)
   plot2=xyplot(y ~ x|g,data=df,group=c)
   print(plot1+plot2)
  }
 print(colMeans(ranef(m)$g))
 m
}

この場合、colMeansは常に出てきます<106

これは二項式のおもちゃの例です(実際のデータを共有しますが、公開のために提出されており、事前に投稿する際のジャーナルポリシーが何であるかわかりません)。


toybin<-function(n=100,gn=4,doplot=FALSE){
  require(lme4)
x=runif(n,-16,16) y1=matrix(0,gn,n) y2=y1 for (gx in 1:gn) { com=runif(1,1,5) ucom=runif(1,1,5) y1[gx,]=tanh(x/(com+ucom) + rnorm(1)) > runif(x,-1,1) y2[gx,]=tanh(2*(x+2)/com + rnorm(1)) > runif(x,-1,1) } c1=y1*0; c2=y2*0+1; y=c(t(y1[c(1:gn),]),t(y2[c(1:gn),])) g=rep(1:gn,each=n,times=2) x=rep(x,times=gn*2) c=c(c1,c2) df=data.frame(list(x=x,y=y,c=factor(c),g=factor(g))) (m=lmer(y~x*c + (x*c|g),data=df,family=binomial)) if (doplot==TRUE) {require(lattice) df$fit=fitted(m) print(xyplot(fit ~ x|g,data=df,group=c,pch=19,cex=.1)) } print(colMeans(ranef(m)$g)) m }

現在、colMeansは、線形の例よりも平均で0.3を上回り、平均して明らかに高くなっています。


3
これらのおもちゃの例を再現するコードをここに含めることができますか?これは、この興味深い動作を調査するのに役立ちます。
アーロンは、スタックオーバーフローを

私の実験でも同じ動作が見られました。ガウスの場合はゼロへの和の制約がありますが、非ガウスの場合はありません。ランダム効果の期待値がゼロである限り、ゼロへの合計が必要条件であるかどうかはわかりません。これは、いくつかのケースで役立つかもしれない、それがありますので、どうやらそれはガウスケース内のコードに簡単です...よりよく理解チャイムとうまくいけば、誰かに。
Jouni

回答:


3

@Hemmoのコードが「バウンティ」ボックスでわずかに破損したため、この再フォーマットされたバージョンを「コミュニティウィキ」として追加します。これがwikiの適切な使用法でない場合は、事前に謝罪します。気軽に削除してください。

library(mvabund)
library(lme4) 
data(spider) 
Y <- as.matrix(spider$abund)
X <- spider$x 
X <- X[ ,c(1, 4, 5, 6)] 
X <- rbind(X, X, X, X, X, X, X, X, X, X, X, X) 
site <- rep(seq(1, 28), 12) 
dataspider <- data.frame(c(Y), X, site) 
names(dataspider) <- c("Y","soil.dry", "moss", "herb.layer", "reflection", "site") 
fit <- glmer(
  Y ~ soil.dry + moss + herb.layer + reflection + (1|site), 
  family = poisson(link = log), 
  data = dataspider,
  control = glmerControl(optimizer = "bobyqa")
) 

1
さて、質問はまだ十分な注目を集めていなかったようです。私自身の結論は、ここでは実際には何も問題はなく、ゼロへの合計条件は実際にはありませんが、すべてが線形であるガウスの場合にのみ発生します。変量効果の期待値は0でなければなりません。これは実際の仮定であり、推定された効果の実際の合計がゼロではありません。誰かを表彰しなければならないので、どういたしまして。:)
Jouni

2
@Hemmo Yikes、今、私は実際に何かを貢献すべきだと感じています。実際には何も悪いことはないです。短い答え(私が書きたいと思っていましたが、時間を見つけることができませんでした)は、尤度曲面がガウスである場合、平均はゼロになるということです。非公式には、ガウス誤差*ガウスランダム効果は別のガウスにつながることに注意することで、これを「証明」できます。非ガウス誤差関数(例ではポアソン)を備えたglmmがある場合、尤度曲面は非ガウスになり、すべてのベットがオフになります。お役に立てれば。
デビッドJ.ハリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.