Meine Frage kurz: Gibt es Methoden zur Verbesserung der Laufzeit von R MICE (Datenimputation)?
Ich arbeite mit einem Datensatz (30 Variablen, 1,3 Millionen Zeilen), der (ziemlich zufällig) fehlende Daten enthält. Etwa 8% der Beobachtungen in etwa 15 von 30 Variablen enthalten NAs. Um die fehlenden Daten zu unterstellen, führe ich die MICE-Funktion aus, die Teil des MICE- Pakets ist.
Ich habe eine ziemlich langsame Laufzeit, selbst in einer Teilmenge (100.000 Zeilen), mit method = "fastpmm" und m = 1 und läuft ungefähr 15 Minuten.
Gibt es eine Möglichkeit, die Laufzeit zu verbessern, ohne zu viel an Leistung zu verlieren? (Mäuse.impute.mean ist ziemlich schnell, bringt aber einen wichtigen Informationsverlust mit sich!).
Reproduzierbarer Code:
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")
r
multiple-imputation
mice
Dendrobaten
quelle
quelle
Antworten:
Sie können
quickpred()
aus demmice
Paket verwenden, mit dem Sie die Prädiktoren einschränken können, indem Sie den Mincor (minimale Korrelation) und den Minpuc (Anteil der verwendbaren Fälle) angeben . Sie können auch die Ausschluss- und Einschlussparameter zur Steuerung der Prädiktoren verwenden.quelle
Ich habe einen Wrapper für die
mice
Funktion erstellt, der ein zusätzliches Argument enthält,droplist
in dem Sie einen Zeichenvektor von Prädiktorvariablen übergeben können, den Sie nicht auf der rechten Seite der Imputationsformeln verwenden möchten. Dies diente der Geschwindigkeit, da ich feststellte, dass Faktorvariablen mit vielen Ebenen die Imputation erheblich verlangsamen würden . Diequickpred
Funktion, auf die @Aanish verweist, war mir nicht bekannt , und vielleicht könnten Sie beide Konzepte zusammen verwenden.Unten ist die Funktion, wie sie in meinem glmmplus- Paket erscheint. Wenn Sie es nützlich finden, kann ich eine Pull-Anfrage im eigentlichen
mice
Paket öffnen .quelle