2017-09-23 140 views
3

为什么我得到不同的结果

summary(lm(mpg~horsepower + I(horsepower^2),data = Auto))$coef 

summary(lm(mpg∼poly(horsepower,2) ,data=Auto))$coef 

PS不同的结果:我练的ISLR

回答

2

poly实验室使用由正交多项式默认。如果使用poly(..., 2, raw = TRUE)它将使用原始多项式,在这种情况下结果是相同的。

如果您使用默认的正交多项式,那么尽管它将模型参数化的方式不同,但模型仍会给出相同的预测。也就是说,fitted(lm(...))对于您的型号都是相同的。

library(ISLR) 

fo1 <- mpg ~ horsepower + I(horsepower^2) 
fo2 <- mpg ~ poly(horsepower, 2) 
fo3 <- mpg ~ poly(horsepower, 2, raw = TRUE) 

fm1 <- lm(fo1, Auto) 
fm2 <- lm(fo2, Auto) 
fm3 <- lm(fo3, Auto) 

all.equal(coef(summary(fm1)), coef(summary(fm3)), check.attributes = FALSE) 
## [1] TRUE 

all.equal(fitted(fm1), fitted(fm2)) 
## [1] TRUE 

all.equal(fitted(fm1), fitted(fm3)) 
## [1] TRUE 

这里的讨论可能会有所帮助:What does the R function `poly` really do?