Moje pytanie w skrócie: czy istnieją metody poprawy czasu działania R MICE (imputacja danych)?
Pracuję z zestawem danych (30 zmiennych, 1,3 miliona wierszy), który zawiera (dość losowo) brakujące dane. Około 8% obserwacji w około 15 z 30 zmiennych zawiera NA. Aby przypisać brakujące dane, uruchamiam funkcję MICE, część pakietu MICE .
Doświadczam dość wolnego czasu działania, nawet na podzbiorze (100 000 wierszy), przy metodzie = „fastpmm” im = 1 i działa przez około 15 minut.
Czy istnieje sposób na poprawę czasu pracy bez utraty wydajności? (mice.impute.mean jest dość szybki, ale wiąże się z istotną utratą informacji!).
Powtarzalny kod:
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
Dendrobates
źródło
źródło
Odpowiedzi:
Możesz użyć
quickpred()
zmice
pakietu, za pomocą którego możesz ograniczyć predyktory, określając mincor (minimalna korelacja) i minpuc (proporcja użytecznych przypadków). Możesz także użyć parametrów wykluczania i dołączania do sterowania predyktorami.źródło
Zrobiłem opakowanie dla
mice
funkcji, która zawiera jeden dodatkowy argument,droplist
w którym możesz przekazać wektor znakowy zmiennych predykcyjnych, których nie chcesz, aby były używane po prawej stronie formuł imputacyjnych. Dotyczyło to szybkości, ponieważ stwierdziłem, że zmienne czynnikowe o wielu poziomach znacznie spowolnią imputację . Nie zdawałem sobie sprawy zquickpred
funkcji, do której odwołuje się @Aanish, i być może moglibyście użyć obu koncepcji razem.Poniżej znajduje się funkcja, która pojawia się w moim pakiecie glmmplus . Jeśli uznasz to za przydatne, mogę otworzyć żądanie ściągnięcia w rzeczywistym
mice
pakiecie.źródło