vif {car} | R Documentation |
Variance Inflation Factors
Description
Calculates variance-inflation and generalized variance-inflation factors (VIFs and GVIFs) for linear, generalized linear, and other regression models.
Usage
vif(mod, ...)
## Default S3 method:
vif(mod, ...)
## S3 method for class 'lm'
vif(mod, type=c("terms", "predictor"), ...)
## S3 method for class 'merMod'
vif(mod, ...)
## S3 method for class 'polr'
vif(mod, ...)
## S3 method for class 'svyolr'
vif(mod, ...)
Arguments
mod |
for the default method, an object that responds to
|
type |
for unweighted |
... |
not used. |
Details
If all terms in an unweighted linear model have 1 df, then the usual variance-inflation factors are calculated.
If any terms in an unweighted linear model have more than 1 df, then generalized variance-inflation factors (Fox and Monette, 1992) are calculated. These are interpretable as the inflation in size of the confidence ellipse or ellipsoid for the coefficients of the term in comparison with what would be obtained for orthogonal data.
The generalized VIFs
are invariant with respect to the coding of the terms in the model (as long as
the subspace of the columns of the model matrix pertaining to each term is
invariant). To adjust for the dimension of the confidence ellipsoid, the function
also prints GVIF^{1/(2\times df)}
where df
is the degrees of freedom
associated with the term.
Through a further generalization, the implementation here is applicable as well to other sorts of models, in particular weighted linear models, generalized linear models, and mixed-effects models.
Two methods of computing GVIFs are provided for unweighted linear models:
Setting
type="terms"
(the default) behaves like the default method, and computes the GVIF for each term in the model, ignoring relations of marginality among the terms in models with interactions. GVIFs computed in this manner aren't generally sensible.Setting
type="predictor"
focuses in turn on each predictor in the model, combining the main effect for that predictor with the main effects of the predictors with which the focal predictor interacts and the interactions; e.g., in the model with formulay ~ a*b + b*c
, the GVIF for the predictora
also includes theb
main effect and thea:b
interaction regressors; the GVIF for the predictorc
includes theb
main effect and theb:c
interaction; and the GVIF for the predictorb
includes thea
andc
main effects and thea:b
anda:c
interactions (i.e., the whole model), and is thus necessarily 1. These predictor GVIFs should be regarded as experimental.
Specific methods are provided for ordinal regression model objects produced by polr
in the MASS package and svyolr
in the survey package, which are "intercept-less"; VIFs or GVIFs for linear and similar regression models without intercepts are generally not sensible.
Value
A vector of VIFs, or a matrix containing one row for each term, and
columns for the GVIF, df, and GVIF^{1/(2\times df)}
, the last
of which is intended to be comparable across terms of different dimension.
Author(s)
John Fox jfox@mcmaster.ca and Henric Nilsson
References
Fox, J. and Monette, G. (1992) Generalized collinearity diagnostics. JASA, 87, 178–183.
Fox, J. (2016) Applied Regression Analysis and Generalized Linear Models, Third Edition. Sage.
Fox, J. and Weisberg, S. (2018) An R Companion to Applied Regression, Third Edition, Sage.
Examples
vif(lm(prestige ~ income + education, data=Duncan))
vif(lm(prestige ~ income + education + type, data=Duncan))
vif(lm(prestige ~ (income + education)*type, data=Duncan),
type="terms") # not recommended
vif(lm(prestige ~ (income + education)*type, data=Duncan),
type="predictor")