# plot.boxcoxLm: Plot Results of Box-Cox Transformations for a Linear Model In EnvStats: Package for Environmental Statistics, Including US EPA Guidance

## Description

Plot the results of calling the function `boxcox` when the argument `x` supplied to `boxcox` is an object of class `"lm"`. Three different kinds of plots are available.

The function `plot.boxcoxLm` is automatically called by `plot` when given an object of class
`"boxcoxLm"`. The names of other functions associated with Box-Cox transformations are listed under Data Transformations.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10``` ```## S3 method for class 'boxcoxLm' plot(x, plot.type = "Objective vs. lambda", same.window = TRUE, ask = same.window & plot.type != "Ojective vs. lambda", plot.pos.con = 0.375, estimate.params = FALSE, equal.axes = qq.line.type == "0-1" || estimate.params, add.line = TRUE, qq.line.type = "least squares", duplicate.points.method = "standard", points.col = 1, line.col = 1, line.lwd = par("cex"), line.lty = 1, digits = .Options\$digits, cex.main = 1.4 * par("cex"), cex.sub = par("cex"), main = NULL, sub = NULL, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, ...) ```

## Arguments

 `x` an object of class `"boxcoxLm"`. See `boxcoxLm.object` for details. `plot.type` character string indicating what kind of plot to create. Only one particular plot type will be created, unless `plot.type="All"`, in which case all plots will be created sequentially. The possible values of `plot.type` are: `"Objective vs. lambda"` (the default), `"Q-Q Plots"`, `"Tukey M-D Q-Q Plots"`, and `"All"`. `same.window` logical scalar indicating whether to produce all plots in the same graphics window (`same.window=TRUE`; the default), or to create a new graphics window for each separate plot (`same.window=FALSE`). The argument is relevant only when `plot.type` produces more than one plot (i.e., when `plot.type` is not equal to `"Objective vs. lambda"`). `ask` logical scalar supplied to the function `devAskNewPage`, indicating whether to prompt the user before creating a new plot within a single graphics window. This argument is ignored when `plot.type="Objective vs. lambda"` (since only one plot is produced) or when `same.window=FALSE`, otherwise the default value is `ask=TRUE`. `points.col` numeric scalar determining the color of the points in the plot. The default value is `points.col=1`. See the entry for `col` in the R help file for `par` for more information.

The following arguments can be supplied when `plot.type="Q-Q Plots"`,
`plot.type="Tukey M-D Q-Q Plots"`, or `plot.type="All"` (supplied to `qqPlot`):

 `plot.pos.con` numeric scalar between 0 and 1 containing the value of the plotting position constant used to construct the Q-Q plots and/or Tukey Mean-Difference Q-Q plots. The default value is `plot.pos.con=0.375`. See the help files for `qqPlot` for more information and the motivation for this choice. `estimate.params` logical scalar indicating whether to compute quantiles based on estimating the distribution parameters (`estimate.params=TRUE`) or using the distribution parameters for a standard normal distribution (i.e, `mean=0`, `sd=1`). The default value is `estimate.params=FALSE` because a standard normal Q-Q plot will yield roughly a straight line if the observations are from any normal distribution. If you specify `plot.type="Tukey M-D Q-Q Plots"`, then you need to set `estiamte.params=TRUE` unless you want to assume the transformed data come from a standard normal distribution. `equal.axes` logical scalar indicating whether to use the same range on the x- and y-axes when `plot.type="Q-Q Plots"`. The default value is `TRUE` if `qq.line.type="0-1"` or `estimate.params=TRUE`, otherwise it is `FALSE`. `add.line` logical scalar indicating whether to add a line to the plot. If `add.line=TRUE` and `plot.type="Q-Q Plots"`, a line determined by the value of `qq.line.type` is added to the plot. If `add.line=TRUE` and `plot.type="Tukey M-D Q-Q Plots"`, a horizontal line at y=0 is added to the plot. The default value is `add.line=TRUE`. `qq.line.type` character string determining what kind of line to add to the plot when `plot.type="Q-Q Plots"`. Possible values are `"least squares"` (a least squares line; the default), `"0-1"` (a line with intercept 0 and slope 1), and `"robust"` (a line is fit through the first and third quartiles of the x and y data). This argument is ignored if `add.line=FALSE`. `duplicate.points.method` a character string denoting how to plot points with duplicate (x,y) values. Possible values are `"standard"` (a single plotting symbol is plotted; the default), `"jitter"` (a separate plotting symbol is plotted for each duplicate point, where the plotting symbols cluster around the true value of x and y), and `"number"` (a single number is plotted at (x,y) that represents how many duplicate points are at that (x,y) coordinate). `line.col` numeric scalar determining the color of the line in the plot. The default value is `line.col=1`. See the entry for `col` in the R help file for `par` for more information. This argument is ignored if `add.line=FALSE`. `line.lwd` numeric scalar determining the width of the line in the plot. The default value is `line.lwd=par("cex")`. See the entry for `lwd` in the R help file for `par` for more information. This argument is ignored if `add.line=FALSE`. `line.lty` numeric scalar determining the line type (style) of the line in the plot. The default value is `line.lty=1`. See the entry for `lty` in the R help file for `par` for more information. This argument is ignored if `add.line=FALSE`. `digits` scalar indicating how many significant digits to print for the distribution parameters and the value of the objective in the sub-title. The default value is the current setting of `options("digits")`.

Graphics parameters:

 `cex.main, cex.sub, main, sub, xlab, ylab, xlim, ylim, ...` graphics parameters; see `par` for more information. The default value of `cex.main` is `cex.main=1.4 * par("cex")`. The default value of `cex.sub` is `cex.sub=par("cex")`.

## Details

The function `plot.boxcoxLm` is a method for the generic function `plot` for the class `"boxcoxLm"` (see `boxcoxLm.object`). It can be invoked by calling `plot` and giving it an object of class `"boxcoxLm"` as the first argument, or by calling `plot.boxcoxLm` directly, regardless of the class of the object given as the first argument to `plot.boxcoxLm`.

Plots associated with Box-Cox transformations are produced on the current graphics device. These can be one or all of the following:

• Objective vs. λ.

• Observed Quantiles vs. Normal Quantiles (Q-Q Plot) for the residuals of the linear model based on transformed values of the response variable for each of the values of λ.

• Tukey Mean-Difference Q-Q Plots for the residuals of the linear model based on transformed values of the response variable for each of the values of λ.

See the help files for `boxcox` and `qqPlot` for more information.

## Value

`plot.boxcoxLm` invisibly returns the first argument, `x`.

## Author(s)

Steven P. Millard ([email protected])

## References

Chambers, J. M. and Hastie, T. J. (1992). Statistical Models in S. Wadsworth & Brooks/Cole.

`qqPlot`, `boxcox`, `boxcoxLm.object`, `print.boxcoxLm`, Data Transformations, `plot`.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35``` ``` # Create an object of class "boxcoxLm", then plot the results. # The data frame Environmental.df contains daily measurements of # ozone concentration, wind speed, temperature, and solar radiation # in New York City for 153 consecutive days between May 1 and # September 30, 1973. In this example, we'll model ozone as a # function of temperature. # Fit the model with the raw Ozone data #-------------------------------------- ozone.fit <- lm(ozone ~ temperature, data = Environmental.df) boxcox.list <- boxcox(ozone.fit) # Plot PPCC vs. lambda based on Q-Q plots of residuals #----------------------------------------------------- dev.new() plot(boxcox.list) # Look at Q-Q plots of residuals for the various transformation #-------------------------------------------------------------- plot(boxcox.list, plot.type = "Q-Q Plots", same.window = FALSE) # Look at Tukey Mean-Difference Q-Q plots of residuals # for the various transformation #----------------------------------------------------- plot(boxcox.list, plot.type = "Tukey M-D Q-Q Plots", same.window = FALSE) #========== # Clean up #--------- rm(ozone.fit, boxcox.list) graphics.off() ```