🌐 Sprache
missForest
missForest ist eine nichtparametrische Imputationsmethode für gemischt-typische tabellarische Daten in R. Sie verarbeitet numerische und kategoriale Variablen gleichzeitig, indem sie iterativ Random Forests trainiert, um fehlende Werte aus den beobachteten zu schätzen. Keine expliziten Modellannahmen, keine Matrixfaktorisierungen – nur starke prädiktive Baselines, die sofort funktionieren.
- Funktioniert mit beliebigen Kombinationen aus numerischen und Faktor-Spalten
- Erfasst Nichtlinearitäten und Interaktionen
- Gibt den Out-of-Bag (OOB) Imputationsfehler (NRMSE/PFC) aus
- Unterstützt parallele Ausführung (pro Variable oder pro Forest)
- Zwei Forest-Backends:
ranger(Standard) undrandomForest(Legacy/Kompatibilität)
Installation
# CRAN (recommended)
install.packages("missForest")Development version (from GitHub)
install.packages("remotes")
remotes::install_github("stekhoven/missForest")Quick start
library(missForest)Example data
data(iris)Introduce ~20% MCAR missingness
set.seed(81)
iris_mis <- prodNA(iris, noNA = 0.20)Impute with default backend (ranger)
imp <- missForest(iris_mis, xtrue = iris, verbose = TRUE)Imputed data
head(imp$ximp)Estimated OOB errors (NRMSE for numeric, PFC for factors)
imp$OOBerrorTrue error if xtrue was provided (for benchmarking only)
imp$errorAuswahl eines Backends
# Legacy behavior using randomForest
imp_rf <- missForest(iris_mis, backend = "randomForest")Explicitly use ranger with limited threads
imp_rg <- missForest(iris_mis, backend = "ranger", num.threads = 2)Parallelisierung
Zwei Modi sind über parallelize verfügbar:
"variables": Erstellen Sie Wälder für verschiedene Variablen parallel (registrieren Sie ein foreach-Backend)."forests": Parallelisierung innerhalb des Waldes einer einzelnen Variablen (ranger-Threads; oder foreach-Subwälder für randomForest).
# Not run:
library(doParallel)
registerDoParallel(2)
imp_vars <- missForest(iris_mis, parallelize = "variables", verbose = TRUE)
imp_fors <- missForest(iris_mis, parallelize = "forests", verbose = TRUE, num.threads = 2)
API-Übersicht
missForest(xmis, ...)
Kern-Imputationsfunktion.
Wichtige Argumente:
xmis— Datenrahmen/Matrix mit fehlenden Werten (Spalten müssennumericoderfactorsein).maxiter— maximale Iterationen (Standard10).ntree— Bäume pro Wald (Standard100).mtry— Variablen, die bei jedem Split versucht werden (Standardsqrt(p)).nodesize— numeric der Länge 2: minimale Knotengröße für c(numeric, factor). Standardc(5, 1).variablewise— gibt pro-Variable OOB-Fehler zurück, wennTRUE.parallelize—"no","variables"oder"forests".num.threads— Threads fürranger(wird vonrandomForestignoriert).backend—"ranger"(Standard) oder"randomForest".xtrue— optional vollständige Daten zum Benchmarking (fügt$errorhinzu).
backend = "ranger":ntree → num.treesnodesize → min.bucket(separat für Regression/Klassifikation; Standardc(5,1))sampsize(Anzahlen) →sample.fraction(Bruchteile; insgesamt oder pro Klasse)classwt → class.weightscutoffwird durch Fitten von Wahrscheinlichkeitswäldern und anschließendes Thresholding behandelt
Hilfsfunktionen
mixError(ximp, xmis, xtrue)— berechnet NRMSE (numerisch) und PFC (Faktor) über die tatsächlich fehlenden Einträge.nrmse(ximp, xmis, xtrue)— NRMSE nur für kontinuierliche Daten.prodNA(x, noNA = 0.1)— injiziert MCAR-Missingness in einen Datenrahmen.varClass(x)— gibt"numeric"/"factor"pro Spalte zurück.
Tipps & bewährte Methoden
- Wandeln Sie Zeichen-Spalten in Faktoren um, bevor Sie
missForestaufrufen. - Für breite Daten empfiehlt sich
parallelize = "variables". Für tiefe/aufwändige Bäume empfiehlt sichparallelize = "forests". - Setzen Sie einen Seed für quasi-reproduzierbare Ergebnisse:
set.seed(123); imp <- missForest(x)
``
- Sie können
ntree während der Prototypenerstellung reduzieren, um die Iteration zu beschleunigen.---
Zitation
Wenn Sie missForest verwenden, zitieren Sie bitte:
Stekhoven, D. J. & Bühlmann, P. (2012). MissForest—nichtparametrische Imputation fehlender Werte für gemischte Datentypen.* Bioinformatics, 28(1), 112–118. https://doi.org/10.1093/bioinformatics/btr597
Sie können auch das Paket zitieren:
r
citation("missForest")
``Contributing
Issues and pull requests are welcome. Please include a minimal reproducible example when reporting bugs. For performance discussions, share small benchmarks and session info.
License
GPL (≥ 2)
Contact
Daniel J. Stekhoven — stekhoven@nexus.ethz.ch
--- Tranlated By Open Ai Tx | Last indexed: 2026-07-17 ---