Я чувствую, что некоторые из этих ответов полностью упускают суть. Ответ Хайтао решает вычислительные проблемы с подгонкой необработанных полиномов, но ясно, что OP задает вопрос о статистических различиях между двумя подходами. То есть, если бы у нас был идеальный компьютер, который мог бы точно представлять все значения, почему бы мы предпочли один подход другому?
R2XYX=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
Создано в 2019-10-25 пакетом представлением (v0.3.0)
Предельный эффект 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
Создано в 2019-10-25 пакетом представлением (v0.3.0)
0.0010.0030.0050.9270.9270.0200.0050.927, Из ортогональной полиномиальной модели, но не исходной полиномиальной модели, мы знаем, что большая часть дисперсии, объясненной в результате, обусловлена линейным членом, с очень небольшим числом, полученным от квадратного члена и еще меньше от кубического члена. Необработанные полиномиальные значения не рассказывают эту историю.
Теперь, если вы хотите получить эту интерпретационную выгоду по сравнению с интерпетационной выгодой от фактической способности понимать коэффициенты модели, тогда вам следует использовать ортогональные полиномы. Если вы предпочитаете смотреть на коэффициенты и точно знать, что они означают (хотя я сомневаюсь, что один из них обычно это делает), то вам следует использовать необработанные полиномы. Если вам все равно (то есть вы хотите контролировать только смешанные или генерировать прогнозные значения), то это действительно не имеет значения; Обе формы несут одинаковую информацию об этих целях. Я также утверждал бы, что ортогональные многочлены должны быть предпочтительнее при регуляризации (например, лассо), потому что удаление членов более высокого порядка не влияет на коэффициенты членов более низкого порядка, что не верно для необработанных многочленов,
poly
это как-то связано с ортогональными полиномами, а я (x ^ 2) - нет (хотя я не знаю деталей) - но тем не менее, зачем авторам ISLR тогда рекомендовать метод, который не работает ? Кажется очень вводящим в заблуждение, если обе команды, кажется, делают то же самое, но только одна на самом деле в порядке.