相同回归的不同结果

ali*_*one 5 r lm glm

为什么我得到不同的结果

summary(lm(mpg~horsepower + I(horsepower^2),data = Auto))$coef
Run Code Online (Sandbox Code Playgroud)

summary(lm(mpg?poly(horsepower,2) ,data=Auto))$coef
Run Code Online (Sandbox Code Playgroud)

PS:我在练习ISLR的实验室

G. *_*eck 5

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
Run Code Online (Sandbox Code Playgroud)

这里的讨论可能会有所帮助:R 函数`poly` 到底做了什么?