我已经阅读了手册页面 ?poly
(我承认我并没有完全理解),并且也在书籍《统计学习导论》中阅读了这个函数的描述。
我的目前理解是,调用 poly(horsepower, 2)
应该等价于写成 horsepower + I(horsepower^2)
。然而,以下代码的输出似乎与此相矛盾:
library(ISLR)
summary(lm(mpg~poly(horsepower,2), data=Auto))$coef
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 23.44592 0.2209163 106.13030 2.752212e-289
#poly(horsepower, 2)1 -120.13774 4.3739206 -27.46683 4.169400e-93
#poly(horsepower, 2)2 44.08953 4.3739206 10.08009 2.196340e-21
summary(lm(mpg~horsepower+I(horsepower^2), data=Auto))$coef
# Estimate Std. Error t value Pr(>|t|)
#(Intercept) 56.900099702 1.8004268063 31.60367 1.740911e-109
#horsepower -0.466189630 0.0311246171 -14.97816 2.289429e-40
#I(horsepower^2) 0.001230536 0.0001220759 10.08009 2.196340e-21
我的问题是,为什么输出结果不一致,poly
究竟是做了什么?
poly(horsepower,2)
生成的闭式公式到底是什么? - merlin2011poly(horsepower, degree=2, raw=TRUE)
; 您正在将 2 作为错误的参数传递,并且raw
默认为 FALSE。 - baptistepoly
生成与显式公式相同的输出,但我仍然想知道poly
在没有该参数的情况下生成的“正交多项式”的实际形式。此外,根据手册,我传递了2作为度数: “尽管正式上来说,“degree”应该被命名(因为它遵循“...”), 但长度为1的未命名第二个参数将被解释为度数。” - merlin2011...
的观点很好,但最好的做法是以它命名参数。 - baptiste