28 votos

Máxima verosimilitud de información completa para datos perdidos en R

Contexto : Regresión jerárquica con algunos datos perdidos.

Pregunta : ¿Cómo utilizo la estimación de máxima verosimilitud con información completa (FIML) para tratar los datos que faltan en R? ¿Hay algún paquete que recomiende y cuáles son los pasos típicos? Los recursos en línea y los ejemplos también serían muy útiles.

P.D. : Soy un científico social que recientemente ha empezado a usar R. La imputación múltiple es una opción, pero me gusta mucho la elegancia con la que programas como Mplus manejan los datos perdidos usando FIML. Desafortunadamente, Mplus no parece comparar modelos en el contexto de la regresión jerárquica por el momento (¡por favor, hágame saber si conoce una forma de hacerlo!). Me pregunto si hay algo similar en R. Muchas gracias.

2 votos

¿Ha pensado en WinBugs ? Maneja los datos que faltan de una manera muy natural.

1 votos

Una alternativa a WinBUGS es OpenBUGS o STAN. Estos deberían ser más amigables con Mac.

0 votos

Con respecto a tu pregunta sobre la FIML, pensé en compartir este maravilloso documento de SAS de Paul Allison statisticalhorizons.com/wp-content/uploads/MissingDataByML.pdf Teniendo en cuenta los comentarios de Paul Allison, se puede implementar fácilmente el mismo procedimiento en R utilizando lme o nlmer.

28voto

Nikolai Samteladze Puntos 230

El mérito de esta respuesta es de @Joshua que dio una respuesta impresionante cuando publiqué esta pregunta en el Comunidad R y Estadística en Google+. Simplemente pego su respuesta a continuación.

Para ejecutar la regresión (sin modelización de variables latentes), por favor, lea mis notas escritas después del texto citado.

Tratamiento de los datos que faltan con la máxima verosimilitud en todos los datos disponibles (llamada FIML) es una técnica muy útil. Sin embargo, hay una serie de complicaciones que dificultan su aplicación general. general. Consideremos un modelo de regresión lineal simple, que predice algún resultado continuo a partir de, por ejemplo, la edad, el sexo y el tipo de ocupación. En OLS, no hay que preocuparse por la distribución de la edad, el sexo y la ocupación, sólo el resultado. Normalmente, para los predictores categóricos, se codifican como dummies (0/1). Para utilizar el ML, se requieren supuestos de distribución para todas las variables con omisión. El enfoque más sencillo, con diferencia, es la es la normal multivariante (MVN). Esto es lo que, por ejemplo, Mplus hará por defecto si no se sale de su camino para declarar el tipo de variable (por ejemplo, categórica). En el sencillo ejemplo que he dado probablemente querrá asumir, normal para la edad, Bernoulli para el sexo, y multinómica para el tipo de trabajo. Esto último es complicado porque lo que tiene lo que realmente tiene son varias variables binarias, pero no quiere tratarlas como Bernoulli. Esto significa que no quiere trabajar con la de las variables codificadas como ficticias, sino que hay que trabajar con la variable categórica real para que los estimadores ML puedan categórica para que los estimadores de ML puedan utilizar correctamente una multinomial, pero esto Esto significa que el proceso de codificación de variables ficticias debe incorporarse al modelo modelo, no en los datos. Una vez más se complica la vida. Además, la distribución conjunta de las variables continuas y categóricas no es fácil de calcular de calcular (cuando me encuentro con problemas de este tipo en Mplus, se rápidamente comienza a romperse y a luchar). Por último, lo ideal es lo ideal es especificar el mecanismo de datos perdidos. En el estilo SEM, FIML, todas las variables están esencialmente condicionadas a todas las demás, pero esto no es necesariamente correcto. Por ejemplo, tal vez la edad falte como una función no del género y del tipo de ocupación, sino de su interacción. La interacción puede no ser importante para el resultado focal, pero si es importante para la ausencia de la edad, entonces también debe estar en el modelo, no necesariamente en el modelo sustantivo de interés, sino en el modelo de datos faltantes.

lavaan utilizará ML para MVN, pero actualmente creo que las opciones de datos categóricos datos categóricos son limitados (de nuevo, viniendo del campo del SEM, esto es estándar). La imputación múltiple parece menos elegante al principio porque hace explícitas muchas suposiciones ocultas detrás de FIML (como distributiva para cada variable y el modelo predictivo para cada variable y el modelo predictivo asumido para la falta de datos en cada variable). Sin embargo, le da mucho control Sin embargo, le da mucho control y le permite pensar explícitamente en la distribución de cada variable, y el mecanismo óptimo de datos perdidos para cada una es valioso.

Cada vez estoy más convencido de que los modelos bayesianos son la forma de manejar los datos que faltan. La razón es que son muy flexibles al incluir distribuciones para cada variable, permitiendo muchos tipos de tipos de distribuciones, y pueden incorporar fácilmente la variabilidad de la variabilidad introducida por los datos que faltan en los predictores, en las estimaciones generales del modelo (que es el truco de la imputación múltiple, en la que hay que de alguna manera combinar los resultados). Por supuesto, estos métodos no son los más fáciles y pueden requerir mucha formación y tiempo de uso.

Así que eso no responde realmente a tu pregunta, pero explica un poco el porqué los marcos completamente generales para tratar la falta de información son complicados. En mi paquete semutils para las matrices de covarianza, uso lavaan para utilizar ML. Lo hago porque asumo que para una matriz de covarianza covarianza que se utilizan variables continuas, por lo que asumo que mis que asumo que mis usuarios ya están asumiendo MVN para sus datos.

Esto significa que si todas las variables con falta son continuas, lavaan Un paquete de modelización de ecuaciones estructurales (SEM) es una buena opción para utilizar FIML en R.

Volviendo a mi pregunta inicial. Mi intención era tener una solución mágica para la falta de datos cuando se ejecuta la regresión lineal. Todas mis variables con faltantes eran agradables y continuas. Así que procedí a ejecutar mis análisis en dos estilos:

  • La forma habitual con imputación múltiple
  • En estilo SEM con lavaan usando FIML.

Se me escapaban muchas cosas al hacer la regresión en estilo SEM. Ambos estilos dieron coeficientes y R cuadrados similares, pero en el estilo SEM no obtuve la prueba de significación de la regresión (los típicos valores F con df), en su lugar obtuve índices de ajuste que no eran útiles ya que había utilizado todos mis grados de libertad. Además, cuando un modelo tenía un R2 mayor que otro, no podía encontrar una forma de comparar si la diferencia era significativa. Además, hacer la regresión de la manera habitual da acceso a un montón de pruebas para los supuestos de regresión que son inestimables. Para una respuesta más detallada sobre esta cuestión, véase mi otra pregunta que fue muy bien respondida por @StasK .

Así que la conclusión parece ser que lavaan es un paquete decente para FIML en R, aunque el uso de FIML depende de los supuestos estadísticos y del tipo de análisis que uno esté realizando. En cuanto a la regresión (sin modelización de variables latentes), mantenerla fuera de los programas SEM y utilizar la imputación múltiple es probablemente una decisión acertada.

1voto

JoshT Puntos 126

Con respecto a tu pregunta sobre la FIML, pensé en compartir este maravilloso documento de SAS de Paul Allison http://www.statisticalhorizons.com/wp-content/uploads/MissingDataByML.pdf

Teniendo en cuenta los comentarios de Paul Allison, se puede implementar fácilmente el mismo procedimiento en R utilizando lme o nlmer.

-5voto

DoubleDunk Puntos 128

Hay dos formas principales de tratar los datos/registros que faltan. O bien se elimina toda la fila de observación que tiene un valor perdido, o se encuentra una manera de generar este valor perdido. Si se adopta el primer enfoque, es posible que se pierdan muchos datos. En el segundo enfoque, hay que encontrar una manera "inteligente" de generar estos datos que faltan, de tal manera que las estimaciones de los parámetros del nuevo conjunto de datos no sean muy diferentes de las estimaciones de los parámetros del conjunto de datos observados.

Este segundo enfoque se llama imputación de datos, y hay varios paquetes de R que lo hacen. Uno de ellos se llama mclust, y la función que necesitas se llama imputeData. Esta función utiliza el algoritmo EM (maximización de expectativas) para estimar los parámetros de la parte no observada del conjunto de datos, dada la parte observada. Una vez encontrados los parámetros, se generan los nuevos puntos de datos. Se supone que la distribución de los datos que faltan, de los datos observados y del conjunto de datos es gaussiana.

Espero que esta explicación le ayude a lograr lo que está tratando de hacer

0 votos

Gracias. Conozco los paquetes para la imputación múltiple, pero me gustaría ver si hay una forma relativamente sencilla de hacer una estimación de máxima probabilidad.

0 votos

La función de verosimilitud no está definida para cuando la muestra, x, falta. Así que creo que puedes estar buscando algo que no existe.

2 votos

Véase este documento para una explicación de la utilización de enfoques de máxima probabilidad para los datos que faltan ( Allison, 2012 ). Lo que describe el PO existe.

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