Expands futuremice()
functionality by allowing for
external packages and user-written functions (#550). Contributed @thomvolker
Adds GH issue templates bug_report
,
feature_request
and help_wanted
(#560).
Contributed @hanneoberman
rbind.mids()
and
cbind.mids()
to conform to CRAN policymitml
and glmnet
to imports so that
test code conforms to _R_CHECK_DEPENDS_ONLY=true
flag in
R CMD check
futuremice()
if
there is no .Random.seed
yet.predictorMatrix
for case F
by adding a predictorMatrix
argument to
make.predictorMatrix()
mice.impute.mpmm()
example codemice.impute.2lonly.pmm()
(#555)tidy()
, update()
, format()
and
sum()
R CMD check
with
_R_CHECK_DEPENDS_ONLY=true
futuremice()
that throws an error
when the number of cores is not specified, but the number of available
cores is greater than the number of imputations.mice.impute.mpmm()
that changed the
column order of the dataAdds a function futuremice()
with support for
parallel imputation using the future
package (#504).
Contributed @thomvolker, @gerkovink
Adds multivariate predictive mean matching
mice.impute.mpmm()
. (#460). Contributed @Mingyang-Cai
Adds convergence()
for convergence evaluation
(#484). Contributed @hanneoberman
Reverts the internal seed behaviour back to
mice 3.13.10
(#515). #432 introduced new local seed in
response to #426. However, various issues arose with this facility
(#459, #492, #502, #505). This version restores the old behaviour using
global .Random.seed
. Contributed @gerkovink
Adds a custom.t
argument to pool()
that
allows the advanced user to specify a custom rule for calculating the
total variance \(T\). Contributed @gerkovink
Adds new argument exclude
to
mice.impute.pmm()
that excludes a user-specified vector of
values from matching. Excluded values will not appear in the
imputations. Since the observed values are not imputed, the
user-specified values are still being used to fit the imputation model
(#392, #519). Contributed @gerkovink
.R
and .Rmd
filessampler.R
(#511)inherits()
to check on class membershipparlmice()
prop
, patterns
and
weights
matrices for pattern with only 1’sD1()
and
D2()
(#420)mice()
make.where()
test-mice.impute.rf.R
(#448).Random.seed
reads from the
.GlobalEnv
by
get(".Random.seed", envir = globalenv(), mode = "integer", inherits = FALSE)
lastSeedValue
variable namex$lastSeedValue
problem in
cbind.mids()
(#502)ampute()
mice()
by smarter random
seed initialisation (#459)drop = FALSE
buglet in
mice.impute.rf()
(#447, #448)withr
package should have
version 2.4.0 (published in January 2021) or higher. Versions
withr 2.3.0
and before may give
Error: object 'local_seed' is not exported by 'namespace:withr'
.
Either update manually, or install the patched version
mice 3.14.1
from GitHub. (#445). NOTE: withr
is no longer needed in mice 3.15.0
Function | Description |
---|---|
mice.impute.lasso.norm() |
Lasso linear regression |
mice.impute.lasso.logreg() |
Lasso logistic regression |
mice.impute.lasso.select.norm() |
Lasso selector + linear regression |
mice.impute.lasso.select.logreg() |
Lasso selector + logistic regression |
Contributed by @EdoardoCostantini (#438).
Adds Jamshidian && Jalal’s non-parametric MCAR test,
mice::MCAR()
and associated plot method. Contributed by
@cjvanlissa
(#423).
Adds two new functions pool.syn()
and
pool.scalar.syn()
that specialise pooling estimates from
synthetic data. The "reiter2003"
pooling rule assumes that
synthetic data were created from complete data. Thanks Thom Volker
(#436).
Avoids changing the global .Random.seed
(#426, #432)
by implementing withr::local_preserve_seed()
and
withr::local_seed()
. This change provides stabler behavior
in complex scripts. The change does not appear to break reproducibility
when mice()
was run with a seed. Nevertheless, if you run
into a reproducibility problem, install mice 3.13.12
or
before.
Improves the imputation of parabolic data in
mice.impute.quadratic()
, adds a parameter
quad.outcome
containing the name of the outcome variable in
the complete-data model. Contributed @Mingyang-Cai, @gerkovink (#408)
By default, mice.impute.rf()
now uses the faster
ranger
package as back-end instead of
randomForest
package. If you want the old behaviour specify
the rfPackage = "randomForest"
argument to the
mice(...)
call. Contributed @prockenschaub (#431).
Generalises pool()
so that it processes the
parameters from all gamlss
sub-models. Thanks Marcio
Augusto Diniz (#406, #405)
Uses the robust standard error estimate for pooling when
pool()
can extract robust.se
from the object
returned by broom::tidy()
(#310)
install.on.demand()
broke the standard CRAN workflow. mice 3.14.0 does not call
install.on.demand()
anymore for recommended packages. Also,
install.on.demand()
will not run anymore in non-interactive
mode.mice:::barnard.rubin()
function
for infinite dfcom
. Thanks @huftis (#441).Xi <- as.matrix(...)
in
mice.impute.2l.lmer()
that occurred when a cluster contains
only one observation (#384)predictorMatrix
to a monotone pattern if
visitSequence = "monotone"
and maxit = 1
(#316)md.pattern()
(#318, #323)make.formulas()
(#305,
#324)newdata
in
mice.mids()
(#313, #325)where
element
created in rbind()
(#319)pool()
cannot take a
mids
object (#433)mice.impute.2l.lmer()
to indicate a problem in fitting the
imputation model (#385)post
parameter (#326)mids2spss()
replaces the foreign
by haven
package. Contributed Gerko Vink (#291)tests\testhat\test-D1.R
that failed
on mitml 0.4-0
with.mids()
function to old version because the
change in commit 4634094 broke downstream package metafor
(#292)mice.impute.rf()
in finding
candidate donors (#288, #289)matchindex
C function makes predictive mean
matching 50 to 600 times faster. The speed of
pmm
is now on par with normal imputation
(mice.impute.norm()
) and with the miceFast
package, without compromising on the statistical quality of the
imputations. Thanks to Polkas https://github.com/Polkas/miceFast/issues/10 and
suggestions by Alexander Robitzsch. See #236 for more details.ignore
argument to
mice
ignore
argument to mice()
. This
argument is a logical vector of nrow(data)
elements
indicating which rows are ignored when creating the imputation model. We
may use the ignore
argument to split the data into a
training set (on which the imputation model is built) and a test set
(that does not influence the imputation model estimates). The argument
is based on the suggestion in https://github.com/amices/mice/issues/32#issuecomment-355600365.
See #32 for more background and techniques. Crafted by Patrick
Rockenschaubfilter()
function for mids
objectsfilter()
method that subsets a mids
object (multiply-imputed data set). The method accepts a logical vector
of length nrow(data)
, or an expression to construct such a
vector from the incomplete data. (#269). Crafted by Patrick
Rockenschaub.matcher
algorithm
in pmm
has changed to matchindex
for speed
improvements. If you want the old behavior, specify
mice(..., use.matcher = TRUE)
.cpp11
package
(#286)with.mids()
by calling
eval_tidy()
on a quosure. Does not yet solve #265.pool()
and
pool.scalar()
(#142, #106, #190 and others)tidy.mipo
more flexible (#276)nelsonaalen()
gets a
tibble
(#272)NA
s can appear in the imputed
data (#267)quickpred()
documentation (#268)sum.scores()
lm.mids()
,
glm.mids()
, pool.compare()
.pmm.match()
and expandcov()
return()
calls placed just before
end-of-functionprintFlag
value (#258)amices
df.residual
, which caused
problematic behavior in the D1()
, D2()
,
D3()
, anova()
and pool()
.
mice
now extracts the relevant information from other parts
of the objects returned by survival::coxph()
, which solves
long-standing issues with the integration of the Cox model (#246).Rccp
dependency to work with
tidyr 1.1.1
(#248).Non-file package-anchored link(s) in documentation object
.ampute
documentation (#251).suggests
.tidy.mipo()
and
glance.mipo()
return standardized output that conforms to
broom
specifications. Kindly contributed by Vincent Arel
Bundock (#240).D3
testing script that
produced an error on CRAN (#244).D3()
function in mice
gave incorrect
results. This version solves a problem in the calculation of the
D3
-statistic. See #226 and #228 for more details. The
documentation explains why results from mice::D3()
and
mitml::testModels()
may differ.pool()
function is now more forgiving when there is
no glance()
function (#233)remove.lindep()
by setting
eps = 0
(#225)plot.mids()
documentationmice.impute.mnar.norm()
and
mice.impute.mnar.logreg()
. These functions aid in
performing sensitivity analysis to investigate the impact of different
MNAR assumptions on the conclusion of the study. An alternative for MNAR
is the older mice.impute.ri()
function.mice
is faster. External packages
needed for imputation and analyses are now installed on demand. The
number of dependencies as estimated by
rsconnect::appDepencies()
decreased from 132 to 83.complete()
function of
tidyr
should no longer be a problem.pool()
function that
integrates better with the broom
and
broom.mixed
packages.pool.compare()
. Use D1()
instead (#220)utils::globalVariables()
tidyr
by defining
complete.mids()
as an S3 method for the
tidyr::complete()
generic (#212)pool()
function to deal with multiple sets
of parameters. Currently supported keywords are: term
(all
broom
functions), component
(some
broom.mixed
functions) and y.values
(for
multinom()
model) (#219)install.on.demand()
function for lighter
installationtoenail2
and remove dependency on
HSAUR3
ampute
in extreme cases (#216)pool
with mgcv::gam
(#218).gitattributes
for consistent line endingspolr()
always fail (#206)data.frame
(#208)mira-class
documentation (#207)CALIBERrfimpute
2lonly.norm
and 2lonly.pmm
a2
to elementwise division by a
matrix of observations2lonly.norm
and
2lonly.pmm
2lonly.pmm
2lonly.mean
now also works with
factorsimputationMethod
argument in
examples by method
check.predictorMatrix()
(#191)toenail
data from orphaned DPpackage
packageDPpackage
from Suggests
field in
DESCRIPTION
md.pattern()
(#170,
#177)as.mids
()
(#173)mice.impute.xxx()
so that mice::mice()
works
as expected (#55)mids2spss()
, thanks Edgar
Schoreit (#149)predictorMatrix
.mice 3.3.1
will impute those variables using the intercept
onlynelsonaalen()
function for data where
variables time
or status
have already been
defined (#140), thanks matthieu-faronmice 3.0.0
-
mice 3.2.0
under passive imputation.broom 0.5.0
(#128)mice.impute.2l.norm()
(#129)mice.impute.2l.norm()
(#129)D1()
(#128)md.pattern
(#126)rbind
and cbind
(#114)rbind
problem when method
is a list
(#113)parlmice
(#109)dfcom
argument to pool()
(#105,
#110)parlmice
+ bugfix (#107)parlmice
(#104)flux
(#102)estimice
(#101)parent.frame
(#98)NEWS.md
, index.Rmd
and online package
documentation.R
instead of .r
updateLog
(#8, @alexanderrobitzsch)md.pattern
(#90)m
(#89)Version 3.0 represents a major update that implements the following features:
blocks
: The main algorithm iterates over blocks. A
block is simply a collection of variables. In the common MICE algorithm
each block was equivalent to one variable, which - of course - is the
default; The blocks
argument allows mixing univariate
imputation method multivariate imputation methods. The
blocks
feature bridges two seemingly disparate approaches,
joint modeling and fully conditional specification, into one
framework;
where
: The where
argument is a logical
matrix of the same size of data
that specifies which cells
should be imputed. This opens up some new analytic
possibilities;
Multivariate tests: There are new functions D1()
,
D2()
, D3()
and anova()
that
perform multivariate parameter tests on the repeated analysis from on
multiply-imputed data;
formulas
: The old form
argument has
been redesign and is now renamed to formulas
. This provides
an alternative way to specify imputation models that exploits the full
power of R’s native formula’s.
Better integration with the tidyverse
framework,
especially for packages dplyr
, tibble
and
broom
;
Improved numerical algorithms for low-level imputation function. Better handling of duplicate variables.
Last but not least: A brand new edition AND online version of Flexible Imputation of Missing Data. Second Edition.
mids
object in mice
(thanks stephematician) (#61)rbind.mids
(thanks stephematician)
(#59)pool.compare()
in handling factors
(#60)rbind.mids
in handling where
(#59)as.mids()
, add
as()
cart
not accepting a matrix (thanks
Joerg Drechsler)pool()
to list of modelsampute
function and vignettes (Rianne
Schouten)mice.impute.2l.sys
to
mice.impute.2l.lmer
where
argument to micewy
argument to imputation functionsmice.impute.2l.sys()
, author Shahab Jolanicbind()
functionmids
objectlattice
packagexyplot.mads
mice.impute.2lonly.pmm()
ampute()
by Rianne Schoutenmice
function (thanks Ben
Ogorek)cbind.mids()
replaced by calls to
cbind()
miceVignettes
on github (thanks Gerko
Vink)README
for GitHubccn
–> ncc
, icn
–> nic
cc()
, ncc()
,
cci()
, ic()
, nic()
and
ici()
use S3
dispatchmultinom
MaxNWts type fix in polyreg
and polr
#9pool.compare
#12as.mids
if names not same as all columns #11glmer
models #5midastouch
: predictive mean matching for small
samples (thanks Philip Gaffert, Florian Meinfelder)rpart
callridge
to 2l.norm()
.o
filesas.mids()
bug that crashed
miceadds::mice.1chain()
Update of example code on /doc
Remove lots of dependencies, general cleanup
Fix impute.polyreg()
bug that bombed if there were
no predictors (thanks Jan Graffelman)
Fix as.mids()
bug that gave incorrect \(m\) (several users)
Fix pool.compare()
error for lmer
object (thanks Claudio Bustos)
Fix error in mice.impute.2l.norm()
if just one
NA
(thanks Jeroen Hoogland)
pool.scalar()
now can do Barnard-Rubin adjustmentpool()
now handles class lmerMod
from the
lme4
package.pmm.match()
for
safetymice.impute.pmm()
for
increased visibilitymice.impute.rf()
from 100 to 10 (thanks Anoop Shah)long2mids()
deprecated. Use as.mids()
insteadlattice
back into DEPENDS to find generic
xyplot()
and friends2lonly.pmm
(thanks Alexander Robitzsch,
Gerko Vink, Judith Godin)as.mids()
(thanks Tommy
Nyberg, Gerko Vink)mdc()
in example
mice.impute.quadratic()
mice.impute.rf()
if just one
NA
(thanks Anoop Shah)summary.mipo()
when
names(x$qbar)
equals NULL
(thanks Aiko
Kuhn)ncol()
in
mice.impute.2lonly.mean()