2 votos

Cómo obtener intervalos de confianza para datos modelados del modelo lmer en R con la función Bootmer

Quiero obtener intervalos de confianza alrededor de los datos modelados a partir de un modelo lmer. He encontrado que Bootmer es el camino a seguir. Parece que hay 3 maneras de hacer esto:

1.remuestreo paramétrico tanto de los efectos aleatorios "esféricos" u como de los errores i.i.d. (use.u = FALSE, por defecto, parece conducir a un IC relativamente grande)

2.tratar los efectos aleatorios como fijos y remuestrear paramétricamente los errores i.i.d. (use.u = TRUE, CI relativamente pequeño)

3.tratar los efectos aleatorios como fijos y volver a muestrear semiparamétricamente los errores i.i.d. de la distribución de los residuos.

No he encontrado en ningún sitio cuándo utilizar qué especificación. No estoy interesado en la predicción, sólo en los datos modelados (por ejemplo, tengo un modelo con Condición, tiempo y tiempo x Condición como predictores y quiero los datos modelados con IC del efecto por condición en los diferentes puntos temporales).

Gracias de antemano por su ayuda.

1voto

user320414 Puntos 9

Lo bueno de bootstrap es que (en su mayor parte) es bastante intuitivo. Así que la cuestión de si establecer remuestrear los efectos aleatorios realmente depende de si usted vería que los casos futuros también remuestrear los efectos aleatorios.

  1. Quizás la definición más tradicional de un factor aleatorio es aquella en la que las categorías de nuestro factor aleatorio son sólo un al azar El objetivo de la encuesta es seleccionar un subconjunto de una población más amplia de posibilidades y nuestro interés es generalizar a esa población más amplia. Por ejemplo, cuando el factor aleatorio modela a los participantes en su estudio: probablemente no esté tan interesado en estos participantes, tanto como en las personas en general . Una nueva ejecución del experimento volvería a muestrear a los participantes, y su bootstrap también debería hacerlo. Para volver a realizar el muestreo, establecemos use.u=FALSE .

  2. Por otro lado, supongamos que tenemos un predictor categórico con un conjunto fijo de categorías que siempre serán las mismas. Podríamos modelarlo como un factor fijo. Pero en algunos casos, podríamos introducirlo como un factor aleatorio, modelando todas las categorías como una gran curva de campana de posibilidades y aprovechando las ventajas de los efectos aleatorios, como la contracción. Esto puede ser especialmente ventajoso si hay muchas categorías, o si algunas categorías sólo tienen unos pocos puntos de datos. Dado que las categorías son fijas y nunca cambiarán, tampoco deberían cambiar en el bootstrap. No remuestrear, establecer use.u=TRUE .

Estas descripciones suenan como las definiciones tradicionales de efectos aleatorios y fijos, respectivamente. Por lo tanto, es interesante ver que los errores estándar por defecto producidos por los modelos fijos y mixtos (al menos, en un ejemplo sencillo) producen más o menos los mismos números que los dos use.u posibilidades. El código en la parte inferior produce esta salida (cada uno es el error estándar del intercepto de un enfoque diferente):

 use.u.TRUE use.u.FALSE fixed.model mixed.model 
 0.06300992  0.34607292  0.06618366  0.34576152

Una nota al margen interesante de esto es que la forma por defecto en que generamos inferencias sobre efectos aleatorios puede dar inferencias extremadamente conservadoras en el caso 2 anterior.

Para los casos en los que tenemos una mezcla de los tipos 1 y 2 anteriores, sería bueno poder cambiar use.u de forma diferente por efecto aleatorio.

Advertencia

Es muy importante no fijar use.u=TRUE a menos que estés seguro de que eso es lo que quieres. Como usted ha señalado, los SE (y CI) pueden ser muy diferentes y eso es porque la pregunta que usted está haciendo es completamente diferente.

Por ejemplo, en un análisis que acabo de realizar, se tomaron varias réplicas de cada vaso de "cosas". Modelizo los vasos como un factor aleatorio. Todas las réplicas de cada vaso son aproximadamente iguales, por lo que la desviación típica residual es realmente pequeña: la mayor parte de la variación entre muestras está codificada en el efecto aleatorio del vaso. Si no modelamos esa variación de vaso a vaso, ¡pensaríamos que casi no hay ruido! Y, en consecuencia, sus inferencias serían demasiado optimistas, basadas en la suposición de que las cosas siempre salen igual.

Código

library(lme4)

n.per.group <- c(100,100)
nsim <- 500

set.seed(1)

num.groups <- length(n.per.group)
u <- rnorm(num.groups)
data <- data.frame(
  y         = unlist(mapply(rnorm,     n=n.per.group, mean=u,         SIMPLIFY=FALSE)),
  group.num = unlist(mapply(rep,   times=n.per.group, x=1:num.groups, SIMPLIFY=FALSE))
)

data$group.num <- factor(data$group.num)

# This sets up the fixed model so that the intercept models the grand mean
#  (i.e. same as in the mixed model)
contrasts(data$group.num) <- contr.sum(levels(data$group.num))

fixed.model <- lm(  y~   group.num,  data=data)
mixed.model <- lmer(y~(1|group.num), data=data)

standard.errors <- c(
  use.u.TRUE  = sd(bootMer(mixed.model, fixef, use.u=TRUE,  nsim=nsim)$t),
  use.u.FALSE = sd(bootMer(mixed.model, fixef, use.u=FALSE, nsim=nsim)$t),

  fixed.model = summary(fixed.model)$coefficients["(Intercept)", "Std. Error"],
  mixed.model = summary(mixed.model)$coefficients["(Intercept)", "Std. Error"]
)
print(standard.errors)

```

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