plot.lm {base} | R Documentation |

Four plots (choosable by `which`

) are currently provided: a plot
of residuals against fitted values, a Scale-Location plot of
*sqrt{| residuals |}* against fitted values, a Normal Q-Q plot,
and a plot of Cook's distances versus row labels.

plot.lm(x, which = 1:4, caption = c("Residuals vs Fitted", "Normal Q-Q plot", "Scale-Location plot", "Cook's distance plot"), panel = points, sub.caption = deparse(x$call), main = "", ask = interactive() && one.fig && .Device != "postscript", ..., id.n = 3, labels.id = names(residuals(x)), cex.id = 0.25)

`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:4` . |

`caption` |
Captions to appear above the plots |

`panel` |
Panel function. A useful alternative to
`points` is `panel.smooth` . |

`sub.caption` |
common title—above figures if there are multiple;
used as `sub` (s.`title` ) otherwise. |

`main` |
title to each plot—in addition to the above
`caption` . |

`ask` |
logical; if `TRUE` , the user is asked 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. |

`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 ``Scale-Location'' plot, also called ``Spread-Location'' or
``S-L'' plot, takes the square root of the absolute residuals in
order to diminish skewness (*sqrt{| E |}* is much less skewed
than *| E |* for Gaussian zero-mean *E*).

This `S-L' and the Q-Q plot use *standardized* residuals which
have identical variance (under the hypothesis). They are given as
*R[i] / (s*sqrt(1 - h.ii))*
where *h.ii* are the diagonal entries of the hat matrix,
`lm.influence()`

`$hat`

, see also `hat`

.

John Maindonald and Martin Maechler.

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.

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.

## Analysis of the life-cycle savings data ## given in Belsley, Kuh and Welsch. data(LifeCycleSavings) plot(lm.SR <- lm(sr ~ pop15 + pop75 + dpi + ddpi, data = LifeCycleSavings)) ## 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 ## Fit a smmooth 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)) ## Warnings: panel = panel.smoth, 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")