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 model
can be
found
environment in which variables in model
can be found
logical; should partial residuals be plotted?
add rugplots (jittered 1-d histograms) to the axes?
which terms to plot (default NULL
means 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, NULL
or FALSE
mean
no titles.
color and line width for the ‘term curve’,
see lines
.
color, line type and line width for the
‘twice-standard-error curve’ when se = TRUE
.
color, plotting character expansion and type
for partial residuals, when partial.resid = TRUE
, see
points
.
logical; if TRUE
, the user is asked before
each plot, see par(ask=.)
.
Should x-axis ticks use factor levels or numbers for factor terms?
NULL
or a function with the same arguments as
panel.smooth
to draw a smooth through the partial
residuals for non-factor terms
Passed to smooth
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 FALSE
plots 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 smooth-panel.smooth
.
other graphical parameters.
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.
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.
For (generalized) linear models, plot.lm
and
predict.glm
.
# NOT RUN {
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")
# }
# NOT RUN {
## 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")
# }
Run the code above in your browser using DataLab