← Back to all sparks
M

mice

INFRA · APIS
Velocity0.0

Multivariate Imputation by Chained Equations

mice can finally predict, not just estimate, from multiply imputed data.

missing-datamultiple-imputationstatisticsr-packagepredictive-modelingpooling
Current state
mice is the reference implementation of multiple imputation by chained equations, and the default answer to missing data in R. The releases here follow a consistent shape: one or two substantive additions per version, most contributed by outside authors, plus fixes to methods that have been in the package for years. The current 3.19.0 adds predict_mi(), which pools predictions across imputations under Rubin's rules and can return prediction intervals.
Where it's heading
Two things are happening. The imputation method catalogue keeps widening — lasso variants, multivariate PMM, categorical PMM via canonical correlation — while the pooling side is being extended past its original purpose, first to synthetic data, now to predictions on held-out sets. That second thread points at predictive modelling workflows rather than the inferential ones mice was built for. Meanwhile the maintainers keep finding consequential old bugs: the augment() ordered-factor defect in 3.18.0 had been silently degrading ordinal imputations for years.
Prediction
predict_mi() is framed around evaluating predictive performance on test sets, and the ignore argument added in 3.12.0 already exists to hold out rows from the imputation model. Expect the next work to join those up into a fuller train/test story for imputed data, since the pieces are now in place but not yet connected.

Recent moves

  1. 8mo ago

    mice 3.19.0

    ⚡ SPARK

    predict_mi() closes the gap between imputation and prediction: fit a model per completed dataset, pool the predictions rather than the coefficients, and get point estimates or intervals that carry imputation uncertainty through. The clearest step yet in the pooling machinery moving beyond the inferential use mice was designed around.

    View source ↗
  2. 1y ago

    mice 3.18.0

    Fixes a long-standing defect where the internal augment() stripped the ordered class from factors and re-sorted their levels alphabetically, degrading polr imputations for ordinal variables and sometimes breaking convergence. Anyone who imputed ordinal data with this package before now has results worth revisiting. Passive variables also move to the end of the visit sequence by default.

    View source ↗
  3. 1y ago

    mice 3.17.0

    Reworks how predictive mean matching handles factors: instead of casting a factor to integers whose order may mean nothing, categories are quantified via the first canonical variate between the outcome dummies and the predictors. A better default for the package's most-used method, covering both ordered and unordered factors.

    View source ↗
  4. 3y ago

    mice 3.16.0

    Opens futuremice() to external packages and user-written functions, extending the parallel imputation added the release before. The rest is CRAN policy conformance and a fix giving 2lonly.pmm proper factor support.

    View source ↗
  5. 3y ago

    mice 3.15.0

    A dense release: futuremice() brings parallel imputation via the future package, mice.impute.mpmm() adds multivariate predictive mean matching, convergence() gives a dedicated diagnostic, and pool() accepts a custom total-variance rule. Also reverts the local-seed experiment from 3.14.0 after it caused a run of downstream problems.

    View source ↗
  6. 4y ago

    mice 3.14.0

    Four lasso-based univariate imputation methods bring automatic variable selection to the imputation models, a non-parametric MCAR test lands with a plot method, and pool.syn() adds pooling rules for synthetic rather than imputed data. The synthetic-data pooling is the early sign of the pooling machinery being pointed at uses beyond missing data.

    View source ↗