¿Cómo elegir la biblioteca nlme o lme4 R para modelos de efectos mixtos?

85

Tengo adaptarse a unos modelos de efectos mixtos (en particular los modelos longitudinales) utilizando lme4en R, pero me gustaría realmente dominar los modelos y el código que va con ellos.

Sin embargo, antes de sumergirme con los dos pies (y comprar algunos libros), quiero estar seguro de que estoy aprendiendo la biblioteca correcta. Lo he usado lme4hasta ahora porque lo encontré más fácil nlme, pero si nlmees mejor para mis propósitos, creo que debería usarlo.

Estoy seguro de que ninguno de los dos es "mejor" de una manera simplista, pero valoraría algunas opiniones o pensamientos. Mis criterios principales son:

  1. fácil de usar (soy psicólogo por capacitación y no estoy particularmente versado en estadística o codificación, pero estoy aprendiendo)
  2. buenas características para ajustar datos longitudinales (si hay una diferencia aquí, pero esto es para lo que los uso principalmente)
  3. buenos resúmenes gráficos (fáciles de interpretar), de nuevo no estoy seguro de si hay una diferencia aquí, pero a menudo produzco gráficos para personas aún menos técnicas que yo, por lo que los gráficos claros y agradables siempre son buenos (me gusta mucho la función xyplot en la red) () por esta razón).

Como de costumbre, espero que esta pregunta no sea demasiado vaga, y gracias de antemano por cualquier sabiduría.

Chris Beeley
fuente

Respuestas:

68

Ambos paquetes se usan Latticecomo backend, pero nlmetiene algunas características agradables como groupedData()y lmList()que faltan lme4(IMO). Desde una perspectiva práctica, los dos criterios más importantes parecen, sin embargo, que

  1. lme4se extiende nlmecon otras funciones de enlace: en nlme, no se pueden ajustar resultados cuya distribución no sea gaussiana, lme4se puede usar para ajustar la regresión logística de efectos mixtos, por ejemplo.
  2. en nlme, es posible especificar la matriz de varianza-covarianza para los efectos aleatorios (por ejemplo, un AR (1)); no es posible en lme4.

Ahora, lme4puede manejar fácilmente una gran cantidad de efectos aleatorios (por lo tanto, la cantidad de individuos en un estudio dado) gracias a su parte C y al uso de matrices dispersas. El nlmepaquete ha sido reemplazado, por lme4lo que no esperaré que las personas pasen mucho tiempo desarrollando complementos nlme. Personalmente, cuando tengo una respuesta continua en mi modelo, tiendo a usar ambos paquetes, pero ahora conozco el lme4camino para ajustar GLMM.

En lugar de comprar un libro, tomar un primer vistazo a la Doug Bates proyecto libro sobre R-fragua: lme4: Modelado de efectos mixtos con R .

chl
fuente
55
@ 2) de manera más precisa, lme4puede especificar una estructura de covarianza diagonal (es decir, efectos aleatorios independientes) o matrices de covarianza no estructuradas (es decir, todas las correlaciones deben ser estimadas) o matrices de covarianza parcialmente diagonales y parcialmente no estructuradas para los efectos aleatorios. También agregaría una tercera diferencia en las capacidades que pueden ser más relevantes para muchas situaciones de datos longitudinales: nlmeno especifiquemos estructuras de varianza-covarianza para los residuos (es decir, autocorrelación espacial o temporal o heterocedasticidad) lme4.
fabians
@fabians (+1) ¡Ah, gracias! No se dio cuenta lme4permite elegir diferentes estructuras de VC. Sería mejor que lo agregue en su propia respuesta, junto con otras ideas que pueda tener. Votaré Por cierto, también me di cuenta de que también lmList()está disponible en lme4. Parece recordar alguna discusión sobre eso en R-sig-ME.
chl
¿Alguna alternativa más rápida? Necesito adaptar modelos con grandes conjuntos de datos y tomar media casi una hora en mi computadora. Hay muchos paquetes de regresión rápida, pero ninguno parece ser capaz de manejar efectos aleatorios.
skan
52

Como señaló CHL, la principal diferencia es qué tipo de estructura de varianza-covarianza puede especificar para los efectos aleatorios. En lme4puede especificar:

  • estructuras de covarianza diagonal (es decir, imponer efectos aleatorios mutuamente no correlacionados mediante una sintaxis similar ~ (1 | group)+ (0 + x1 | group) + (0 + x2 | group))
  • o matrices de covarianza no estructuradas (es decir, se estiman todas las correlaciones ~ (1 + x1 + x2 | group))
  • o covarianza parcialmente diagonal, parcialmente no estructurada ( y ~ (1 + x1 | group) + (0 + x2 | group)donde se estimaría una correlación entre la intersección aleatoria y la pendiente aleatoria para x1, pero no hay correlaciones entre la pendiente aleatoria para x2y la intercepción aleatoria y entre la pendiente aleatoria para x2y la pendiente aleatoria para x1).

nlmeofrece una clase mucho más amplia de estructuras de covarianza para los efectos aleatorios. lme4Sin embargo, mi experiencia es que la flexibilidad es suficiente para la mayoría de las aplicaciones.

También agregaría una tercera diferencia en las capacidades que pueden ser más relevantes para muchas situaciones de datos longitudinales: nlme especifiquemos estructuras de varianza-covarianza para los residuos (es decir, autocorrelación espacial o temporal o heterocedasticidad o variabilidad dependiente de covariable) en el weightsargumento (cf ?varFunc), mientras que lme4solo permite pesos previos fijos para las observaciones.

Una cuarta diferencia es que puede ser difícil nlmeajustar los efectos aleatorios cruzados (parcialmente), mientras que eso no es un problema lme4.

Probablemente estarás bien si te quedas lme4.

fabians
fuente
1
Con la posible excepción (como usted señaló) de poder incorporar la autocorrelación temporal en nlme pero no en lme4. Si el conjunto de datos es lo suficientemente grande, y si los datos tienen este tipo de estructura, esa podría ser una gran ventaja de nlme.
Ben Bolker
22

Otros han resumido muy bien las diferencias. Mi impresión es que lme4es más adecuado para conjuntos de datos agrupados, especialmente cuando necesita usar efectos aleatorios cruzados. Sin embargo, para diseños de medidas repetidas (incluidos muchos diseños longitudinales), nlmees la herramienta ya que solo nlmeadmite la especificación de una estructura de correlación para los residuos. Lo haces usando el argumento correlationso corcon un corStructobjeto. También le permite modelar la heterocedasticidad usando un varFuncobjeto.

AlefSin
fuente
13

En realidad, hay una serie de paquetes en R para ajustar modelos de efectos mixtos más allá lme4y nlme. Hay un buen wiki dirigido por el grupo de interés especial R para modelos mixtos, que tiene muy buenas preguntas frecuentes y una página que compara los diferentes paquetes .

En cuanto a mis opiniones sobre el uso real lme4y nlme: En general, me pareció lme4más fácil de usar debido a su extensión bastante directa de la sintaxis básica de la fórmula R. (Si necesita trabajar con modelos aditivos generalizados, entonces el gamm4paquete extiende esta sintaxis un paso más y tendrá una buena curva de aprendizaje). Como otros han mencionado, lme4puede manejar modelos generalizados (otras funciones de enlace y distribuciones de errores), mientras que nlmeEl enfoque en la función de enlace gaussiano le permite hacer algunas cosas que son muy difíciles en el caso general (especificando la estructura de covarianza y ciertas cosas que dependen del cálculo de los grados de libertad, como los valores p, los últimos de los cuales le animo a moverse ¡lejos de!).

Livius
fuente