En resumen, mi pregunta: ¿existen métodos para mejorar el tiempo de ejecución de R MICE (imputación de datos)?
Estoy trabajando con un conjunto de datos (30 variables, 1.3 millones de filas) que contiene (bastante al azar) datos faltantes. Alrededor del 8% de las observaciones en aproximadamente 15 de las 30 variables contienen NA. Para imputar los datos faltantes, estoy ejecutando la función MICE, parte del paquete MICE .
Experimento un tiempo de ejecución bastante lento, incluso en un subconjunto (100,000 filas), con method = "fastpmm" ym = 1 y se ejecuta durante aproximadamente 15 minutos.
¿Hay alguna manera de mejorar el tiempo de ejecución sin perder demasiado rendimiento? (mice.impute.mean es bastante rápido, ¡pero viene con una importante pérdida de información!).
Código reproducible
library(mice)
df <- data.frame(replicate(30,sample(c(NA,1:10),1000000,rep=TRUE)))
df <- data.frame(scale(df))
output <- mice(df, m=1, method = "fastpmm")
fuente
Respuestas:
Se puede utilizar
quickpred()
demice
paquete mediante el cual puede limitar los predictores especificando el Mincor (correlación mínimo) y minpuc (proporción de casos útiles). También puede usar los parámetros de exclusión e inclusión para controlar los predictores.fuente
Hice un contenedor para la
mice
función que incluye un argumento adicionaldroplist
, donde puede pasar un vector de caracteres de variables predictoras que no desea usar en el lado derecho de las fórmulas de imputación. Esto fue por la velocidad, ya que descubrí que las variables de factores con muchos niveles ralentizarían considerablemente la imputación . No estaba al tanto de laquickpred
función referenciada por @Aanish, y tal vez podrían usar ambos conceptos juntos.A continuación se muestra la función tal como aparece en mi paquete glmmplus . Si lo encuentra útil, puedo abrir una solicitud de extracción en el
mice
paquete real .fuente