20 votos

Uso de lmer para la predicción

Hola Tengo dos problemas que suenan como candidatos naturales para los modelos multinivel/mixtos, que nunca he utilizado. El más sencillo, y que espero probar como introducción, es el siguiente: Los datos parecen muchas filas de la forma

x y innergroup outergroup

donde x es una covariable numérica sobre la que quiero hacer la regresión de y (otra variable numérica), cada y pertenece a un grupo interno y cada grupo interno está anidado en un grupo externo (es decir, todos los y de un grupo interno determinado pertenecen al mismo grupo externo). Lamentablemente, el grupo interno tiene muchos niveles (muchos miles) y cada nivel tiene relativamente pocas observaciones de y, por lo que pensé que este tipo de modelo podría ser apropiado. Mis preguntas son las siguientes

  1. ¿Cómo se escribe este tipo de fórmula multinivel?

  2. Una vez lmer se ajusta al modelo, ¿cómo se hace una predicción a partir de él? He ajustado algunos ejemplos de juguete más sencillos, pero no he encontrado una función predict(). La mayoría de la gente parece más interesada en la inferencia que en la predicción con este tipo de técnica. Tengo varios millones de filas, por lo que los cálculos podrían ser un problema, pero siempre puedo reducirlos según convenga.

No necesitaré hacer lo segundo hasta dentro de un tiempo, pero podría empezar a pensar en ello y a jugar con ello. Tengo datos similares a los anteriores, pero sin x, e y es ahora una variable binomial de la forma $(n,n-k)$ . y también presenta mucha sobredispersión, incluso dentro de los grupos internos. La mayoría de los $n$ no son más de 2 ó 3 (o menos), por lo que para obtener estimaciones de los porcentajes de éxito de cada $y_i$ He estado usando el estimador de contracción beta-binomial $(\alpha+k_i)/(\alpha+\beta+n_i)$ donde $\alpha$ y $\beta$ se estiman mediante MLE para cada grupo interno por separado. Esto ha sido algo adecuado, pero la escasez de datos sigue siendo un problema, por lo que me gustaría utilizar todos los datos disponibles. Desde una perspectiva, este problema es más fácil ya que no hay covariables, pero desde la otra la naturaleza binomial lo hace más difícil. ¿Alguien tiene alguna orientación de alto (¡o bajo!) nivel?

17voto

DavLink Puntos 101

La expresión de las relaciones entre factores mediante fórmulas de R sigue la notación de Wilkinson, en la que "*" denota cruce y "/" anidamiento, pero hay algunas particularidades en la forma en que se manejan las fórmulas para los modelos de efectos mixtos o, más en general, los efectos aleatorios. Por ejemplo, dos efectos aleatorios cruzados podrían representarse como (1|x1)+(1|x2) . He interpretado tu descripción como un caso de anidamiento, del mismo modo que las clases están anidadas en escuelas (anidadas en estados, etc.), por lo que una fórmula básica con lmer (a menos que se indique lo contrario, un gaussian por defecto):

y ~ x + (1|A:B) + (1|A)

donde A y B corresponden a tus factores interno y externo, respectivamente. B está anidado dentro de A, y ambos se tratan como factores aleatorios. En el nlme esto correspondería a algo como lme(y ~ x, random=~ 1 | A/B) . Si A se considerara un factor fijo, la fórmula sería la siguiente y ~ x + A + (1|A:B) .

Pero merece la pena comprobar con más precisión las especificaciones de D. Bates para el lme4 por ejemplo, en su próximo libro de texto, lme4: Modelización de efectos mixtos con R o los numerosos folletos disponibles en la misma página web. En concreto, hay un ejemplo de este tipo de relaciones anidadas en Ajuste de modelos lineales de efectos mixtos: el paquete lme4 de R . El tutorial de John Maindonald también ofrece una buena visión general: Anatomía de un análisis de modelos mixtos con el paquete lme4 de R . Por último, la sección 3 de la viñeta R sobre implantación de lme4 incluye un ejemplo de análisis de una estructura anidada.

No hay predict() función en lme4 (esta función existe ahora, véase el comentario más abajo), y tiene que calcular usted mismo los valores individuales predichos utilizando el fijo estimado (véase ?fixef ) y aleatorio (véase ?ranef ), pero véase también este hilo sobre los efectos de la falta de función predictiva en lme4 . También puede generar una muestra a partir de la distribución posterior utilizando la función mcmcsamp() función. Sin embargo, a veces puede chocar. Véase la sig-me para obtener información actualizada.

10voto

Matt Mitchell Puntos 17005

En ez contiene la función ezPredict(), que obtiene predicciones de modelos lmer en los que la predicción se basa únicamente en los efectos fijos. En realidad, no es más que una envoltura del enfoque detallado en el paquete glmm wiki .

5voto

Will Dean Puntos 231

Yo utilizaría la función "logit.mixed" en Zelig que es una envoltura para lime4 y hace que sea muy conveniente hacer predicciones y simulaciones.

3voto

Tomek Puntos 1536

La versión de desarrollo de lme4 incorpora una función de predicción (predict.merMod). Se encuentra en https://github.com/lme4/lme4/ .

El código para instalar los "Binarios de desarrollo casi actualizados del repositorio r-forge de lme4" se encuentra en la página anterior y es:

install.packages("lme4", repos=c("http://lme4.r-forge.r-project.org/repos", getOption("repos")["CRAN"]))

1voto

Judioo Puntos 625

Stephen Raudenbush ha publicado un capítulo en el Handbook of Multilevel Analysis sobre " Muchos grupos pequeños ". Si sólo le interesan los efectos de x sobre y y no tiene interés en los efectos de nivel superior, su sugerencia es simplemente estimar un modelo de efectos fijos (es decir, una variable ficticia para todas las posibles agrupaciones de nivel superior).

No sé hasta qué punto es aplicable a la predicción, pero imagino que parte de lo que escribe es aplicable a lo que usted intenta conseguir.

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