| make_full_rank {WeightIt} | R Documentation |
Make a design matrix full rank
Description
When writing user-defined methods for use with
weightit(), it may be necessary to take the potentially non-full rank
covs data frame and make it full rank for use in a downstream
function. This function performs that operation.
Usage
make_full_rank(mat, with.intercept = TRUE)
Arguments
mat |
a numeric matrix or data frame to be transformed. Typically this
contains covariates. |
with.intercept |
whether an intercept (i.e., a vector of 1s) should be
added to |
Details
make_full_rank() calls qr() to find the rank and linearly
independent columns of mat, which are retained while others are
dropped. If with.intercept is set to TRUE, an intercept column
is added to the matrix before calling qr(). Note that dependent
columns that appear later in mat will be dropped first.
See example at method_user.
Value
An object of the same type as mat containing only linearly
independent columns.
Note
Older versions would drop all columns that only had one value. With
with.intercept = FALSE, if only one column has only one value, it
will not be removed, and it will function as though there was an intercept
present; if more than only column has only one value, only the first one
will remain.
See Also
Examples
set.seed(1000)
c1 <- rbinom(10, 1, .4)
c2 <- 1-c1
c3 <- rnorm(10)
c4 <- 10*c3
mat <- data.frame(c1, c2, c3, c4)
make_full_rank(mat) #leaves c2 and c4
make_full_rank(mat, with.intercept = FALSE) #leaves c1, c2, and c4