我觉得像一些这些答案完全错过了这一点。海涛的回答地址的计算问题,装修原料多项式,但很明显,OP是询问有关统计两种方法之间的差异。也就是说,如果我们有可能会代表所有值完全是一个完美的电脑,我们为什么宁愿一个方法比其他?
user5957401认为,正交多项式会减少多项式函数之间的共线性,这会使它们的估计更稳定。我同意杰克·韦斯特伦的批评。正交多项式中的系数表示的量与原始多项式中的系数完全不同。不管使用正交多项式还是原始多项式,模型暗示的剂量响应函数R2,MSE,预测值和预测值的标准误差都将相同。对系数X2阶原始多项式回归中解释为“的瞬时变化 “。如果你对正交多项式在那里进行的边际效应过程XYX=0X=0X
data("iris")
#Raw:
fit.raw <- lm(Petal.Length ~ Petal.Width + I(Petal.Width^2) +
I(Petal.Width^3), data = iris)
summary(fit.raw)
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 1.1034 0.1304 8.464 2.50e-14 ***
#> Petal.Width 1.1527 0.5836 1.975 0.05013 .
#> I(Petal.Width^2) 1.7100 0.5487 3.116 0.00221 **
#> I(Petal.Width^3) -0.5788 0.1408 -4.110 6.57e-05 ***
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 0.3898 on 146 degrees of freedom
#> Multiple R-squared: 0.9522, Adjusted R-squared: 0.9512
#> F-statistic: 969.9 on 3 and 146 DF, p-value: < 2.2e-16
#Orthogonal
fit.orth <- lm(Petal.Length ~ stats::poly(Petal.Width, 3), data = iris)
#Marginal effect of X at X=0 from orthogonal model
library(margins)
summary(margins(fit.orth, variables = "Petal.Width",
at = data.frame(Petal.Width = 0)))
#> Warning in check_values(data, at): A 'at' value for 'Petal.Width' is
#> outside observed data range (0.1,2.5)!
#> factor Petal.Width AME SE z p lower upper
#> Petal.Width 0.0000 1.1527 0.5836 1.9752 0.0482 0.0089 2.2965
由reprex软件包(v0.3.0)创建于2019-10-25
Petal.Width
正交拟合及其标准误差在0处的边际效应与原始多项式拟合的边际效应完全相同。使用正交多项式不会提高两个模型之间相同数量的估计的精度。
YXYX
library(jtools)
data("iris")
fit.raw3 <- lm(Petal.Length ~ Petal.Width + I(Petal.Width^2) +
I(Petal.Width^3), data = iris)
fit.raw1 <- lm(Petal.Length ~ Petal.Width, data = iris)
round(summ(fit.raw3, part.corr = T)$coef, 3)
#> Est. S.E. t val. p partial.r part.r
#> (Intercept) 1.103 0.130 8.464 0.000 NA NA
#> Petal.Width 1.153 0.584 1.975 0.050 0.161 0.036
#> I(Petal.Width^2) 1.710 0.549 3.116 0.002 0.250 0.056
#> I(Petal.Width^3) -0.579 0.141 -4.110 0.000 -0.322 -0.074
round(summ(fit.raw1, part.corr = T)$coef, 3)
#> Est. S.E. t val. p partial.r part.r
#> (Intercept) 1.084 0.073 14.850 0 NA NA
#> Petal.Width 2.230 0.051 43.387 0 0.963 0.963
fit.orth3 <- lm(Petal.Length ~ stats::poly(Petal.Width, 3),
data = iris)
fit.orth1 <- lm(Petal.Length ~ stats::poly(Petal.Width, 3)[,1],
data = iris)
round(summ(fit.orth3, part.corr = T)$coef, 3)
#> Est. S.E. t val. p partial.r part.r
#> (Intercept) 3.758 0.032 118.071 0 NA NA
#> stats::poly(Petal.Width, 3)1 20.748 0.390 53.225 0 0.975 0.963
#> stats::poly(Petal.Width, 3)2 -3.015 0.390 -7.735 0 -0.539 -0.140
#> stats::poly(Petal.Width, 3)3 -1.602 0.390 -4.110 0 -0.322 -0.074
round(summ(fit.orth1, part.corr = T)$coef, 3)
#> Est. S.E. t val. p partial.r part.r
#> (Intercept) 3.758 0.039 96.247 0 NA NA
#> stats::poly(Petal.Width, 3)[, 1] 20.748 0.478 43.387 0 0.963 0.963
由reprex软件包(v0.3.0)创建于2019-10-25
0.0010.0030.0050.9270.9270.0200.0050.927。从正交多项式模型而不是原始多项式模型,我们知道大部分的方差的结果,由于线性名词解释是,从平方项很少来了,甚至更少从三次项。原始多项式值不告诉的故事。
现在,无论您是想让这种解释上的好处,而不是实际上能够理解模型系数的竞争上的好处,那么您都应该使用正交多项式。如果您希望查看系数并确切地知道它们的含义(尽管我通常会怀疑),那么您应该使用原始多项式。如果您不在乎(即,您只想控制混淆或生成预测值),那实际上就没有关系。相对于这些目标,两种形式都携带相同的信息。我还要指出,正交多项式在正则化中应优先使用(例如套索),因为删除高阶项不会影响低阶项的系数,原始多项式则不然,
poly
与正交多项式有关,而I(x ^ 2)与无关(尽管我不知道细节)-但是,为什么ISLR的作者然后会推荐一种不起作用的方法?如果两个命令似乎都执行相同的操作,这似乎会产生误导,但实际上只有一个命令是可以的。