\(~\)
I recently discovered a wonderful package for easily checking linear regression assumptions via diagnostic plots: the check_model()
function of the performance
package.
Let’s make a quick demonstration of this package first.
# Load necessary libraries
library(performance)
library(see)
# Note: if you haven't installed the packages above, you'll need to install them first by using:
# install.packages("performance") and install.packages("see")
# Create a regression model
<- lm(mpg ~ wt * cyl + gear, data = mtcars)
model
# Check model assumptions
check_model(model)
Wonderful! And efficient. However, sometimes, for different reasons, someone might want to check assumptions with an objective test. Testing each assumption one by one is kind of time-consuming, so I made a convenience function to accelerate this process.
Getting Started
Load the function from my github
:
source("https://raw.githubusercontent.com/RemPsyc/niceplots/master/niceAssFunction.R")
The raw output doesn’t look so nice in the console because the column names are so long, but it does look good in the viewer or when exported to a word processing software because the column names get wrapped. You can try it in Rstudio yourself with the following command:
*Warning:* running the function below for the first time will install and load the following
packages (if they are not already installed and loaded on your machine): lmtest and crayon.
Note: This will run many lines of code on your console and could take a few minutes.
View(niceAss(model))
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
This function is particularly useful when testing several models simultaneously as it makes for a nice table of results. Let’s make a short demonstration of this.
# Define our dependent variables
<- names(mtcars[-1])) (DV
## [1] "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
# Make list of all formulas
<- paste(DV, "~ mpg")) (formulas
## [1] "cyl ~ mpg" "disp ~ mpg" "hp ~ mpg" "drat ~ mpg" "wt ~ mpg"
## [6] "qsec ~ mpg" "vs ~ mpg" "am ~ mpg" "gear ~ mpg" "carb ~ mpg"
# Make list of all models
<- sapply(X = formulas, FUN = lm, data = mtcars, simplify = FALSE, USE.NAMES = TRUE)
models.list
# Make diagnostic table
<- do.call("rbind", lapply(models.list, niceAss)) ass.table
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
## Interpretation: (p) values < .05 imply assumptions are not respected.
## Diagnostic is how many assumptions are not respected for a given model or variable.
##
Use the Viewer for better results (or export it to Word using my niceTable() function)
View(ass.table)
\(~\)
\(~\)
Concluding Statement
Make sure to check out this page again if you use the code after a time or if you encounter errors, as I periodically update or improve the code.
You can always edit the function to suit your purposes, or contact me for questions or requests to modify this function at https://remi-theriault.com/contact! Thanks for reading my guide! :) \(~\)
\(~\)
\(~\)
\(~\)
\(~\)
Updated 2020-12-25
\(~\)
\(~\)
\(~\)
\(~\)
\(~\)
\(~\)