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.
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.