Wie nahe an Null sollte die Summe der zufälligen Effekte in GLMM sein (mit lme4)


8

Ich verwende das lme4Paket in R, um eine logistische Modellierung mit gemischten Effekten durchzuführen.
Mein Verständnis war, dass die Summe aller zufälligen Effekte Null sein sollte.

Wenn ich mit Spielzeug lineare gemischte Modelle mache lmer, sind die zufälligen Effekte normalerweise < was meine Überzeugung bestätigt, dass der Aber in Spielzeug-Binomialmodellen (und in Modellen meiner realen Binomialdaten) ein Teil des Zufallseffekts zu ~ summiert 0,9.1010colSums(ranef(model)$groups) ~ 0

Sollte ich besorgt sein? Wie interpretiere ich das?

Hier ist ein lineares Spielzeugbeispiel

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
}

In diesem Fall kommen die colMeans immer<106

Hier ist ein Beispiel für ein Binomialspielzeug (ich würde meine tatsächlichen Daten teilen, sie werden jedoch zur Veröffentlichung eingereicht, und ich bin mir nicht sicher, wie die Journalrichtlinie im Voraus lautet):


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 }

Jetzt liegen die colMeans manchmal über 0,3 und im Durchschnitt definitiv über dem linearen Beispiel.


3
Können Sie hier Code einfügen, um diese Spielzeugbeispiele zu reproduzieren? Es würde helfen, dieses interessante Verhalten zu untersuchen.
Aaron verließ Stack Overflow

Ich habe das gleiche Verhalten auch bei meinen Experimenten gesehen. Im Gaußschen Fall gibt es eine Beschränkung auf die Summe Null, in nicht-Gausschen Fällen jedoch nicht. Ich bin mir nicht sicher, ob eine Summe von Null eine notwendige Bedingung ist, solange der erwartete Wert zufälliger Effekte Null ist. In einigen Fällen kann es hilfreich sein, und anscheinend ist es einfach, im Gaußschen Fall zu codieren, also ist es da ... Hoffentlich schlägt jemand mit besserem Verständnis in.
Jouni

Antworten:


3

Da der Code von @ Hemmo im Feld "Bounty" leicht verstümmelt wurde, füge ich diese neu formatierte Version als "Community-Wiki" hinzu. Wenn dies keine angemessene Verwendung des Wikis ist, entschuldige ich mich im Voraus. Fühlen Sie sich frei, es zu entfernen.

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
Nun, es scheint, dass die Frage immer noch nicht genug Beachtung fand. Meine eigene Schlussfolgerung ist, dass hier wirklich nichts falsch ist, es gibt wirklich keine Summe-zu-Null-Bedingung, aber es passiert nur in Gaußschen Fällen, in denen alles linear ist. Die Erwartung zufälliger Effekte muss 0 sein, ist die reale Annahme, nicht dass die tatsächlichen Summen der geschätzten Effekte Null sind. Ich muss jemanden auszeichnen, also bist du willkommen. :)
Jouni

2
@Hemmo Yikes, jetzt habe ich das Gefühl, ich sollte tatsächlich etwas beitragen. Sie haben Recht, dass nichts wirklich falsch ist. Die kurze Antwort (die ich aufschreiben wollte, aber keine Zeit dafür fand) ist, dass der Mittelwert Null ist, wenn die Wahrscheinlichkeitsfläche Gaußsch ist. Informell können wir dies "beweisen", indem wir feststellen, dass Gaußsche Fehler * Gaußsche Zufallseffekte zu einem anderen Gaußschen führen. Wenn Sie ein glmm mit einer nicht-Gaußschen Fehlerfunktion haben (z. B. Poisson in Ihrem Fall), kann die Wahrscheinlichkeitsfläche nicht-gaußsch werden und alle Wetten sind deaktiviert. Hoffe das hilft.
David J. Harris
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.