# poly

##### Compute Orthogonal Polynomials

Returns or evaluates orthogonal polynomials of degree 1 to
`degree`

over the specified set of points `x`

: these are all
orthogonal to the constant polynomial of degree 0. Alternatively,
evaluate raw polynomials.

- Keywords
- math

##### Usage

```
poly(x, ..., degree = 1, coefs = NULL, raw = FALSE, simple = FALSE)
polym (..., degree = 1, coefs = NULL, raw = FALSE)
```## S3 method for class 'poly':
predict(object, newdata, \dots)

##### Arguments

- x, newdata
- a numeric vector at which to evaluate the
polynomial.
`x`

can also be a matrix. Missing values are not allowed in`x`

. - degree
- the degree of the polynomial. Must be less than the
number of unique points if
`raw = TRUE`

. - coefs
- for prediction, coefficients from a previous fit.
- raw
- if true, use raw and not orthogonal polynomials.
- simple
- logical indicating if a simple matrix (with no further
`attributes`

but`dimnames`

) should be returned. For speedup only. - object
- an object inheriting from class
`"poly"`

, normally the result of a call to`poly`

with a single vector argument. - ...
`poly`

,`polym`

: further vectors.`predict.poly`

: arguments to be passed to or from other methods.

##### Details

Although formally `degree`

should be named (as it follows
`...`

), an unnamed second argument of length 1 will be
interpreted as the degree, such that `poly(x, 3)`

can be used in
formulas.

The orthogonal polynomial is summarized by the coefficients, which can
be used to evaluate it via the three-term recursion given in Kennedy
& Gentle (1980, pp.`predict`

part of
the code.

`poly`

using `...`

is just a convenience wrapper for
`polym`

: `coef`

is ignored. Conversely, if `polym`

is
called with a single argument in `...`

it is a wrapper for
`poly`

.

##### Value

- For
`poly`

and`polym()`

(when`simple=FALSE`

and`coefs=NULL`

as per default): A matrix with rows corresponding to points in`x`

and columns corresponding to the degree, with attributes`"degree"`

specifying the degrees of the columns and (unless`raw = TRUE`

)`"coefs"`

which contains the centering and normalization constants used in constructing the orthogonal polynomials and class`c("poly", "matrix")`

.For

`poly(*, simple=TRUE)`

,`polym(*, coefs=`

, and) `predict.poly()`

: a matrix.

##### Note

This routine is intended for statistical purposes such as
`contr.poly`

: it does not attempt to orthogonalize to
machine accuracy.

##### References

Chambers, J. M. and Hastie, T. J. (1992)
*Statistical Models in S*.
Wadsworth & Brooks/Cole.

Kennedy, W. J. Jr and Gentle, J. E. (1980)
*Statistical Computing* Marcel Dekker.

##### See Also

`cars`

for an example of polynomial regression.

##### Examples

`library(stats)`

```
od <- options(digits = 3) # avoid too much visual clutter
(z <- poly(1:10, 3))
predict(z, seq(2, 4, 0.5))
zapsmall(poly(seq(4, 6, 0.5), 3, coefs = attr(z, "coefs")))
zm <- zapsmall(polym ( 1:4, c(1, 4:6), degree = 3)) # or just poly():
(z1 <- zapsmall(poly(cbind(1:4, c(1, 4:6)), degree = 3)))
## they are the same :
stopifnot(all.equal(zm, z1, tol = 1e-15))
options(od)
```

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