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)], form = vector("character", length = ncol(data)), 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.init = NULL, ...)
ncol(data), specifying the elementary imputation method to be used for each column in data. If specified as a single string, the same method will be used for all columns. The default imputation method (when no argument is specified) depends on the measurement level of the target column and are specified by the
defaultMethodargument. Columns that need not be imputed have the empty method
''. See details for more information.
ncol(data)containing 0/1 data specifying the set of predictors to be used for each target column. Rows correspond to target variables (i.e. variables to be imputed), in the sequence as they appear in data. A value of '1' means that the column variable is used as a predictor for the target variable (in the rows). The diagonal of
predictorMatrixmust be zero. The default for
predictorMatrixis that all other columns are used as predictors (sometimes called massive imputation). Note: For two-level imputation codes '2' and '-2' are also allowed.
1:ncol(data)implies that columns are imputed from left to right. It is possible to specify one of the keywords
'roman'(left to right),
'arabic'(right to left),
'monotone'(sorted in increasing amount of missingness) and
'revmonotone'(reverse of monotone). The keyword should be supplied as a string and may be abbreviated.
ncol(data), specifying formulae. Each string is parsed and executed within the
sampler()function to create terms for the predictor. The default is to do nothing, indicated by a vector of empty strings
''. The main value lies in the easy specification of interaction terms. The user must ensure that the set of variables in the formula match those in
ncol(data), specifying expressions. Each string is parsed and executed within the
sampler()function to postprocess imputed values. The default is to do nothing, indicated by a vector of empty strings
pmm, predictive mean matching (numeric data)
logreg, logistic regression imputation (binary data, factor with 2 levels)
polyreg, polytomous regression imputation for unordered categorical data (factor >= 2 levels)
polr, proportional odds model for (ordered, >= 2 levels)
TRUE, diagnostic information will be appended to the value of the function. If
FALSE, only the imputed data are saved. The default is
micewill print history on console. Use
print=FALSEfor silent computation.
set.seed()for offsetting the random number generator. Default is to leave the random number generator alone.
methodargument. Included for backwards compatibility.
defaultMethodargument. Included for backwards compatibility.
data, without missing data, used to initialize imputations before the start of the iterative process. The default
NULLimplies that starting imputation are created by a simple random draw from the data. Note that specification of
data.initwill start the
mGibbs sampling streams from the same imputations.
mids(multiply imputed data set)
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
Built-in elementary imputation methods are:
These corresponding functions are coded in the
mice library under
method is a string with the
name of the elementary imputation method name, for example
method argument specifies the methods to be used. For the
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
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
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
as the formula argument in a call to
data[!r[,j],]). This provides a simple mechanism for specifying determinstic
dependencies among the columns. For example, suppose that the missing entries
data$weight are imputed. The body
mass index (BMI) can be calculated within
mice by specifying the
'~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
system is exactly singular. Though not strictly needed, it is often useful
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
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. (2012). Flexible Imputation of Missing Data. Boca Raton, FL: Chapman & Hall/CRC Press.
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.
Van Buuren, S. (2007) Multiple imputation of discrete and continuous data by fully conditional specification. Statistical Methods in Medical Research, 16, 3, 219--242.
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.
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.
# 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'))