Sento che molte di queste risposte mancano completamente il punto. La risposta di Haitao affronta i problemi computazionali nell'adattare i polinomi grezzi, ma è chiaro che OP sta chiedendo delle statistiche differenze tra i due approcci. Cioè, se avessimo un computer perfetto in grado di rappresentare esattamente tutti i valori, perché dovremmo preferire un approccio rispetto all'altro?
R2XYX=0X=0, otterresti esattamente la stessa pendenza ed errore standard, anche se il coefficiente e l'errore standard sul termine del primo ordine nella regressione polinomiale ortogonale sono completamente diversi dal suo valore nella regressione polinomiale grezza. Cioè, quando si cerca di ottenere le stesse quantità da entrambe le regressioni (cioè quantità che possono essere interpretate allo stesso modo), le stime e gli errori standard saranno identici. L'uso di polinomi ortogonali non significa che hai magicamente più sicurezza della pendenza diX
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
Creato il 25-10-2019 dal pacchetto reprex (v0.3.0)
L'effetto marginale di Petal.Width
a 0 dall'adattamento ortogonale e il suo errore standard sono esattamente uguali a quelli dall'adattamento polinomiale grezzo. L'uso di polinomi ortogonali non migliora la precisione delle stime della stessa quantità tra i due modelli.
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
Creato il 25-10-2019 dal pacchetto reprex (v0.3.0)
0.0010.0030.0050.9270.9270.0200.0050.927. Dal modello polinomiale ortogonale ma non dal modello polinomiale grezzo, sappiamo che la maggior parte della varianza spiegata nel risultato è dovuta al termine lineare, con pochissimo proveniente dal termine quadrato e ancor meno dal termine cubico. I valori polinomiali grezzi non raccontano quella storia.
Ora, se si desidera questo vantaggio interpretativo rispetto al vantaggio interpetazionale di essere effettivamente in grado di comprendere i coefficienti del modello, è necessario utilizzare i polinomi ortogonali. Se preferisci guardare i coefficienti e sapere esattamente cosa significano (anche se dubito che uno di solito lo faccia), allora dovresti usare i polinomi grezzi. Se non ti interessa (cioè, vuoi solo controllare per confondere o generare valori previsti), allora non importa davvero; entrambe le forme portano le stesse informazioni rispetto a tali obiettivi. Direi anche che i polinomi ortogonali dovrebbero essere preferiti nella regolarizzazione (ad esempio, lazo), poiché la rimozione dei termini di ordine superiore non influisce sui coefficienti dei termini di ordine inferiore, il che non è vero per i polinomi grezzi,
poly
ha qualcosa a che fare con i polinomi ortogonali e io (x ^ 2) no (anche se non conosco i dettagli) - ma comunque, perché gli autori di ISLR raccomanderebbero un metodo che non funziona ? Sembra molto fuorviante se entrambi i comandi sembrano fare lo stesso, ma solo uno in realtà è ok.