Siento que varias de estas respuestas pierden completamente el punto. La respuesta de Haitao aborda los problemas computacionales con el ajuste de polinomios en bruto, pero está claro que OP pregunta por las diferencias estadísticas entre los dos enfoques. Es decir, si tuviéramos una computadora perfecta que pudiera representar todos los valores exactamente, ¿por qué preferiríamos un enfoque sobre el otro?
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
Creado el 25/10/2019 por el paquete reprex (v0.3.0)
El efecto marginal de Petal.Width
a 0 del ajuste ortogonal y su error estándar son exactamente iguales a los del ajuste polinómico bruto. El uso de polinomios ortogonales no mejora la precisión de las estimaciones de la misma cantidad entre los dos modelos.
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
Creado el 25/10/2019 por el paquete reprex (v0.3.0)
0.0010.0030.0050.9270.9270,0200.0050.927. Por el modelo polinomial ortogonal pero no por el modelo polinomial bruto, sabemos que la mayor parte de la varianza explicada en el resultado se debe al término lineal, con muy poco proveniente del término cuadrado y aún menos del término cúbico. Los valores polinómicos brutos no cuentan esa historia.
Ahora, si desea este beneficio interpretativo sobre el beneficio interpetacional de ser capaz de comprender los coeficientes del modelo, entonces debe usar polinomios ortogonales. Si prefiere mirar los coeficientes y saber exactamente lo que significan (aunque dudo que uno lo haga), entonces debería usar los polinomios en bruto. Si no le importa (es decir, solo desea controlar la confusión o generar valores pronosticados), entonces realmente no importa; ambas formas llevan la misma información con respecto a esos objetivos. También diría que los polinomios ortogonales deberían preferirse en la regularización (p. Ej., Lazo), porque eliminar los términos de orden superior no afecta los coeficientes de los términos de orden inferior, lo cual no es cierto con los polinomios en bruto,
poly
tiene algo que ver con polinomios ortogonales y yo (x ^ 2) no (aunque no conozco los detalles), pero aún así, ¿por qué los autores de ISLR recomendarían un método que no funciona? ? Parece muy engañoso si ambos comandos parecen hacer lo mismo, pero solo uno está bien.