| vif_select | R Documentation |
Wraps collinear_select() to automatize multicollinearity filtering via variance inflation factors (VIF) in dataframes with numeric and categorical predictors.
The argument max_vif determines the maximum variance inflation factor allowed in the resulting selection of predictors.
The argument preference_order accepts a character vector of predictor names ranked from first to last index, or a dataframe resulting from preference_order(). When two predictors in this vector or dataframe are highly collinear, the one with a lower ranking is removed. This option helps protect predictors of interest. If not provided, predictors are ranked from lower to higher multicollinearity.
Please check the sections Variance Inflation Factors and VIF-based Filtering at the end of this help file for further details.
vif_select(
df = NULL,
response = NULL,
predictors = NULL,
preference_order = NULL,
max_vif = 5,
quiet = FALSE,
...
)
df |
(required; dataframe, tibble, or sf) A dataframe with responses
(optional) and predictors. Must have at least 10 rows for pairwise
correlation analysis, and |
response |
(optional; character or NULL) Name of one response variable in |
predictors |
(optional; character vector or NULL) Names of the
predictors in |
preference_order |
(optional; character vector, dataframe from
|
max_vif |
(optional, numeric or NULL) Maximum Variance Inflation Factor allowed for |
quiet |
(optional; logical) If FALSE, messages are printed. Default: FALSE. |
... |
(optional) Internal args (e.g. |
character vector of selected predictors
VIF for predictor a is computed as 1/(1-R^2), where R^2 is
the multiple R-squared from regressing a on the other predictors.
Recommended maximums commonly used are 2.5, 5, and 10.
vif_select ranks numeric predictors (user preference_order
if provided, otherwise from lower to higher VIF) and sequentially adds
predictors whose VIF against the current selection is below max_vif.
Blas M. Benito, PhD
David A. Belsley, D.A., Kuh, E., Welsch, R.E. (1980). Regression Diagnostics: Identifying Influential Data and Sources of Collinearity. John Wiley & Sons. DOI: 10.1002/0471725153.
Other multicollinearity_filtering:
collinear(),
collinear_select(),
cor_select(),
step_collinear()
data(vi_smol)
## OPTIONAL: parallelization setup
## irrelevant when all predictors are numeric
## only worth it for large data with many categoricals
# future::plan(
# future::multisession,
# workers = future::availableCores() - 1
# )
## OPTIONAL: progress bar
# progressr::handlers(global = TRUE)
#predictors
predictors = c(
"koppen_zone", #character
"soil_type", #factor
"topo_elevation", #numeric
"soil_temperature_mean" #numeric
)
#predictors ordered from lower to higher multicollinearity
x <- vif_select(
df = vi_smol,
predictors = predictors,
max_vif = 5
)
x
#with custom preference order
x <- vif_select(
df = vi_smol,
predictors = predictors,
preference_order = c(
"koppen_zone",
"soil_type"
),
max_vif = 5
)
x
#with automated preference order
df_preference <- preference_order(
df = vi_smol,
response = "vi_numeric",
predictors = predictors
)
df_preference
x <- cor_select(
df = vi_smol,
predictors = predictors,
preference_order = df_preference,
max_cor = 0.7
)
x
## OPTIONAL: disable parallelization
#future::plan(future::sequential)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.