Is there an inverse function for poly?

296 views Asked by At

We can generate orthogonal polynomials in R with pp <- poly(cars$speed, 2) Is there a way to get the original values out of the result pp (inverse poly function)?

In other words, what should the function f look like that returns the following result:

f(poly(cars$speed, 2)) == cars$speed?

1

There are 1 answers

1
G. Grothendieck On BEST ANSWER

cars$speed must be of the form a + b * pp[, 1] for some scalars a and b and knowing that the coefs attribute of poly objects contains values which can be used for reconstruction we find the following reconstruction of cars$speed as speed.

pp <- poly(cars$speed, 2)
speed <- with(attr(pp, "coefs"), alpha[1] + sqrt(norm2)[3] * pp[, 1])

all.equal(speed, cars$speed)
## [1] TRUE