makepredictcall {stats} | R Documentation |
A utility to help model.frame.default
create the right
matrices when predicting from models with terms like (univariate)
poly
or ns
.
makepredictcall(var, call)
var |
A variable. |
call |
The term in the formula, as a call. |
This is a generic function with methods for poly
, bs
and
ns
: the default method handles scale
. If
model.frame.default
encounters such a term when
creating a model frame, it modifies the predvars
attribute of
the terms supplied by replacing the term with one which will work for
predicting new data. For example makepredictcall.ns
adds
arguments for the knots and intercept.
To make use of this, have your model-fitting function return the
terms
attribute of the model frame, or copy the predvars
attribute of the terms
attribute of the model frame to your
terms
object.
To extend this, make sure the term creates variables with a class, and write a suitable method for that class.
A replacement for call
for the predvars
attribute of
the terms.
model.frame
, poly
, scale
;
bs
and ns
in package splines.
cars
for an example of prediction from a polynomial fit.
require(graphics)
## using poly: this did not work in R < 1.5.0
fm <- lm(weight ~ poly(height, 2), data = women)
plot(women, xlab = "Height (in)", ylab = "Weight (lb)")
ht <- seq(57, 73, length.out = 200)
nD <- data.frame(height = ht)
pfm <- predict(fm, nD)
lines(ht, pfm)
pf2 <- predict(update(fm, ~ stats::poly(height, 2)), nD)
stopifnot(all.equal(pfm, pf2)) ## was off (rel.diff. 0.0766) in R <= 3.5.0
## see also example(cars)
## see bs and ns for spline examples.