Visualizing Collinearity Diagnostics
Version 0.1.4; documentation built for pkgdown 2025-12-23
The VisCollin package provides methods to calculate diagnostics for
multicollinearity among predictors in a linear or generalized linear
model. It also provides methods to visualize those diagnostics following
Friendly & Kwan (2009), “Where’s Waldo: Visualizing Collinearity
Diagnostics”, The American Statistician, 63, 56–65.
These include:
- better tabular presentation of collinearity diagnostics that highlight the important numbers.
- a semi-graphic tableplot of the diagnostics to make warning and danger levels more salient and
- a collinearity biplot of the smallest dimensions of predictor space, where collinearity is most apparent.
Installation
| CRAN version | install.packages("VisCollin") |
| Development version | remotes::install_github("friendly/VisCollin") |
Tutorial example
library(VisCollin) library(dplyr) library(tidyr) library(car) library(corrplot) library(tinytable)
This example uses the cars data set containing various measures of
size and performance on 406 models of automobiles from 1982. Interest is
focused on predicting gas mileage, mpg.
data(cars, package = "VisCollin") str(cars) #> 'data.frame': 406 obs. of 10 variables: #> $ make : Factor w/ 30 levels "amc","audi","bmw",..: 6 4 22 1 12 12 6 22 23 1 ... #> $ model : chr "chevelle" "skylark" "satellite" "rebel" ... #> $ mpg : num 18 15 18 16 17 15 14 14 14 15 ... #> $ cylinder: int 8 8 8 8 8 8 8 8 8 8 ... #> $ engine : num 307 350 318 304 302 429 454 440 455 390 ... #> $ horse : int 130 165 150 150 140 198 220 215 225 190 ... #> $ weight : int 3504 3693 3436 3433 3449 4341 4354 4312 4425 3850 ... #> $ accel : num 12 11.5 11 12 10.5 10 9 8.5 10 8.5 ... #> $ year : int 70 70 70 70 70 70 70 70 70 70 ... #> $ origin : Factor w/ 3 levels "Amer","Eur","Japan": 1 1 1 1 1 1 1 1 1 1 ...
Fit a model
Fit a model predicting gas mileage (mpg) from the number of cylinders,
engine displacement, horsepower, weight, time to accelerate from 0 – 60
mph and model year (1970–1982). Perhaps surprisingly, only weight and
year appear to significantly predict gas mileage. What’s going on
here?
cars.mod <- lm (mpg ~ cylinder + engine + horse + weight + accel + year, data=cars) Anova(cars.mod) #> Anova Table (Type II tests) #> #> Response: mpg #> Sum Sq Df F value Pr(>F) #> cylinder 12 1 0.99 0.32 #> engine 13 1 1.09 0.30 #> horse 0 1 0.00 0.98 #> weight 1214 1 102.84 <2e-16 *** #> accel 8 1 0.70 0.40 #> year 2419 1 204.99 <2e-16 *** #> Residuals 4543 385 #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
lmtest::coeftest() shows the coefficients,