mice {mice} | R Documentation |
Generates Multivariate Imputations by Chained Equations (MICE)
mice(data, m = 5, method = vector("character",length=ncol(data)), predictorMatrix = (1 - diag(1, ncol(data))), visitSequence = (1:ncol(data))[apply(is.na(data),2,any)], post = vector("character", length = ncol(data)), defaultMethod = c("pmm","logreg","polyreg","polr"), maxit = 5, diagnostics = TRUE, printFlag = TRUE, seed = NA, imputationMethod = NULL, defaultImputationMethod = NULL, ... )
data |
A data frame or a matrix containing the incomplete data. Missing values are coded as |
m |
Number of multiple imputations. The default is |
method |
Can be either a single string,
or a vector of strings with length |
predictorMatrix |
A square matrix of size |
visitSequence |
A vector of integers of arbitrary length, specifying the column indices
of the visiting sequence. The visiting sequence is the column order that
is used to impute the data during one pass through the data. A
column may be visited more than once. All incomplete columns that are
used as predictors should be visited, or else the function will stop
with an error. The default sequence |
post |
A vector of strings with length |
defaultMethod |
A vector of three strings containing the default imputation methods for numerical columns, factor
columns with 2 levels, and columns with (unordered or ordered) factors with more than two levels, respectively. If nothing is
specified, the following defaults will be used:
|
maxit |
A scalar giving the number of iterations. The default is 5. |
diagnostics |
A Boolean flag. If |
printFlag |
If |
seed |
An integer that is used as argument by the |
imputationMethod |
Same as |
defaultImputationMethod |
Same as |
... |
Named arguments that are passed down to the elementary imputation functions. |
Generates multiple imputations for incomplete multivariate data by Gibbs sampling. Missing data can occur anywhere in the data. The algorithm imputes an incomplete column (the target column) by generating 'plausible' synthetic values given other columns in the data. Each incomplete column must act as a target column, and has its own specific set of predictors. The default set of predictors for a given target consists of all other columns in the data. For predictors that are incomplete themselves, the most recently generated imputations are used to complete the predictors prior to imputation of the target column.
A separate univariate imputation model can be specified for each column. The default imputation method depends on the measurement level of the target column. In addition to these, several other methods are provided. You can also write their own imputation functions, and call these from within the algorithm.
The data may contain categorical variables that are used in a
regressions on other variables. The algorithm creates dummy variables
for the categories of these variables, and imputes these from the
corresponding categorical variable. The extended model containing the
dummy variables is called the padded model. Its structure is stored in
the list component pad
.
Built-in elementary imputation methods are:
pmm
Predictive mean matching (numeric)
norm
Bayesian linear regression (numeric)
norm.nob
Linear regression ignoring model error (numeric)
mean
Unconditional mean imputation (numeric)
2l.norm
Two-level normal imputation (numeric)
logreg
Logistic regression (factor, 2 levels)
polyreg
Polytomous logistic regression (factor, >= 2 levels)
polr
Proportional odds model (ordered, >=2 levels)
lda
Linear discriminant analysis (factor, >= 2 categories)
sample
Random sample from the observed values (any)
These corresponding functions are coded in the mice
library under
names
mice.impute.method
, where method
is a string with the name of the elementary imputation method name,
for example norm
. The method
argument specifies the methods to be used.
For the j
'th column, mice()
calls the first occurence of
paste("mice.impute.",method[j],sep="")
in the search path.
The mechanism allows uses to write customized imputation function,
mice.impute.myfunc
. To call it for all columns specify
method="myfunc"
.
To call it only for, say, column 2 specify
method=c("norm","myfunc","logreg",...)
.
Passive imputation:
mice()
supports a special built-in method, called passive imputation. This
method can be used to ensure that a data transform always depends on the
most recently generated imputations.
In some cases, an imputation model may need transformed data in addition
to the original data (e.g. log, quadratic, recodes, interaction, sum scores,
and so on).
Passive imputation maintains consistency among different transformations of the same data.
Passive imputation is invoked if ~
is specified as the first
character of the string that specifies the elementary method.
mice()
interprets the entire string, including the ~
character,
as the formula argument
in a call to model.frame(formula, data[!r[,j],])
. This provides a simple
mechanism for specifying determinstic dependencies among the
columns. For example, suppose that the missing entries in
variables data$height
and data$weight
are imputed. The
body mass index (BMI) can be calculated within mice
by
specifying the string "~I(weight/height^2)"
as the elementary
imputation method for the target column data$bmi
.
Note that the ~
mechanism works only on those entries which have
missing values in the target column. You should make sure that the
combined observed and imputed parts of the target column make sense. An
easy way to create consistency is by coding all entries in the target as
NA
, but for large data sets, this could be inefficient.
Note that you may also need to adapt the default predictorMatrix
to
evade linear dependencies among the predictors that could cause errors
like Error in solve.default()
or Error: system is exactly singular
.
Though not strictly needed, it is often
useful to specify visitSequence
such that the column that is imputed by
the ~
mechanism is visited each time after one of its predictors was
visited. In that way, deterministic relation between columns will always
be synchronized.
Returns an object of class mids
(multiply imputed data set) with components
call |
The call that created the object |
data |
A copy of the incomplete data set |
m |
The number of imputations |
nmis |
An array of length |
imp |
A list of |
method |
A vector of strings of length |
predictorMatrix |
A square matrix of size |
visitSequence |
The sequence in which columns are visited |
post |
A vector of strings of length |
seed |
The seed value of the solution |
iteration |
Last Gibbs sampling iteration number |
lastSeedValue |
The most recent seed value |
chainMean |
An array containing the mean of the generated multiple
imputations. The array can be used for monitoring convergence.
Factors are replaced by their numerical representation using |
chainVar |
An array with similar structure of |
pad |
A list containing various settings of the padded imputation model,
i.e. the imputation model after creating dummy variables. Normally,
this list is only useful for error checking. List members are |
loggedEvents |
A matrix with six columns containing a record of automatic
removal actions. It is |
Stef van Buuren (stef.vanbuuren@tno.nl), Karin Groothuis-Oudshoorn (c.g.m.oudshoorn@utwente.nl) (2000-2010) with contributions of Roel de Jong, Jason Turner, John Fox, Frank E. Harrell, and Peter Malewski.
Van Buuren, S., Groothuis-Oudshoorn, K. (2011).
mice
: Multivariate Imputation by Chained Equations in R
.
Journal of Statistical Software, 45(3), 1-67.
http://www.jstatsoft.org/v45/i03/
Van Buuren, S., Brand, J.P.L., Groothuis-Oudshoorn C.G.M., Rubin, D.B. (2006) Fully conditional specification in multivariate imputation. Journal of Statistical Computation and Simulation, 76, 12, 1049–1064. http://www.stefvanbuuren.nl/publications/FCS in multivariate imputation - JSCS 2006.pdf
Van Buuren, S. (2007) Multiple imputation of discrete and continuous data by fully conditional specification. Statistical Methods in Medical Research, 16, 3, 219–242. http://www.stefvanbuuren.nl/publications/MI by FCS - SMMR 2007.pdf
Van Buuren, S., Boshuizen, H.C., Knook, D.L. (1999) Multiple imputation of missing blood pressure covariates in survival analysis. Statistics in Medicine, 18, 681–694. http://www.stefvanbuuren.nl/publications/Multiple imputation - Stat Med 1999.pdf
Brand, J.P.L. (1999) Development, implementation and evaluation of multiple imputation strategies for the statistical analysis of incomplete data sets. Dissertation. Rotterdam: Erasmus University.
complete
, mids
, with.mids
, set.seed
# do default multiple imputation on a numeric matrix imp <- mice(nhanes) imp # list the actual imputations for BMI imp$imputations$bmi # first completed data matrix complete(imp) # imputation on mixed data with a different method per column mice(nhanes2, meth=c("sample","pmm","logreg","norm"))