transcan
imputation and print, summarize, and subscript
variables that have NAs filled-in with imputed values. The simple
imputation method involves filling in NAs with constants,
with a specified single-valued function of the non-NAs, or from
a sample (with replacement) from the non-NA values (this is useful
in multiple imputation).
More complex imputations can be done
with the
transcan
function, which also works with the generic methods
shown here, i.e.,
impute
can take a
transcan
object and use the
imputed values created by
transcan
(with
imputed=TRUE
) to fill-in NAs.
The
print
method places * after variable values that were imputed.
The
summary
method summarizes all imputed values and then uses
the next
summary
method available for the variable.
The subscript method preserves attributes of the variable and subsets
the list of imputed values corresponding with how the variable was
subsetted. The
is.imputed
function is for checking if observations
are imputed.
impute(x, ...) ## Default S3 method: impute(x, fun=median, ...) ## S3 method for class 'impute': print(x, ...) ## S3 method for class 'impute': summary(object, ...) is.imputed(x)
transcan
, or a vector needing
basic unconditional imputation. If there are no
NA
s and
x
is a vector, it is returned unchanged.
median
.
If instead of specifying a function as
fun
, a single value or vector
(numeric, or character if
object
is a factor) is specified,
those values are used for insertion.
fun
can also be the character
string
"random"
to draw random values for imputation, with the random
values not forced to be the same if there are multiple NAs.
For a vector of constants, the vector must be of length one
(indicating the same value replaces all NAs) or must be as long as
the number of NAs, in which case the values correspond to consecutive NAs
to replace. For a factor
object
, constants for imputation may include
character values not in the current levels of
object
. In that
case new levels are added.
If
object
is of class
"factor"
,
fun
is ignored and the
most frequent category is used for imputation.
"impute"
"impute"
placed in front of existing classes.
For
is.imputed
, a vector of logical values is returned (all
TRUE
if
object
is not of class
impute
).
Frank Harrell
Department of Biostatistics
Vanderbilt University
mailto:f.harrell@vanderbilt.edu
age <- c(1,2,NA,4) age.i <- impute(age) # Could have used impute(age,2.5), impute(age,mean), impute(age,"random") age.i summary(age.i) is.imputed(age.i)