This document explains plotting diagnostics for LM and GLM using {ggplot2}
and {ggfortify}
.
{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)
It also suppotgs glm
instance.
m <- glm(Murder ~ Assault + UrbanPop + Rape,
family = gaussian, data = USArrests)
autoplot(m, which = 1:6, label.size = 3)
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()
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)
{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')