回归中R中I(x^3)和poly(x,3)之间的差异

回归中R中I(x^3)和poly(x,3)之间的差异,r,statistics,R,Statistics,我是R的初学者,请原谅。我对文档理解不够,无法区分这三种形式的I()和poly()的工作方式 使用mtcars数据集 xx=lm(mpg~hp+I(hp^2)+I(hp^3), data=mtcars) yy=lm(mpg~I(hp^3), data=mtcars) zz=lm(mpg~poly(hp,3), data=mtcars) summary(xx) summary(yy) summary(zz) 全部返回差异结果。我以为ZZ会给我和XX或者甚至YY一样的东西,但事实并非如此。如果有人

我是R的初学者,请原谅。我对文档理解不够,无法区分这三种形式的I()和poly()的工作方式

使用mtcars数据集

xx=lm(mpg~hp+I(hp^2)+I(hp^3), data=mtcars)
yy=lm(mpg~I(hp^3), data=mtcars)
zz=lm(mpg~poly(hp,3), data=mtcars)
summary(xx)
summary(yy)
summary(zz)
全部返回差异结果。我以为ZZ会给我和XX或者甚至YY一样的东西,但事实并非如此。如果有人能再次向我解释这一点,那将是非常好的

I(x^3)
制作了一个三阶项,其系数将由
lm
估算

poly(x,3)
将生成一个三阶多项式,因此将为
x
的线性项、二阶项和三阶项提供系数。但是,默认情况下,这些将是0次的常数多项式,并且系数将不是您所期望的。要避免这种情况,请使用参数
raw=TRUE

coef(xx) ## All terms
  (Intercept)            hp       I(hp^2)       I(hp^3) 
 4.422493e+01 -2.945289e-01  9.114683e-04 -8.701086e-07 
coef(yy) ## Only the intercept and third order term
  (Intercept)       I(hp^3) 
 2.241691e+01 -4.312463e-07 
coef(zz) ## Orthogonal polynomials
 (Intercept) poly(hp, 3)1 poly(hp, 3)2 poly(hp, 3)3 
   20.090625   -26.045592    13.154568    -2.241893 
coef(lm(mpg~poly(hp,3,raw=TRUE),data=mtcars)) ## Same as coef(xx)
             (Intercept) poly(hp, 3, raw = TRUE)1 poly(hp, 3, raw = TRUE)2 
            4.422493e+01            -2.945289e-01             9.114683e-04 
poly(hp, 3, raw = TRUE)3 
           -8.701086e-07 

但是,如果不使用正交多项式,您可能会遇到术语之间的相关性问题,这就是为什么这是默认值。

请阅读文档:
zz=lm(mpg~poly(hp,3,raw=TRUE),data=mtcars)
yy
缺少低阶项(即拟合y=a+bx^3)。
fitted(xx)
fitted(zz)
将是相同的(最多有微小的数值差异)。您如何决定是否要保留
raw=FALSE
这更像是一个统计问题。下面是stats.SE上的一些原因: