# 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 poly
predict(object, newdata, …)

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

`raw`

is false, as by default.- 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.343--4), and used in the `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=<non-NULL>)`

,
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)`

```
# NOT RUN {
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))
## poly(<matrix>, df) --- used to fail till July 14 (vive la France!), 2017:
m2 <- cbind(1:4, c(1, 4:6))
pm2 <- zapsmall(poly(m2, 3)) # "unnamed degree = 3"
stopifnot(all.equal(pm2, zm, tol = 1e-15))
options(od)
# }
```

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