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 ‘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
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
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) 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
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,
e.g.to overlay the results of two different models or to plot
plot = FALSE, a list with one element for each plot which
would have been produced. Each element of the list is a data frame
y, and optionally the pointwise
se. For continuous predictors
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")