Creates plots for examining the possible dependence of spread on level, or an extension of these plots to the studentized residuals from linear models.

`spreadLevelPlot(x, ...)`slp(...)

# S3 method for formula
spreadLevelPlot(x, data=NULL, subset, na.action,
main=paste("Spread-Level Plot for", varnames[response],
"by", varnames[-response]), ...)

# S3 method for default
spreadLevelPlot(x, by, robust.line=TRUE,
start=0, xlab="Median", ylab="Hinge-Spread",
point.labels=TRUE, las=par("las"),
main=paste("Spread-Level Plot for", deparse(substitute(x)),
"by", deparse(substitute(by))),
col=carPalette()[1], col.lines=carPalette()[2],
pch=1, lwd=2, grid=TRUE, ...)

# S3 method for lm
spreadLevelPlot(x, robust.line=TRUE,
xlab="Fitted Values", ylab="Absolute Studentized Residuals", las=par("las"),
main=paste("Spread-Level Plot for\n", deparse(substitute(x))),
pch=1, col=carPalette()[1], col.lines=carPalette()[2:3], lwd=2, grid=TRUE,
id=FALSE, smooth=TRUE, ...)
# S3 method for spreadLevelPlot
print(x, ...)

x

a formula of the form `y ~ x`

, where `y`

is a numeric vector
and `x`

is a factor, or an `lm`

object to be plotted; alternatively a numeric vector.

data

an optional data frame containing the variables to be plotted.
By default the variables are taken from the environment from which
`spreadLevelPlot`

is called.

subset

an optional vector specifying a subset of observations to be used.

na.action

a function that indicates what should happen when the data contain `NA`

s.
The default is set by the `na.action`

setting of `options`

.

by

a factor, numeric vector, or character vector defining groups.

robust.line

if `TRUE`

a robust line is fit using the `rlm`

function in
the `MASS`

package; if `FALSE`

a line is fit using `lm`

.

start

add the constant `start`

to each data value.

main

title for the plot.

xlab

label for horizontal axis.

ylab

label for vertical axis.

point.labels

if `TRUE`

label the points in the plot with group names.

las

if `0`

, ticks labels are drawn parallel to the
axis; set to `1`

for horizontal labels (see `par`

).

col

color for points; the default is the first entry
in the current car palette (see `carPalette`

and `par`

).

col.lines

for the default method, the line color, defaulting to the second entry in the car color palette;
for the `"lm"`

method, a vector of two colors for, respectively, the fitted straight line and a nonparametric regression smooth line,
default to the second and third entries in the car color palette.

pch

plotting character for points; default is `1`

(a circle, see `par`

).

lwd

line width; default is `2`

(see `par`

).

grid

If TRUE, the default, a light-gray background grid is put on the graph

id

controls point identification; if `FALSE`

(the default), no points are identified;
can be a list of named arguments to the `showLabels`

function;
`TRUE`

is equivalent to ```
list(method=list("x", "y"), n=2,
cex=1, col=carPalette()[1], location="lr")
```

,
which identifies the 2 points the most extreme horizontal ("X", absolute studentized residual) values and the 2 points
with the most extreme horizontal ("Y", fitted values) values.

smooth

specifies the smoother to be used along with its arguments; if `FALSE`

, no smoother is shown;
can be a list giving the smoother function and its named arguments; `TRUE`

, the default, is equivalent to
`list(smoother=loessLine)`

. See `ScatterplotSmoothers`

for the smoothers supplied by the
car package and their arguments.

…

arguments passed to plotting functions.

An object of class `spreadLevelPlot`

containing:

a matrix with the lower-hinge, median, upper-hinge, and hinge-spread
for each group. (Not for an `lm`

object.)

spread-stabilizing power transformation, calculated as \(1 - slope\) of the line fit to the plot.

Except for linear models, computes the statistics for, and plots, a Tukey spread-level plot of log(hinge-spread) vs. log(median) for the groups; fits a line to the plot; and calculates a spread-stabilizing transformation from the slope of the line.

For linear models, plots log(abs(studentized residuals) vs. log(fitted values). Point labeling was added in November, 2016.

The function `slp`

is an abbreviation for `spreadLevelPlot`

.

Fox, J. (2016)
*Applied Regression Analysis and Generalized Linear Models*,
Third Edition. Sage.

Fox, J. and Weisberg, S. (2019)
*An R Companion to Applied Regression*, Third Edition, Sage.

Hoaglin, D. C., Mosteller, F. and Tukey, J. W. (Eds.) (1983)
*Understanding Robust and Exploratory Data Analysis.* Wiley.

# NOT RUN { spreadLevelPlot(interlocks + 1 ~ nation, data=Ornstein) slp(lm(interlocks + 1 ~ assets + sector + nation, data=Ornstein)) # }