lm()中的poly():原始与正交之间的差异

ECI*_*CII 25 r

我有

library(ISLR)
attach(Wage)

# Polynomial Regression and Step Functions

fit=lm(wage~poly(age,4),data=Wage)
coef(summary(fit))

fit2=lm(wage~poly(age,4,raw=T),data=Wage)
coef(summary(fit2))

plot(age, wage)
lines(20:350, predict(fit, newdata = data.frame(age=20:350)), lwd=3, col="darkred")
lines(20:350, predict(fit2, newdata = data.frame(age=20:350)), lwd=3, col="darkred")
Run Code Online (Sandbox Code Playgroud)

预测线似乎是相同的,但为什么系数如此不同?你如何解读为此他们raw=Traw=F.

我看到产生的系数与poly(...,raw=T)那些系数相匹配~age+I(age^2)+I(age^3)+I(age^4).

如果我想使用系数来"手动"(不使用predict()函数)获得预测,那么我应该注意什么?我该如何解释正交多项式的系数poly().

Ach*_*eis 56

默认情况下,使用raw = FALSE,poly()计算正交多项式.它在内部使用原始编码x,x ^ 2,x ^ 3,......建立模型矩阵,然后对列进行缩放,使每列与前一列正交.这不会改变拟合值,但具有以下优点:您可以查看多项式中的某个顺序是否显着改善了较低阶的回归.

考虑cars具有响应停止dist和驱动的简单数据speed.在物理上,这应该具有二次关系,但在此(旧)数据集中,二次项不重要:

m1 <- lm(dist ~ poly(speed, 2), data = cars)
m2 <- lm(dist ~ poly(speed, 2, raw = TRUE), data = cars)
Run Code Online (Sandbox Code Playgroud)

在正交编码中,您将获得以下系数summary(m1):

                Estimate Std. Error t value Pr(>|t|)    
(Intercept)       42.980      2.146  20.026  < 2e-16 ***
poly(speed, 2)1  145.552     15.176   9.591 1.21e-12 ***
poly(speed, 2)2   22.996     15.176   1.515    0.136    
Run Code Online (Sandbox Code Playgroud)

这表明存在非常显着的线性效应,而二阶不显着.后一个p值(即多项式中最高阶之一)与原始编码中的相同:

                            Estimate Std. Error t value Pr(>|t|)
(Intercept)                  2.47014   14.81716   0.167    0.868
poly(speed, 2, raw = TRUE)1  0.91329    2.03422   0.449    0.656
poly(speed, 2, raw = TRUE)2  0.09996    0.06597   1.515    0.136
Run Code Online (Sandbox Code Playgroud)

但是低阶p值发生了显着变化.原因是在模型中m1,回归量是正交的,而它们在以下方面高度相关m2:

cor(model.matrix(m1)[, 2], model.matrix(m1)[, 3])
## [1] 4.686464e-17
cor(model.matrix(m2)[, 2], model.matrix(m2)[, 3])
## [1] 0.9794765
Run Code Online (Sandbox Code Playgroud)

因此,在原始编码,你只能解释的p值speed,如果speed^2残留在模型中.由于两个回归量都是高度相关的,因此其中一个可以被丢弃.然而,在正交编码中,speed^2仅捕获未被线性项捕获的二次部分.然后很明显,线性部分是显着的,而二次部分没有额外的意义.

  • 很棒的答案.非常感谢你.只是一个小问题:如何解释正交多项式的系数? (2认同)
  • @Rahul 这就是正交化的全部意义。在原始编码中,您只能解释模型中保留的 speed^2 的速度 p 值。由于两个回归量高度相关,其中一个可以被下垂。然而,在正交编码中,speed^2仅捕获线性项未捕获的二次部分。然后很明显,线性部分很重要,而二次部分没有额外的意义。 (2认同)