attach(mtcars)
poly_model <- lm(mpg ~ poly(hp,degree=1), data = mtcars)
summary(poly_model)
lin_model <- lm(mpg ~ hp, data = mtcars)
summary(lin_model)
x <- with(mtcars, seq(min(hp), max(hp), length.out=2000))
y1 <- predict(poly_model, newdata = data.frame(hp = x))
y2 <- predict(lin_model, newdata = data.frame(hp = x))
plot(mpg ~ hp, data = mtcars)
lines(x, y1, col = "red")
lines(x, y2, col = "blue")
poly_model 和 lin_model 产生不同的系数。
poly_model
Estimate Std. Error t value Pr(>|t|)
(Intercept) 20.0906 0.6829 29.420 < 2e-16 ***
poly(hp, degree = 1) -26.0456 3.8630 -6.742 1.79e-07 ***
lin_model
Estimate Std. Error t value Pr(>|t|)
(Intercept) 30.09886 1.63392 18.421 < 2e-16 ***
hp -0.06823 0.01012 -6.742 1.79e-07 ***
通过检查该图,看来 lin_model 系数是正确的。为什么 poly_model 似乎会产生不同的系数?这些图重叠,两者的 R2 相同。