Ich habe das Gefühl, dass einige dieser Antworten völlig verfehlen. Die Antwort von Haitao befasst sich mit den Rechenproblemen beim Anpassen von Rohpolynomen, aber es ist klar, dass OP nach dem fragt statistischen Unterschieden zwischen den beiden Ansätzen . Wenn wir also einen perfekten Computer hätten, der alle Werte genau darstellen könnte, warum würden wir dann einen Ansatz dem anderen vorziehen?
R2XY.X= 0X= 0erhalten Sie genau die gleiche Steigung und den gleichen Standardfehler, obwohl sich der Koeffizient und der Standardfehler des Terms erster Ordnung in der orthogonalen Polynomregression vollständig von seinem Wert in der rohen Polynomregression unterscheiden. Das heißt, wenn versucht wird, aus beiden Regressionen die gleichen Größen zu erhalten (dh Größen, die auf die gleiche Weise interpretiert werden können), sind die Schätzungen und Standardfehler identisch. Die Verwendung von orthogonalen Polynomen bedeutet nicht, dass Sie auf magische Weise mehr Gewissheit über die Steigung von habenX
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
Erstellt am 25.10.2019 durch das Paket reprex (v0.3.0)
Der marginale Effekt von Petal.Width
at 0 aus der orthogonalen Anpassung und sein Standardfehler sind genau gleich denen aus der rohen Polynomanpassung. Die Verwendung von orthogonalen Polynomen verbessert nicht die Genauigkeit von Schätzungen derselben Größe zwischen den beiden Modellen.
Y.XY.X
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
Erstellt am 25.10.2019 durch das Paket reprex (v0.3.0)
0,0010,0030,0050,9270,9270,0200,0050,927. Aus dem orthogonalen Polynommodell, aber nicht dem rohen Polynommodell, wissen wir, dass der größte Teil der im Ergebnis erklärten Varianz auf dem linearen Term beruht, wobei nur sehr wenig vom quadratischen Term und noch weniger vom kubischen Term kommt. Die rohen Polynomwerte erzählen diese Geschichte nicht.
Wenn Sie nun diesen Interpretationsvorteil gegenüber dem Interpetationsvorteil der tatsächlichen Fähigkeit, die Koeffizienten des Modells zu verstehen, wünschen, sollten Sie orthogonale Polynome verwenden. Wenn Sie lieber die Koeffizienten betrachten und genau wissen möchten, was sie bedeuten (obwohl ich bezweifle, dass dies normalerweise der Fall ist), sollten Sie die rohen Polynome verwenden. Wenn es Ihnen egal ist (dh Sie möchten nur die Verwechslung kontrollieren oder vorhergesagte Werte generieren), ist dies wirklich egal. Beide Formulare enthalten dieselben Informationen zu diesen Zielen. Ich würde auch argumentieren, dass orthogonale Polynome bei der Regularisierung bevorzugt werden sollten (z. B. Lasso), da das Entfernen von Termen höherer Ordnung die Koeffizienten der Termen niedrigerer Ordnung nicht beeinflusst, was bei rohen Polynomen nicht zutrifft.
poly
das etwas mit orthogonalen Polynomen zu tun hat und ich (x ^ 2) nicht (obwohl ich die Details nicht kenne) - aber warum würden die Autoren von ISLR dann eine Methode empfehlen, die nicht funktioniert? ? Es scheint sehr irreführend, wenn beide Befehle dasselbe tun, aber nur einer ist tatsächlich in Ordnung.