termplot
Plot Regression Terms
Plots regression terms against their predictors, optionally with standard errors and partial residuals added.
- Keywords
- hplot, regression
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 topredict(.., 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
orFALSE
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
, seepoints
. - ask
- logical; if
TRUE
, the user is asked before each plot, seepar(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 aspanel.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 fromsmooth-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 \href{https://CRAN.R-project.org/package=#1}{\pkg{#1}}survivalsurvival 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.\ifelse{latex}{\out{~}}{ } 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
library(stats)
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")