Plotting Diagnostics for Linear Models

This document explains plotting diagnostics for LM and GLM using {ggplot2} and {ggfortify}.

Plotting Diagnostics for Linear Models

{ggfortify} let {ggplot2} know how to interpret lm objects. After loading {ggfortify}, you can use ggplot2::autoplot function for lm objects.

library(ggfortify)
autoplot(lm(Petal.Width ~ Petal.Length, data = iris), label.size = 3)

You can select desired plot by which option as the same manner as standard plot. Also, ncol and nrow allows you to specify the number of subplot columns and rows.

par(mfrow = c(1, 2))
m <- lm(Petal.Width ~ Petal.Length, data = iris)

autoplot(m, which = 1:6, ncol = 3, label.size = 3)

Plotting Diagnostics for Generalized Linear Models

It also suppotgs glm instance.

m <- glm(Murder ~ Assault + UrbanPop + Rape,
         family = gaussian, data = USArrests)

autoplot(m, which = 1:6, label.size = 3)

Decorating Plots

Because {ggplot2} itself cannot handle different kinds of plots in a single instance, {ggfortify} handle them using its original class named ggmultiplot. You can use + operator to decorate ggmultiplot.

class(autoplot(m))
autoplot(m, label.size = 3) + theme_bw()

Specifing Plotting Options

Some properties can be changed by passing corresponding keywords. For example, colour keyword is for data points, smooth.colour is for smoothing lines and ad.colour is for additional auxiliary lies. Also, ncol and nrow control facet layout. Use help(autoplot.lm) (or help(autoplot.*) for any other objects) to check available options.

autoplot(m, which = 1:6, colour = 'dodgerblue3',
         smooth.colour = 'black', smooth.linetype = 'dashed',
         ad.colour = 'blue',
         label.size = 3, label.n = 5, label.colour = 'blue',
         ncol = 3)

Also, you can use column names for these properties. Note that lm and glm instances doesn’t retain original data, you should pass original data via data keyword to use column names not included in the model.

autoplot(lm(Petal.Width ~ Petal.Length, data = iris), data = iris,
         colour = 'Species', label.size = 3)

Plotting {glmnet}

{ggfortify} supports {glmnet} package which supports Regularized Generalized Linear Models (Ridge, Lasso and Elastic-net).

library(glmnet)
data(QuickStartExample)
fit <- glmnet::glmnet(x, y)
autoplot(fit)

fit <- glmnet::cv.glmnet(x, y)
autoplot(fit, colour = 'blue')