Я відчуваю, що кілька з цих відповідей повністю пропускають суть. Відповідь Хайтао стосується обчислювальних проблем із встановленням сирих поліномів, але зрозуміло, що ОП запитує про статистичні відмінності між двома підходами. Тобто, якщо ми мали ідеальний комп’ютер, який міг би точно представляти всі значення, то чому б ми віддавали перевагу одному підходу над іншим?
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 пакетом reprex (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 пакетом reprex (v0.3.0)
0.0010.0030.0050.9270.9270.0200.0050.927. З ортогональної поліноміальної моделі, але не з необробленої поліноміальної моделі, ми знаємо, що більшість дисперсій, пояснених у результаті, обумовлені лінійним членом, причому дуже мало йде від квадратного члена, а ще менше - від кубічного. Сирі значення полінома не розповідають про цю історію.
Тепер, якщо ви хочете, щоб ця інтерпретаційна вигода над міжособистісною користю насправді була здатна зрозуміти коефіцієнти моделі, тоді вам слід використовувати ортогональні многочлени. Якщо ви хочете подивитися на коефіцієнти і точно знати, що вони означають (хоча, я сумніваюсь, це так і є), тоді ви повинні використовувати неочищені многочлени. Якщо вам все одно (тобто ви хочете контролювати лише плутанину або генерувати передбачувані значення), то це справді не має значення; обидві форми несуть однакову інформацію стосовно цих цілей. Я також заперечую, що ортогональним поліномам слід віддати перевагу при регуляризації (наприклад, ласо), оскільки видалення термінів вищого порядку не впливає на коефіцієнти термінів нижчого порядку, що не відповідає правилам поліномів,
poly
має відношення до ортогональних многочленів, і я (x ^ 2) не знає (хоча я не знаю деталей) - але все ж, чому б тоді автори ISLR рекомендували метод, який не працює ? Це здається дуже оманливим, якщо обидві команди, здається, роблять те саме, але лише одна насправді в порядку.