| impute_hotdeck {simputation} | R Documentation |
Hot deck imputation
Description
Hot-deck imputation methods include random and sequential hot deck, k-nearest neighbours imputation and predictive mean matching.
Usage
impute_rhd(
dat,
formula,
pool = c("complete", "univariate", "multivariate"),
prob,
backend = getOption("simputation.hdbackend", default = c("simputation", "VIM")),
...
)
impute_shd(
dat,
formula,
pool = c("complete", "univariate", "multivariate"),
order = c("locf", "nocb"),
backend = getOption("simputation.hdbackend", default = c("simputation", "VIM")),
...
)
impute_pmm(
dat,
formula,
predictor = impute_lm,
pool = c("complete", "univariate", "multivariate"),
...
)
impute_knn(
dat,
formula,
pool = c("complete", "univariate", "multivariate"),
k = 5,
backend = getOption("simputation.hdbackend", default = c("simputation", "VIM")),
...
)
Arguments
dat |
|
formula |
|
pool |
|
prob |
|
backend |
|
... |
further arguments passed to
|
order |
|
predictor |
|
k |
|
Model specification
Formulas are of the form
IMPUTED_VARIABLES ~ MODEL_SPECIFICATION [ | GROUPING_VARIABLES ]
The left-hand-side of the formula object lists the variable or variables to be imputed. The interpretation of the independent variables on the right-hand-side depends on the imputation method.
impute_rhdVariables inMODEL_SPECIFICATIONand/orGROUPING_VARIABLESare used to split the data set into groups prior to imputation. Use~ 1to specify that no grouping is to be applied.impute_shdVariables inMODEL_SPECIFICATIONare used to sort the data. When multiple variables are specified, each variable after the first serves as tie-breaker for the previous one.impute_knnThe predictors are used to determine Gower's distance between records (seegower_topn). This may include the variables to be imputed..impute_pmmPredictive mean matching. TheMODEL_SPECIFICATIONis passed through to thepredictorfunction.
If grouping variables are specified, the data set is split according to the values of those variables, and model estimation and imputation occur independently for each group.
Grouping using dplyr::group_by is also supported. If groups are
defined in both the formula and using dplyr::group_by, the data is
grouped by the union of grouping variables. Any missing value in one of the
grouping variables results in an error.
Methodology
Random hot deck imputation with impute_rhd can be applied to
numeric, categorical or mixed data. A missing value is copied from a sampled
record. Optionally samples are taken within a group, or with non-uniform
sampling probabilities. See Andridge and Little (2010) for an overview
of hot deck imputation methods.
Sequential hot deck imputation with impute_rhd can be applied
to numeric, categorical, or mixed data. The dataset is sorted using the
‘predictor variables’. Missing values or combinations thereof are copied
from the previous record where the value(s) are available in the case
of LOCF and from the next record in the case of NOCF.
Predictive mean matching with impute_pmm can be applied to
numeric data. Missing values or combinations thereof are first imputed using
a predictive model. Next, these predictions are replaced with observed
(combinations of) values nearest to the prediction. The nearest value is the
observed value with the smallest absolute deviation from the prediction.
K-nearest neighbour imputation with impute_knn can be applied
to numeric, categorical, or mixed data. For each record containing missing
values, the k most similar completed records are determined based on
Gower's (1977) similarity coefficient. From these records the actual donor is
sampled.
Using the VIM backend
The VIM package has efficient implementations of several popular imputation methods. In particular, its random and sequential hotdeck implementation is faster and more memory-efficient than that of the current package. Moreover, VIM offers more fine-grained control over the imputation process then simputation.
If you have this package installed, it can be used by setting
backend="VIM" for functions supporting this option. Alternatively, one
can set options(simputation.hdbackend="VIM") so it becomes the
default.
Simputation will map the simputation call to a function in the VIM package. In particular:
impute_rhdis mapped toVIM::hotdeckwhere imputed variables are passed to thevariableargument and the union of predictor and grouping variables are passed todomain_var. Extra arguments in...are passed toVIM::hotdeckas well. Argumentpoolis ignored.impute_shdis mapped toVIM::hotdeckwhere imputed variables are passed to thevariableargument, predictor variables toord_varand grouping variables todomain_var. Extra arguments in...are passed toVIM::hotdeckas well. Argumentspoolandorderare ignored. InVIMthe donor pool is determined on a per-variable basis, equivalent to settingpool="univariate"with the simputation backend. VIM is LOCF-based. Differences between simputation andVIMlikely occurr when the sorting variables contain missings.impute_knnis mapped toVIM::kNNwhere imputed variables are passed tovariable, predictor variables are passed todist_varand grouping variables are ignored with a message. Extra arguments in...are passed toVIM::kNNas well. Argumentpoolis ignored. Note that simputation adheres stricktly to the Gower's original definition of the distance measure, while VIM uses a generalized variant that can take ordered factors into account.
By default, VIM's imputation functions add indicator variables to the
original data to trace what values have been imputed. This is switched off by
default for consistency with the rest of the simputation package, but it may
be turned on again by setting imp_var=TRUE.
References
Andridge, R.R. and Little, R.J., 2010. A review of hot deck imputation for survey non-response. International statistical review, 78(1), pp.40-64.
Gower, J.C., 1971. A general coefficient of similarity and some of its properties. Biometrics, pp.857–871.
See Also
Other imputation:
impute_cart(),
impute_lm(),
impute()