This helper function attempts to find blocks of variables in the
specification of the formulas
and/or predictorMatrix
objects. Blocks specified by formulas
may consist of
multiple variables. Blocks specified by predictorMatrix
are
assumed to consist of single variables. Any duplicates in names are
removed, and the formula specification is preferred.
predictorMatrix
and formulas
. When both arguments
specify models for the same block, the model for the
predictMatrix
is removed, and priority is given to the
specification given in formulas
.
Arguments
- formulas
A named list of formula's, or expressions that can be converted into formula's by
as.formula
. List elements correspond to blocks. The block to which the list element applies is identified by its name, so list names must correspond to block names. Theformulas
argument is an alternative to thepredictorMatrix
argument that allows for more flexibility in specifying imputation models, e.g., for specifying interaction terms.- predictorMatrix
A numeric matrix of
length(blocks)
rows andncol(data)
columns, containing 0/1 data specifying the set of predictors to be used for each target column. Each row corresponds to a variable block, i.e., a set of variables to be imputed. A value of1
means that the column variable is used as a predictor for the target block (in the rows). By default, thepredictorMatrix
is a square matrix ofncol(data)
rows and columns with all 1's, except for the diagonal. Note: For two-level imputation models (which have"2l"
in their names) other codes (e.g,2
or-2
) are also allowed.
Examples
form <- list(bmi + hyp ~ chl + age, chl ~ bmi)
pred <- make.predictorMatrix(nhanes[, c("age", "chl")])
construct.blocks(formulas = form, pred = pred)
#> $F1
#> [1] "bmi" "hyp"
#>
#> $chl
#> [1] "chl"
#>
#> $age
#> [1] "age"
#>
#> attr(,"calltype")
#> F1 chl age
#> "formula" "formula" "pred"