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.

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

plot of chunk unnamed-chunk-1

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)

plot of chunk unnamed-chunk-2

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)

plot of chunk unnamed-chunk-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.

## [1] "ggmultiplot"
## attr(,"package")
## [1] "ggfortify"
autoplot(m, label.size = 3) + theme_bw()

plot of chunk unnamed-chunk-4

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)

plot of chunk unnamed-chunk-5

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)

plot of chunk unnamed-chunk-6

Plotting {glmnet}

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

fit <- glmnet::glmnet(x, y)

plot of chunk unnamed-chunk-7

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

plot of chunk unnamed-chunk-7