Sinto que várias dessas respostas estão completamente erradas. A resposta de Haitao aborda os problemas computacionais com o ajuste de polinômios brutos, mas é claro que o OP está perguntando sobre as diferenças estatísticas entre as duas abordagens. Ou seja, se tivéssemos um computador perfeito que pudesse representar todos os valores exatamente, por que preferiríamos uma abordagem à outra?
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
Criado em 2019-10-25 pelo pacote reprex (v0.3.0)
O efeito marginal de Petal.Width
em 0 do ajuste ortogonal e seu erro padrão são exatamente iguais aos do ajuste polinomial bruto. O uso de polinômios ortogonais não melhora a precisão das estimativas da mesma quantidade entre os dois 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
Criado em 2019-10-25 pelo pacote reprex (v0.3.0)
0.0010.0030.0050.9270.9270.0200.0050.927. Do modelo polinomial ortogonal, mas não do modelo polinomial bruto, sabemos que a maior parte da variância explicada no resultado se deve ao termo linear, com muito pouco advindo do termo quadrado e menos ainda do termo cúbico. Os valores polinomiais brutos não contam essa história.
Agora, se você deseja esse benefício interpretativo sobre o benefício interpetacional de ser capaz de realmente entender os coeficientes do modelo, use polinômios ortogonais. Se você preferir olhar para os coeficientes e saber exatamente o que eles significam (embora eu duvide que um seja tipicamente), use os polinômios brutos. Se você não se importa (ou seja, você deseja apenas controlar a confusão ou gerar valores previstos), isso realmente não importa; os dois formulários carregam as mesmas informações com relação a esses objetivos. Eu também argumentaria que polinômios ortogonais devem ser preferidos na regularização (por exemplo, laço), porque a remoção de termos de ordem superior não afeta os coeficientes dos termos de ordem inferior, o que não é verdade em polinômios brutos,
poly
tem algo a ver com polinômios ortogonais e eu (x ^ 2) não (embora eu não conheça os detalhes) - mas ainda assim, por que os autores da ISLR recomendariam um método que não funciona? ? Parece muito enganador se ambos os comandos parecem fazer o mesmo, mas apenas um realmente está ok.