$$~$$

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
model <- lm(mpg ~ wt * cyl + gear, data = mtcars)

# 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
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
(DV <- names(mtcars[-1]))
##  [1] "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear" "carb"
# Make list of all formulas
(formulas <- paste(DV, "~ mpg"))
##  [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
models.list <- sapply(X = formulas, FUN = lm, data = mtcars, simplify = FALSE, USE.NAMES = TRUE)

# Make diagnostic table
ass.table <- do.call("rbind", lapply(models.list, niceAss))
## 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

$$~$$

$$~$$

$$~$$

$$~$$

$$~$$

$$~$$