# makepredictcall

##### Utility Function for Safe Prediction

A utility to help `model.frame.default`

create the right
matrices when predicting from models with terms like (univariate)
`poly`

or `ns`

.

- Keywords
- models

##### Usage

`makepredictcall(var, call)`

##### Arguments

- var
A variable.

- call
The term in the formula, as a call.

##### Details

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.

##### Value

A replacement for `call`

for the `predvars`

attribute of
the terms.

##### See Also

`model.frame`

, `poly`

, `scale`

;
`bs`

and `ns`

in package splines.

`cars`

for an example of prediction from a polynomial fit.

##### Examples

`library(stats)`

```
# NOT RUN {
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, len = 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.
# }
```

*Documentation reproduced from package stats, version 3.6.0, License: Part of R 3.6.0*