1 votos

¿Por qué no hay efecto aleatorio?

Estoy tratando de usar lme4::glmer para ajustar un modelo mixto como ese:

library(lme4)
set.seed(123)
df<-data.frame(id=sample(LETTERS[1:10], 50, T),
               y=rbinom(50, 1, 0.3),
               x1=rbinom(50, 1, 0.5),
               x2=as.integer(rnorm(50, 40, 5)))
df<-df[order(df$id),]

fitm<-glmer(y~x1+x2+(1|id), data=df, binomial)

coef(fitm)
$id
  (Intercept)    x1       x2
A      -1.009 1.239 -0.01631
B      -1.009 1.239 -0.01631
C      -1.009 1.239 -0.01631
D      -1.009 1.239 -0.01631
E      -1.009 1.239 -0.01631
F      -1.009 1.239 -0.01631
G      -1.009 1.239 -0.01631
H      -1.009 1.239 -0.01631
I      -1.009 1.239 -0.01631
J      -1.009 1.239 -0.01631

Me pregunto por qué los efectos son idénticos en todas las identificaciones. ¿Por qué no hay un efecto aleatorio como se esperaba? Tenga en cuenta que la salida de glmer es exactamente la misma que usando glm aquí:

fitg<-glm(y~x1+x2, data=df, binomial)
coef(fitg)
(Intercept)          x1          x2 
   -1.00861     1.23882    -0.01631

2voto

Joachim Puntos 41

Su resultado no está correlacionado con su variable de identificación, por lo que los resultados serían esencialmente los mismos con/sin los efectos aleatorios debido a que no existe una relación significativa entre ambos.

Los efectos aleatorios se incluyen a menudo para tener en cuenta la correlación entre el resultado y alguna covariable (en este caso el ID), por ejemplo, cuando se toman varias mediciones del mismo individuo, queremos tener en cuenta el hecho de que es probable que las mediciones observadas de cada individuo sean similares.

Dado que ha seleccionado todas sus covariables al azar, y no ha incluido ninguna correlación entre el resultado y la ID, no hay necesidad del efecto aleatorio y no sería significativo dentro del modelo.

Un ejemplo ligeramente editado a su anterior:

library(lme4)
set.seed(12345)
df<-data.frame(id=sample(LETTERS[1:2], 1000, T),
           x1=rbinom(1000, 1, 0.5),
           x2=as.integer(rnorm(1000, 40, 5)))

df$y<-ifelse(df$id=="A",rbinom(1000,1,prob=0.85),rbinom(1000,1,prob=0.4))

df<-df[order(df$id),]
fitm<-glmer(y~x1+x2+(1|id), data=df, binomial)

coef(fitm)
$id
(Intercept)        x1          x2
A    2.157210 0.4023013 -0.01144187
B   -0.117885 0.4023013 -0.01144187  

coef(glm(y~x1+x2,data=df,binomial))
(Intercept)          x1          x2 
 1.05255753  0.33669182 -0.01792981

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