Plot Regression Terms
Plots regression terms against their predictors, optionally with standard errors and partial residuals added.
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, ...)
- fitted model object
- data frame in which variables in
modelcan be found
- environment in which variables in
modelcan be found
- logical; should partial residuals be plotted?
- add rugplots (jittered 1-d histograms) to the axes?
- which terms to plot (default
NULLmeans all terms); a vector passed to
predict(.., type = "terms", terms = *).
- plot pointwise standard errors?
- vector of labels for the x axes
- vector of labels for the y axes
- logical, or vector of main titles; if
TRUE, the model's call is taken as main title,
FALSEmean no titles.
- col.term, lwd.term
- color and line width for the
term curve, see
- col.se, lty.se, lwd.se
- color, line type and line width for the
se = TRUE.
- col.res, cex, pch
- color, plotting character expansion and type
for partial residuals, when
partial.resid = TRUE, see
- logical; if
TRUE, the user is asked before each plot, see
- Should x-axis ticks use factor levels or numbers for factor terms?
NULLor a function with the same arguments as
panel.smoothto draw a smooth through the partial residuals for non-factor terms
- lty.smth, col.smth, span.smth
- Passed to
- 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.
- if set to
FALSEplots are not produced: instead a list is returned containing the data that would have been plotted.
- logical vector; if an element (recycled as necessary)
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
- other graphical parameters.
data argument should rarely be needed, but in some cases
termplot may be unable to reconstruct the original data
na.action=na.exclude makes these problems less likely.
Nothing sensible happens for interaction terms, and they may cause errors.
plot = FALSE option is useful when some special action is needed,
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
y, and optionally the pointwise standard errors
se. For continuous predictors
xwill 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.
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")