Probabilidad máxima de información completa para datos faltantes en R

18

Contexto : regresión jerárquica con algunos datos faltantes.

Pregunta : ¿Cómo uso la estimación de máxima probabilidad de información completa (FIML) para abordar los datos faltantes en R? ¿Hay un paquete que recomendaría y cuáles son los pasos típicos? Los recursos y ejemplos en línea también serían muy útiles.

PD : Soy un científico social que recientemente comenzó a usar R. La imputación múltiple es una opción, pero realmente me gusta cuán elegantemente los programas como Mplus manejan los datos faltantes usando FIML. Desafortunadamente, Mplus no parece comparar modelos en el contexto de regresión jerárquica en este momento (¡avíseme si sabe una manera de hacerlo!). Me preguntaba si hay algo similar en R? ¡Muchas gracias!

Sootica
fuente
1
¿Has considerado WinBugs ? Maneja los datos faltantes de una manera hermosa y natural.
Mike Dunlavey
Una alternativa a WinBUGS es OpenBUGS o STAN. Estos deberían ser más compatibles con Mac.
Maxim.K

Respuestas:

15

El crédito de esta respuesta es para @Joshua, que dio una respuesta increíble cuando publiqué esta pregunta en la comunidad de R y Estadísticas en Google+. Simplemente estoy pegando su respuesta a continuación.

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

El manejo de los datos faltantes con la máxima verosimilitud en todos los datos disponibles (el llamado FIML) es una técnica muy útil. Sin embargo, hay una serie de complicaciones que dificultan la implementación de manera general. Considere un modelo de regresión lineal simple, que predice algún resultado continuo de, por ejemplo, edad, sexo y tipo de ocupación. En OLS, no te preocupas por la distribución de la edad, el sexo y la ocupación, solo el resultado. Típicamente para predictores categóricos, están codificados de forma ficticia (0/1). Para usar ML, se requieren supuestos de distribución para todas las variables con falta. Con mucho, el enfoque más fácil es el multivariado normal (MVN). Esto es lo que, por ejemplo, Mplus hará de manera predeterminada si no sale para declarar el tipo de variable (por ejemplo, categórica). En el simple ejemplo que di, es probable que desee asumir, normal para la edad, Bernoulli para el sexo y multinomal para el tipo de trabajo. Lo último es complicado porque lo que realmente tienes son varias variables binarias, pero no quieres tratarlas como Bernoulli. Esto significa que no desea trabajar con las variables codificadas ficticias, debe trabajar con la variable categórica real para que los estimadores de ML puedan usar adecuadamente un multinomio, pero esto a su vez significa que el proceso de codificación ficticia debe integrarse en el modelo , no los datos. Nuevamente complicando la vida. Además, la distribución conjunta de variables continuas y categóricas no es trivial de calcular (cuando me encuentro con problemas como este en Mplus, rápidamente comienza a descomponerse y luchar). Finalmente, idealmente especificas el mecanismo de datos faltantes. En estilo SEM, FIML, todas las variables están esencialmente condicionadas a todas las demás, pero esto no es necesariamente correcto. Por ejemplo, quizás falta la edad en función no del género y el 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 falta de edad, también debe estar en el modelo, no necesariamente en el modelo sustantivo de interés sino en el modelo de datos faltantes.

lavaan usará ML para MVN, pero actualmente creo que las opciones de datos categóricos son limitadas (de nuevo desde el campo SEM, esto es estándar). La imputación múltiple parece menos elegante al principio porque hace explícitos muchos supuestos ocultos detrás de FIML (como los supuestos de distribución para cada variable y el modelo predictivo asumido por falta en cada variable). Sin embargo, le da mucho control y piensa explícitamente en la distribución de cada variable, y el mecanismo óptimo de datos faltantes para cada uno es valioso.

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

Por lo tanto, eso realmente no responde a su pregunta, pero explica un poco por qué los marcos completamente generales para lidiar con la falta son difíciles. En mi paquete semutils para las matrices de covarianza, uso lavaan debajo para usar ML. Lo hago porque supongo que para una matriz de covarianza de varianza está utilizando variables continuas de todos modos, así que supongo 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 modelado de ecuaciones estructurales (SEM) es bueno para FIML en R.

Ahora volviendo a mi pregunta inicial. Mi intención era tener una solución mágica para la falta cuando ejecutaba una regresión lineal. Todas mis variables con falta fueron 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.

Me faltaban muchas cosas al hacer una regresión al estilo SEM. Ambos estilos dieron coeficientes y cuadrados R similares, pero en el estilo SEM no obtuve la prueba de significación de la regresión (los valores típicos de F con df), en cambio obtuve índices de ajuste que no fueron útiles ya que había usado todos mis grados de libertad. Además, cuando un modelo tenía un R2 más grande que otro, no pude encontrar una manera 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 de supuestos de regresión que son invaluables. Para obtener una respuesta más detallada sobre este tema, consulte mi otra pregunta que fue respondida amablemente por @StasK .

Entonces, la conclusión parece ser que lavaan es un paquete decente para FIML en R, sin embargo, el uso de FIML depende de supuestos estadísticos y del tipo de análisis que se está realizando. En cuanto a la regresión (sin modelado de variables latentes), mantenerlo fuera de los programas SEM y usar la imputación múltiple es probablemente un movimiento inteligente.

Sootica
fuente
-3

Hay 2 formas principales de manejar datos / registros faltantes. U borra toda la fila de observación que tiene un valor faltante o encuentra una manera de generar este valor faltante. Si toma el primer enfoque, podría terminar perdiendo muchos datos. En el segundo enfoque, debe encontrar una forma "inteligente" de generar estos datos faltantes, 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 observado.

Este segundo enfoque se llama imputación de datos, y hay varios paquetes R que lo hacen. Uno de ellos se llama mclust, y la función que necesita 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 que se encuentran los parámetros, se genera el nuevo punto de datos. Se supone que la distribución de los datos faltantes, los datos observados y todo el conjunto de datos es gaussiana.

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

Lalas
fuente
Gracias. Conozco los paquetes para la imputación múltiple, pero me gustaría ver si hay una forma relativamente simple de hacer una estimación de máxima verosimilitud.
Sootica
La función de probabilidad no está definida para cuando falta la muestra, x. Entonces, creo que podrías estar buscando algo que no existe.
Lalas
2
Consulte este documento para obtener una explicación sobre cómo utilizar los enfoques de máxima probabilidad para los datos faltantes ( Allison, 2012 ). Lo que describe el OP existe.
Andy W
2
Y aquí hay algo de SAS al respecto. support.sas.com/documentation/cdl/en/statug/63347/HTML/default/… Nunca he visto nada en R.
Jeremy Miles
Gracias @JeremyMiles, acabo de publicar lo que me ha ayudado a responder esta pregunta, pensé que otros también podrían encontrarlo útil. PD. ¡El libro R que escribiste con Andy Field es increíble! : D
Sootica