makepredictcall {stats} | R Documentation

## Utility Function for Safe Prediction

### Description

A utility to help `model.frame.default` create the right matrices when predicting from models with terms like (univariate) `poly` or `ns`.

### 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

    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.

[Package stats version 3.6.0 Index]