R: Plot Regression Terms

termplot {stats} | R Documentation

## Plot Regression Terms

### Description

Plots regression terms against their predictors, optionally with standard errors and partial residuals added.

### Usage

    termplot(model, data = NULL, envir = environment(formula(model)),
             partial.resid = FALSE, rug = FALSE,
             terms = NULL, se = FALSE,
             xlabs = NULL, ylabs = NULL, main = NULL,
             col.term = 2, lwd.term = 1.5,
             col.se = "orange", lty.se = 2, lwd.se = 1,
             col.res = "gray", cex = 1, pch = par("pch"),
             col.smth = "darkred", lty.smth = 2, span.smth = 2/3,
             ask = dev.interactive() && nb.fig < n.tms,
             use.factor.levels = TRUE, smooth = NULL, ylim = "common",
             plot = TRUE, transform.x = FALSE, ...)

### Arguments

`model` | fitted model object
`data` | data frame in which variables in `model` can be found
`envir` | environment in which variables in `model` can be found
`partial.resid` | logical; should partial residuals be plotted?
`rug` | add rugplots (jittered 1-d histograms) to the axes?
`terms` | which terms to plot (default `NULL` means all terms); a vector passed to `predict(.., type = "terms", terms = *)`.
`se` | plot pointwise standard errors?
`xlabs` | vector of labels for the x axes
`ylabs` | vector of labels for the y axes
`main` | logical, or vector of main titles; if `TRUE`, the model's call is taken as main title, `NULL` or `FALSE` mean no titles.
`col.term, lwd.term` | color and line width for the ‘term curve’, see `lines`.
`col.se, lty.se, lwd.se` | color, line type and line width for the ‘twice-standard-error curve’ when `se = TRUE`.
`col.res, cex, pch` | color, plotting character expansion and type for partial residuals, when `partial.resid = TRUE`, see `points`.
`ask` | logical; if `TRUE`, the user is asked before each plot, see `par(ask=.)`.
`use.factor.levels` | Should x-axis ticks use factor levels or numbers for factor terms?
`smooth` | `NULL` or a function with the same arguments as `panel.smooth` to draw a smooth through the partial residuals for non-factor terms
`lty.smth, col.smth, span.smth` | Passed to `smooth`
`ylim` | an optional range for the y axis, or `"common"` when a range sufficient for all the plot will be computed, or `"free"` when limits are computed for each plot.
`plot` | if set to `FALSE` plots are not produced: instead a list is returned containing the data that would have been plotted.
`transform.x` | logical vector; if an element (recycled as necessary) is `TRUE`, partial residuals for the corresponding term are plotted against transformed values. The model response is then a straight line, allowing a ready comparison against the data or against the curve obtained from `smooth-panel.smooth`.
`...` | other graphical parameters.

### Details

The `model` object must have a `predict` method that accepts `type = "terms"`, e.g., `glm` in the stats package, `coxph` and `survreg` in the survival package.

For the `partial.resid = TRUE` option `model` must have a `residuals` method that accepts `type = "partial"`, which `lm` and `glm` do.

The `data` argument should rarely be needed, but in some cases `termplot` may be unable to reconstruct the original data frame. Using `na.action=na.exclude` makes these problems less likely.

Nothing sensible happens for interaction terms, and they may cause errors.

The `plot = FALSE` option is useful when some special action is needed, e.g. to overlay the results of two different models or to plot confidence bands.

### Value

For `plot = FALSE`, a list with one element for each plot which would have been produced. Each element of the list is a data frame with variables `x`, `y`, and optionally the pointwise standard errors `se`. For continuous predictors `x` will contain the ordered unique values and for a factor it will be a factor containing one instance of each level. The list has attribute `"constant"` copied from the predicted terms object.

Otherwise, the number of terms, invisibly.

### See Also

For (generalized) linear models, `plot.lm` and `predict.glm`.

### Examples

    require(graphics)

    had.splines <- "package:splines" %in% search()
    if(!had.splines) rs <- require(splines)
    x <- 1:100
    z <- factor(rep(LETTERS[1:4], 25))
    y <- rnorm(100, sin(x/10)+as.numeric(z))
    model <- glm(y ~ ns(x, 6) + z)

    par(mfrow = c(2,2)) ## 2 x 2 plots for same model :
    termplot(model, main = paste("termplot( ", deparse(model$call)," ...)"))
    termplot(model, rug = TRUE)
    termplot(model, partial.resid = TRUE, se = TRUE, main = TRUE)
    termplot(model, partial.resid = TRUE, smooth = panel.smooth, span.smth = 1/4)
    if(!had.splines && rs) detach("package:splines")

    ## requires recommended package MASS
    hills.lm <- lm(log(time) ~ log(climb)+log(dist), data = MASS::hills)
    termplot(hills.lm, partial.resid = TRUE, smooth = panel.smooth,
            terms = "log(dist)", main = "Original")
    termplot(hills.lm, transform.x = TRUE,
             partial.resid = TRUE, smooth = panel.smooth,
    	 terms = "log(dist)", main = "Transformed")

[Package stats version 4.0.5 Index]