Multiple Imputation by Super Learning
Overview
Performs multiple imputation of missing data using an ensemble super learner built with the tidymodels framework. For each incomplete column, a stacked ensemble of candidate learners is trained on a bootstrap sample of the observed data and used to generate imputations via predictive mean matching (continuous), probability draws (binary), or cumulative probability draws (categorical). Supports parallelism across imputed datasets via the future framework.
New features
misl()now accepts any parsnip-compatible model spec directly via the*_methodarguments, allowing any learner in the tidymodels ecosystem to be used without requiring a package update. Named strings and parsnip specs can be freely mixed in the same list.- New
ord_methodargument inmisl()for ordered categorical (ordinal) outcomes. Ordered factors are automatically detected and routed toord_method. - New built-in learner
"polr"(proportional odds logistic regression viaMASS::polr()) for ordinal outcomes. Note that"polr"cannot currently be stacked with other ordinal learners — when supplied alongside other learners inord_method,"polr"will be used as the sole ordinal learner and others will be ignored with a warning. Full stacking support for ordinal outcomes is planned for a future release.
Show all changes in 2.0.0Hide the rest of the changes in 2.0.0
- New
plot_misl_trace()function for visualising convergence of imputed values across iterations, with one line per imputed dataset. list_learners()now accepts"ordinal"as a validoutcome_typefilter and includes the newordinalsupport column.
Bug fixes
cv_foldsargument is now correctly passed through to the internal.fit_super_learner()function. Previously the value was accepted bymisl()but ignored, with 5 folds always used regardless of the user's setting.- The preprocessing recipe is now built once from the full observed data and shared across both the bootstrap and full fits for continuous outcomes. Previously separate recipes were built for each fit, meaning
step_zv()andstep_nzv()could drop different predictors between the two fits and produce inconsistent PMM donor selection. - Two-level factors (e.g.
"Yes"/"No") are now correctly identified as binomial outcomes rather than categorical. Previously these were routed tocat_method, which caused incorrect imputation and errors with learners that require a numeric binary outcome. - Trace statistics (
mean,sd) are no longer computed for factor-coded binary columns, preventing errors from callingmean()andvar()on factor vectors. - Stacking now gracefully recovers when individual learners fail during cross-validation resampling. Previously a single learner failure would crash the entire imputation. Failed learners are now skipped with a warning, and if all learners fail the first learner is used as a fallback.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-06-09
- ERROR12 OK, 1 ERROR2026-06-08
- OK7 OK2026-03-31
Documentation
- Help pages
- 7 (4 internal)
- Examples that run
- 100%3 run in a plain check
- Exported functions with examples
- 100%
- Documented parameters
- 100%
- Return-value docs
- 100%
- Help pages citing references
- 0%
- Introduction to misl HTML
Downloads
Repository
Releases over time
7 development-tooling and community-health practices detected across 4 families in the upstream repository
Checks run against github.com/justinmanjourides/misl on 2026-10-11.
GitHub Pages site last deployed 2026-04-30 · The repository has a site deploy workflow
Dependencies
Installing misl adds 101 packages (48 with compiled code, 79 MB of source tarballs). Heaviest: stringi 11 MB, ggplot2 6.0 MB, data.table 5.7 MB.
Code & Tests
People & History
Pick two releases to compare their code metrics.
- RR 4.6.0 released · 2026-04-24
- 2.0.0Latest
- 1.0.02026-03-30
- RR 4.5.0 released · 2025-04-11
Package metadata
- First published
- 2026-03-30
- Total releases
- 2 / 1 yrs
- License
- MIT + file LICENSE OSI
- Minimum R
- ≥ 4.1.0
- Download size
- 32 KB
Cite
Cite this package
Run in R for the authors' preferred citation:
citation("misl")This package has no citation file, so citation() returns this entry built from DESCRIPTION.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-18, which the citation names so these numbers can be found later. More on citing and the projects behind them.