Ma question en bref: existe-t-il des méthodes pour améliorer le temps de fonctionnement de R MICE (imputation de données)?
Je travaille avec un ensemble de données (30 variables, 1,3 million de lignes) qui contient (assez aléatoirement) des données manquantes. Environ 8% des observations dans environ 15 des 30 variables contiennent des NA. Afin d'imputer les données manquantes, j'exécute la fonction MICE, qui fait partie du package MICE .
J'exécute un temps d'exécution assez lent, même sur un sous-ensemble (100 000 lignes), avec method = "fastpmm" et m = 1 et fonctionne pendant environ 15 minutes.
Existe-t-il un moyen d'améliorer le temps de fonctionnement sans perdre trop de performances? (mice.impute.mean est assez rapide, mais s'accompagne d'une importante perte d'informations!).
Code reproductible:
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")
la source
Réponses:
Vous pouvez utiliser à
quickpred()
partir d'unmice
package à l'aide duquel vous pouvez limiter les prédicteurs en spécifiant le mincor (corrélation minimale) et minpuc (proportion de cas utilisables). Vous pouvez également utiliser les paramètres d'exclusion et d'inclusion pour contrôler les prédicteurs.la source
J'ai créé un wrapper pour la
mice
fonction qui inclut un argument supplémentairedroplist
, où vous pouvez passer un vecteur de caractères de variables prédictives que vous ne souhaitez pas utiliser dans la partie droite des formules d'imputation. C'était pour la vitesse, car j'ai trouvé que les variables factorielles à plusieurs niveaux ralentiraient considérablement l'imputation . Je n'étais pas au courant de laquickpred
fonction référencée par @Aanish, et peut-être pourriez-vous utiliser les deux concepts ensemble.Ci-dessous est la fonction telle qu'elle apparaît dans mon paquet glmmplus . Si vous le trouvez utile, je peux ouvrir une demande d'extraction dans le
mice
package réel .la source