我觉得其中几个答案都没有抓住重点。海涛的回答解决了拟合原始多项式的计算问题,但很明显,OP 是在询问两种方法之间的统计差异。也就是说,如果我们有一台可以准确表示所有值的完美计算机,为什么我们更喜欢一种方法而不是另一种呢?
user5957401 认为正交多项式降低了多项式函数之间的共线性,这使得它们的估计更加稳定。我同意 Jake Westfall 的批评;正交多项式中的系数表示与原始多项式系数完全不同的量。无论您使用正交多项式还是原始多项式,模型隐含的剂量反应函数的系数具有“当的瞬时变化”的解释。的正交多项式执行了边际效应程序R2XYX=0X=0,即使正交多项式回归中一阶项的系数和标准误差与其在原始多项式回归中的值完全不同,您也会得到完全相同的斜率和标准误差。也就是说,当试图从两个回归中获得相同的数量(即可以以相同方式解释的数量)时,估计值和标准误差将是相同的。使用正交多项式并不意味着您神奇地对在任何给定点的斜率有更多确定性。模型的稳定性是相同的。见下文:X
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 日创建
正交拟合的 0 处的边际效应Petal.Width
及其标准误差与原始多项式拟合的边际效应完全相同(即1.1527
。使用正交多项式不会提高两个模型之间相同数量的估计精度。
关键如下:使用正交多项式允许您隔离每个项对解释结果方差的贡献,例如,通过平方半偏相关来衡量。如果您拟合 3 阶正交多项式,则每个项的平方半偏相关表示模型中该项解释的结果的方差。的方差有多少的线性分量YX?” 您可以拟合正交多项式回归,线性项上的平方半偏相关将表示该数量。原始多项式并非如此。如果您拟合相同阶的原始多项式模型,则线性项不代表的线性分量解释的中的方差比例。见下文。YX
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 日创建
当 3 阶多项式拟合时,原始多项式的平方半偏相关为、和。当仅拟合线性项时,平方半偏相关为。拟合 3 阶多项式时,正交多项式的平方半偏相关为、和。当只拟合线性项时,平方半偏相关仍为0.0010.0030.0050.9270.9270.0200.0050.927. 从正交多项式模型而不是原始多项式模型中,我们知道结果中解释的大部分方差是由于线性项,很少来自平方项,甚至更少来自三次项。原始多项式值并不能说明这个问题。
现在,如果您希望这种解释收益超过实际能够理解模型系数的解释收益,那么您应该使用正交多项式。如果您希望查看系数并确切知道它们的含义(尽管我怀疑通常会这样做),那么您应该使用原始多项式。如果您不在乎(即,您只想控制混淆或生成预测值),那么它真的没关系;两种表格都包含有关这些目标的相同信息。我还认为正交多项式在正则化(例如套索)中应该是首选,因为删除高阶项不会影响低阶项的系数,这对于原始多项式是不正确的,