missForest
missForest è un metodo di imputazione non parametrico per dati tabellari a tipi misti in R. Gestisce variabili numeriche e categoriche simultaneamente, addestrando iterativamente foreste casuali per prevedere le voci mancanti da quelle osservate. Nessuna assunzione esplicita di modellizzazione, nessuna fattorizzazione di matrici—solo solide basi predittive che funzionano immediatamente.
- Funziona con qualsiasi combinazione di colonne numeriche e fattoriali
- Cattura nonlinearità e interazioni
- Riporta l'errore di imputazione out-of-bag (OOB) (NRMSE/PFC)
- Supporta esecuzione parallela (per variabile o per foresta)
- Due backend di foresta:
ranger(predefinito) erandomForest(legacy/compatibile)
Installazione
# 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$errorScegliere un backend
# 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)Parallelizzazione
Sono disponibili due modalità tramite parallelize:
"variables": costruisce foreste per variabili diverse in parallelo (registrare un backend foreach)."forests": parallelizza all'interno della foresta di una singola variabile (thread ranger; oppure foreach sotto-foreste per 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)
Panoramica API
missForest(xmis, ...)
Funzione principale di imputazione.
Argomenti chiave:
xmis— data frame/matrice con valori mancanti (le colonne devono esserenumericofactor).maxiter— iterazioni massime (default10).ntree— alberi per foresta (default100).mtry— variabili provate a ogni split (defaultsqrt(p)).nodesize— numerico di lunghezza 2: dimensione minima nodo per c(numeric, factor). Defaultc(5, 1).variablewise— restituisce errore OOB per variabile seTRUE.parallelize—"no","variables", o"forests".num.threads— thread perranger(ignorato darandomForest).backend—"ranger"(default) o"randomForest".xtrue— dati completi opzionali per benchmarking (aggiunge$error).
backend = "ranger":ntree → num.treesnodesize → min.bucket(separatamente per regressione/classificazione; defaultc(5,1))sampsize(conteggi) →sample.fraction(frazioni; complessivo o per classe)classwt → class.weightscutoffgestito tramite fit di probability forests e post-thresholding
Utility
mixError(ximp, xmis, xtrue)— calcola NRMSE (numerico) e PFC (fattore) sulle vere entry mancanti.nrmse(ximp, xmis, xtrue)— NRMSE solo per dati continui.prodNA(x, noNA = 0.1)— inietta mancanza MCAR in un data frame.varClass(x)— restituisce"numeric"/"factor"per colonna.
Suggerimenti & best practice
- Converti le colonne di tipo carattere in fattori prima di chiamare
missForest. - Per dati ampi, considera
parallelize = "variables". Per alberi profondi/costosi, consideraparallelize = "forests". - Imposta un seed per risultati quasi riproducibili:
set.seed(123); imp <- missForest(x)
``
- Puoi ridurre
ntree durante la fase di prototipazione per velocizzare le iterazioni.---
Citazione
Se utilizzi missForest, cita:
Stekhoven, D. J. & Bühlmann, P. (2012). MissForest—nonparametric missing value imputation for mixed-type data.* Bioinformatics, 28(1), 112–118. https://doi.org/10.1093/bioinformatics/btr597
Puoi anche citare il pacchetto:
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 ---