J'ai l'impression que plusieurs de ces réponses ratent complètement le propos. La réponse d'Haitao aborde les problèmes de calcul avec l'ajustement des polynômes bruts, mais il est clair que OP pose des questions sur les statistiques différences entre les deux approches. Autrement dit, si nous avions un ordinateur parfait qui pourrait représenter toutes les valeurs exactement, pourquoi préférerions-nous une approche à l'autre?
R2XOuiX= 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
Créé le 2019-10-25 par le package reprex (v0.3.0)
L'effet marginal de Petal.Width
à 0 de l'ajustement orthogonal et son erreur standard sont exactement égaux à ceux de l'ajustement polynomial brut. L'utilisation de polynômes orthogonaux n'améliore pas la précision des estimations de la même quantité entre les deux modèles.
OuiXOuiX
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
Créé le 2019-10-25 par le package reprex (v0.3.0)
0,0010,0030,0050,9270,9270,0200,0050,927. À partir du modèle polynomial orthogonal mais pas du modèle polynomial brut, nous savons que la majeure partie de la variance expliquée dans le résultat est due au terme linéaire, avec très peu venant du terme carré et encore moins du terme cubique. Les valeurs polynomiales brutes ne racontent pas cette histoire.
Maintenant, que vous souhaitiez cet avantage d'interprétation par rapport à l'avantage d'interprétation d'être réellement capable de comprendre les coefficients du modèle, alors vous devriez utiliser des polynômes orthogonaux. Si vous préférez regarder les coefficients et savoir exactement ce qu'ils signifient (bien que je doute que ce soit généralement le cas), alors vous devriez utiliser les polynômes bruts. Si vous ne vous souciez pas (c.-à-d., Vous voulez seulement contrôler la confusion ou générer des valeurs prédites), alors cela n'a vraiment pas d'importance; les deux formulaires contiennent les mêmes informations concernant ces objectifs. Je dirais également que les polynômes orthogonaux devraient être préférés dans la régularisation (par exemple, le lasso), car la suppression des termes d'ordre supérieur n'affecte pas les coefficients des termes d'ordre inférieur, ce qui n'est pas vrai avec les polynômes bruts,
poly
a quelque chose à voir avec les polynômes orthogonaux et je (x ^ 2) ne le fait pas (bien que je ne connaisse pas les détails) - mais quand même, pourquoi les auteurs de l'ISLR recommanderaient-ils alors une méthode qui ne fonctionne pas ? Cela semble très trompeur si les deux commandes semblent faire la même chose, mais une seule est en fait correcte.