Wydaje mi się, że kilka z tych odpowiedzi całkowicie mija się z celem. Odpowiedź Haitao rozwiązuje problemy obliczeniowe związane z dopasowaniem surowych wielomianów, ale jasne jest, że OP pyta o różnice statystyczne między tymi dwoma podejściami. Oznacza to, że gdybyśmy mieli idealny komputer, który mógłby dokładnie reprezentować wszystkie wartości, dlaczego wolelibyśmy jedno podejście od drugiego?
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
Utworzono 25.10.2019 przez pakiet reprezentx (v0.3.0)
Efekt krańcowy Petal.Width
przy 0 z dopasowania ortogonalnego i jego błąd standardowy są dokładnie równe efektom z surowego dopasowania wielomianowego. Korzystanie z wielomianów ortogonalnych nie poprawia dokładności oszacowań tej samej wielkości między dwoma modelami.
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
Utworzono 25.10.2019 przez pakiet reprezentx (v0.3.0)
0.0010.0030.0050.9270.9270.0200.0050.927. Z ortogonalnego modelu wielomianu, ale nie z surowego modelu wielomianu, wiemy, że większość wariancji wyjaśnionej w wyniku jest spowodowana składnikiem liniowym, przy czym bardzo niewiele pochodzi od wyrażenia kwadratowego, a jeszcze mniej od wyrażenia sześciennego. Surowe wartości wielomianowe nie opowiadają tej historii.
Teraz, niezależnie od tego, czy chcesz uzyskać tę korzyść interpretacyjną w porównaniu z korzyścią interpetacyjną polegającą na faktycznym zrozumieniu współczynników modelu, powinieneś użyć wielomianów ortogonalnych. Jeśli wolisz spojrzeć na współczynniki i dokładnie wiedzieć, co one oznaczają (chociaż wątpię, że jeden zwykle tak robi), powinieneś użyć surowych wielomianów. Jeśli cię to nie obchodzi (tzn. Chcesz kontrolować tylko pomieszanie lub generować prognozowane wartości), to naprawdę nie ma znaczenia; obie formy zawierają te same informacje w odniesieniu do tych celów. Argumentowałbym również, że ortogonalne wielomiany powinny być preferowane w regularyzacji (np. Lasso), ponieważ usunięcie terminów wyższego rzędu nie wpływa na współczynniki terminów niższego rzędu, co nie jest prawdą w przypadku wielomianów surowych,
poly
ma to coś wspólnego z wielomianami ortogonalnymi, a ja (x ^ 2) nie (choć nie znam szczegółów) - ale dlaczego autorzy ISLR zalecają metodę, która nie działa ? Wydaje się to bardzo mylące, jeśli oba polecenia wydają się robić to samo, ale tylko jedno jest w porządku.