8 votos

Cómo cerrar a cero la suma de los efectos aleatorios en GLMM (con lme4)

Estoy usando el lme4 paquete en R para hacer algunas logística de efectos mixtos de modelado.
Mi entendimiento es que la suma de cada uno de efectos aleatorios, debe ser igual a cero.

Cuando hago juguete lineal mixto-modelos de uso lmer, el de efectos aleatorios son generalmente < $10^{-10}$ que confirma mi creencia de que la colSums(ranef(model)$groups) ~ 0 Pero en juguete de los modelos binomial (y en los modelos de mi binomio de datos) algunos de los efectos aleatorios suma a ~0.9.

Debería estar preocupado? ¿Cómo debo interpretar esto?

Aquí es lineal juguete ejemplo


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
}

En este caso, el colMeans que siempre salgan $<10^{-6}$

Aquí es un binomio de juguete ejemplo (que me gustaría compartir mis datos reales, sino que está siendo sometido para su publicación, y no estoy seguro de lo que la revista política sobre la publicación de antemano):


toybin<-function(n=100,gn=4,doplot=FALSE){
  require(lme4)

Ahora el colMeans a veces salen por encima de 0.3, y definitivamente más alto, en promedio, que el lineal ejemplo.

3voto

Bou Puntos 1859

Desde @Hemmo del código fue ligeramente alterados en la "Recompensa" del cuadro, voy a echar esto de formatear la versión como "wiki de la comunidad". Si esto no es un uso adecuado de la wiki, me disculpo de antemano. Siéntase libre de eliminarlo.

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") )

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X