回归中R中I(x^3)和poly(x,3)之间的差异
我是R的初学者,请原谅。我对文档理解不够,无法区分这三种形式的I()和poly()的工作方式 使用mtcars数据集回归中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一样的东西,但事实并非如此。如果有人
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上的一些原因: