# plot.lm

##### Plot Diagnostics for an lm Object

Six plots (selectable by `which`

) are currently available: a plot
of residuals against fitted values, a Scale-Location plot of
$\sqrt{| residuals |}$
against fitted values, a Normal Q-Q plot, a
plot of Cook's distances versus row labels, a plot of residuals
against leverages, and a plot of Cook's distances against
leverage/(1-leverage). By default, the first three and `5`

are
provided.

- Keywords
- hplot, regression

##### Usage

```
## S3 method for class 'lm':
plot(x, which = c(1:3, 5), caption = list("Residuals vs Fitted", "Normal Q-Q",
"Scale-Location", "Cook's distance",
"Residuals vs Leverage",
expression("Cook's dist vs Leverage " * h[ii] / (1 - h[ii]))),
panel = if(add.smooth) panel.smooth else points,
sub.caption = NULL, main = "",
ask = prod(par("mfcol")) < length(which) && dev.interactive(),
...,
id.n = 3, labels.id = names(residuals(x)), cex.id = 0.75,
qqline = TRUE, cook.levels = c(0.5, 1.0),
add.smooth = getOption("add.smooth"), label.pos = c(4,2),
cex.caption = 1, cex.oma.main = 1.25)
```

##### Arguments

- x
`lm`

object, typically result of`lm`

or`glm`

.- which
- if a subset of the plots is required, specify a subset of
the numbers
`1:6`

. - caption
- captions to appear above the plots;
`character`

vector or`list`

of valid graphics annotations, see`as.graphicsAnnot`

, of length 6, the j-th entry corresponding to`which[j]`

. Can be set to`""`

or`NA`

to suppress all captions. - panel
- panel function. The useful alternative to
`points`

,`panel.smooth`

can be chosen by`add.smooth = TRUE`

. - sub.caption
- common title---above the figures if there are more
than one; used as
`sub`

(s.`title`

) otherwise. If`NULL`

, as by default, a possible abbreviated version of`deparse(x$call)`

is used. - main
- title to each plot---in addition to
`caption`

. - ask
- logical; if
`TRUE`

, the user is*ask*ed before each plot, see`par(ask=.)`

. - ...
- other parameters to be passed through to plotting functions.
- id.n
- number of points to be labelled in each plot, starting with the most extreme.
- labels.id
- vector of labels, from which the labels for extreme
points will be chosen.
`NULL`

uses observation numbers. - cex.id
- magnification of point labels.
- qqline
- logical indicating if a
`qqline()`

should be added to the normal Q-Q plot. - cook.levels
- levels of Cook's distance at which to draw contours.
- add.smooth
- logical indicating if a smoother should be added to
most plots; see also
`panel`

above. - label.pos
- positioning of labels, for the left half and right half of the graph respectively, for plots 1-3.
- cex.caption
- controls the size of
`caption`

. - cex.oma.main
- controls the size of the
`sub.caption`

only if that is*above*the figures when there is more than one.

##### Details

`sub.caption`

---by default the function call---is shown as
a subtitle (under the x-axis title) on each plot when plots are on
separate pages, or as a subtitle in the outer margin (if any) when
there are multiple plots per page.

The

The *standardized* residuals which have identical variance (under the
hypothesis). They are given as
$R_i / (s \times \sqrt{1 - h_{ii}})$
where $h_{ii}$ are the diagonal entries of the hat matrix,
`influence()$hat`

(see also `hat`

), and
where the Residual-Leverage plot uses standardized Pearson residuals
(`residuals.glm(type = "pearson")`

) for $R[i]$.

The Residual-Leverage plot shows contours of equal Cook's distance,
for values of `cook.levels`

(by default 0.5 and 1) and omits
cases with leverage one with a warning. If the leverages are constant
(as is typically the case in a balanced `aov`

situation)
the plot uses factor level combinations instead of the leverages for
the x-axis. (The factor levels are ordered by mean fitted value.)

In the Cook's distance vs leverage/(1-leverage) plot, contours of standardized residuals that are equal in magnitude are lines through the origin. The contour lines are labelled with the magnitudes.

##### References

Belsley, D. A., Kuh, E. and Welsch, R. E. (1980)
*Regression Diagnostics.* New York: Wiley.

Cook, R. D. and Weisberg, S. (1982)
*Residuals and Influence in Regression.*
London: Chapman and Hall.

Firth, D. (1991) Generalized Linear Models. In Hinkley, D. V. and
Reid, N. and Snell, E. J., eds: Pp.

Hinkley, D. V. (1975) On power transformations to
symmetry. *Biometrika* **62**, 101--111.

McCullagh, P. and Nelder, J. A. (1989)
*Generalized Linear Models.*
London: Chapman and Hall.

##### See Also

##### Examples

`library(stats)`

```
require(graphics)
## Analysis of the life-cycle savings data
## given in Belsley, Kuh and Welsch.
lm.SR <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)
plot(lm.SR)
## 4 plots on 1 page;
## allow room for printing model formula in outer margin:
par(mfrow = c(2, 2), oma = c(0, 0, 2, 0))
plot(lm.SR)
plot(lm.SR, id.n = NULL) # no id's
plot(lm.SR, id.n = 5, labels.id = NULL) # 5 id numbers
## Was default in R <= 2.1.x:
## Cook's distances instead of Residual-Leverage plot
plot(lm.SR, which = 1:4)
## Fit a smooth curve, where applicable:
plot(lm.SR, panel = panel.smooth)
## Gives a smoother curve
plot(lm.SR, panel = function(x, y) panel.smooth(x, y, span = 1))
par(mfrow = c(2,1)) # same oma as above
plot(lm.SR, which = 1:2, sub.caption = "Saving Rates, n=50, p=5")
## An example with *long* formula that needs abbreviation:
for(i in 1:5) assign(paste("long.var.name", i, sep = "."), runif(10))
plot(lm(long.var.name.1 ~
long.var.name.2 + long.var.name.3 + long.var.name.4 + long.var.name.5))
```

*Documentation reproduced from package stats, version 3.3, License: Part of R 3.3*