Polynomkontraste für die Regression

17

Ich kann die Verwendung von Polynomkontrasten bei der Regressionsanpassung nicht verstehen. Insbesondere beziehe ich mich auf eine Codierung, die verwendet wird R, um eine Intervallvariable (Ordinalvariable mit gleichmäßig verteilten Pegeln) auszudrücken, die auf dieser Seite beschrieben wird .

Wenn ich im Beispiel dieser Seite richtig verstanden habe, passt R ein Modell für eine Intervallvariable an und gibt einige Koeffizienten zurück, die den linearen, quadratischen oder kubischen Trend gewichten. Daher sollte das angepasste Modell sein:

write=52.7870+14.2587X0.9680X20.1554X3,

wobei X die Werte 1 , 2 , 3 oder annehmen sollje nach der unterschiedlichen Ebene der Intervallvariablen 4.4

Ist das richtig? Und wenn ja, welchen Zweck hatten Polynomkontraste?

Pippo
quelle
7
Nein, diese Koeffizienten gelten für orthogonale Polynomterme: Sie haben das Modell für rohe Polynomterme geschrieben. Ersetzen Sie , X 2 und X 3 durch die Werte L , Q und C (aus der Nachschlagetabelle). XX2X3LQC
Scortchi
1
Lieber @Scortchi, vielen Dank für Ihre Antwort. Ich glaube zu verstehen, was du meinst, aber dann habe ich nicht ehrlich verstanden, wie diese orthogonalen Polynomausdrücke funktionieren. : P
Pippo
1
Was Sie haben, ist nicht ganz das passende Modell. Sie brauchen entweder einen riesigen 'Hut' über dem Schreiben (oder E [Schreiben]), was den vorhergesagten Wert des Schreibens oder den erwarteten Wert des Schreibens bedeutet; oder Sie benötigen ein '+ e' am Ende, um die Residuen anzugeben.
gung - Wiedereinsetzung von Monica
@Scortchi Was ist oder wie finden Sie die "Nachschlagetabelle"?
Antoni Parellada
2
@AntoniParellada: Dies ist die Tabelle auf der Seite, mit der das OP verknüpft ist: ats.ucla.edu/stat/r/library/contrast_coding.htm#ORTHOGONAL . & kam mit contr.polyin R.
Scortchi

Antworten:

29

Um es noch einmal zusammenzufassen (und falls die OP-Hyperlinks in Zukunft fehlschlagen sollten), betrachten wir einen Datensatz hsb2als solchen:

   id     female race ses schtyp prog read write math science socst
1  70        0    4   1      1    1   57    52   41      47    57
2 121        1    4   2      1    3   68    59   53      63    61
...
199 118      1    4   2      1    1   55    62   58      58    61
200 137      1    4   3      1    2   63    65   65      53    61

welche hier importiert werden können .

Wir wandeln die Variable readin eine geordnete / ordinale Variable um:

hsb2$readcat<-cut(hsb2$read, 4, ordered = TRUE)
(means = tapply(hsb2$write, hsb2$readcat, mean))
 (28,40]  (40,52]  (52,64]  (64,76] 
42.77273 49.97849 56.56364 61.83333 

Jetzt sind wir alle bereit, nur eine reguläre ANOVA durchzuführen - ja, es ist R, und wir haben im Grunde eine stetige abhängige Variable, write und eine erklärende Variable mit mehreren Ebenen readcat. In R können wir verwendenlm(write ~ readcat, hsb2)


1. Generieren der Kontrastmatrix:

Die bestellte Variable readcathat vier verschiedene Ebenen , also haben wir n1=3 Kontraste.

table(hsb2$readcat)

(28,40] (40,52] (52,64] (64,76] 
     22      93      55      30 

Lassen Sie uns zuerst das Geld holen und einen Blick auf die integrierte R-Funktion werfen:

contr.poly(4)
             .L   .Q         .C
[1,] -0.6708204  0.5 -0.2236068
[2,] -0.2236068 -0.5  0.6708204
[3,]  0.2236068 -0.5 -0.6708204
[4,]  0.6708204  0.5  0.2236068

Lassen Sie uns nun untersuchen, was unter der Haube vor sich ging:

scores = 1:4  # 1 2 3 4 These are the four levels of the explanatory variable.
y = scores - mean(scores) # scores - 2.5

y=[1.5,0.5,0.5,1.5]

seq_len(n) - 1=[0,1,2,3]

n = 4; X <- outer(y, seq_len(n) - 1, "^") # n = 4 in this case

[11.52.253.37510.50.250.12510.50.250.12511.52.253.375]

Was ist dort passiert? das outer(a, b, "^")wirft die Elemente von azu den Elementen von auf b, so dass die erste Spalte aus den Operationen , ( - 0,5 ) 0 , 0,5 0 und 1,5 0 resultiert ; die zweite Spalte von ( - 1,5 ) 1 , ( - 0,5 ) 1 , 0,5 1 und 1,5 1 ; der dritte von ( - 1,5 ) 2 = 2,25(1.5)0(0.5)00.501.50(1.5)1(0.5)10.511.51(1.5)2=2.25, , 0,5 2 = 0,25 und 1,5 2 = 2,25 ; und die vierte, ( - 1,5 ) 3 = - 3,375 , ( - 0,5 ) 3 = - 0,125 , 0,5 3 = 0,125 und 1,5 3 = 3,375 .(0.5)2=0.250.52=0.251.52=2.25(1.5)3=3.375(0.5)3=0.1250.53=0.1251.53=3.375

Als nächstes führen wir eine orthonormale Zerlegung von dieser Matrix durch und nehmen die kompakte Darstellung von Q ( ). Einige der inneren Abläufe der Funktionen in QR - Faktorisierung verwendet in R verwendet in diesem Beitrag nicht weiter erläutert hier .QRc_Q = qr(X)$qr

[202.500.52.23604.5840.50.447200.50.8940.92961.342]

... von denen wir nur die Diagonale speichern ( z = c_Q * (row(c_Q) == col(c_Q))). Was liegt in der Diagonale: Nur die "unteren" Einträge des Teils des Q RRQR -Zerlegung. Gerade? Nun, nein ... Es stellt sich heraus, dass die Diagonale einer oberen Dreiecksmatrix die Eigenwerte der Matrix enthält!

Als nächstes rufen wir die folgende Funktion auf raw = qr.qy(qr(X), z), deren Ergebnis durch zwei Operationen "manuell" repliziert werden kann: 1. Verwandeln der kompakten Form von , dh in Q , eine Transformation, die erreicht werden kann , und 2. Ausführen der Matrixmultiplikation Q z wie in .Qqr(X)$qrQQ = qr.Q(qr(X))QzQ %*% z

Entscheidend ist, dass das Multiplizieren von mit den Eigenwerten von R die Orthogonalität der konstituierenden Spaltenvektoren nicht ändert, aber angesichts der Tatsache, dass der absolute Wert der Eigenwerte in abnehmender Reihenfolge von links oben nach rechts unten erscheint, wird die Multiplikation von Q z dazu neigen, die Orthogonalität zu verringern Werte in den Polynomspalten höherer Ordnung:QRQz

Matrix of Eigenvalues of R
     [,1]      [,2] [,3]      [,4]
[1,]   -2  0.000000    0  0.000000
[2,]    0 -2.236068    0  0.000000
[3,]    0  0.000000    2  0.000000
[4,]    0  0.000000    0 -1.341641

Vergleichen Sie die Werte in den späteren Spaltenvektoren (quadratisch und kubisch) vor und nach den -Faktorisierungsoperationen und mit den nicht betroffenen ersten beiden Spalten.QR

Before QR factorization operations (orthogonal col. vec.)
     [,1] [,2] [,3]   [,4]
[1,]    1 -1.5 2.25 -3.375
[2,]    1 -0.5 0.25 -0.125
[3,]    1  0.5 0.25  0.125
[4,]    1  1.5 2.25  3.375


After QR operations (equally orthogonal col. vec.)
     [,1] [,2] [,3]   [,4]
[1,]    1 -1.5    1 -0.295
[2,]    1 -0.5   -1  0.885
[3,]    1  0.5   -1 -0.885
[4,]    1  1.5    1  0.295

Zuletzt nennen wir die (Z <- sweep(raw, 2L, apply(raw, 2L, function(x) sqrt(sum(x^2))), "/", check.margin = FALSE))Umwandlung der Matrix rawin orthonormale Vektoren:

Orthonormal vectors (orthonormal basis of R^4)
     [,1]       [,2] [,3]       [,4]
[1,]  0.5 -0.6708204  0.5 -0.2236068
[2,]  0.5 -0.2236068 -0.5  0.6708204
[3,]  0.5  0.2236068 -0.5 -0.6708204
[4,]  0.5  0.6708204  0.5  0.2236068

Diese Funktion "normalisiert" einfach die Matrix, indem "/"jedes Element spaltenweise durch geteilt wird ( ) . Es kann also in zwei Schritten zerlegt werden:(i), was dazu führt, dass die Nenner für jede Spalte in(ii) sind,wobei jedes Element in einer Spalte durch den entsprechenden Wert von(i)dividiert wird.col.xi2(i) apply(raw, 2, function(x)sqrt(sum(x^2)))2 2.236 2 1.341(ii)(i) .

Zu diesem Zeitpunkt bilden die Spaltenvektoren eine orthonormale Basis von , bis wir die erste Spalte loswerden, die der Achsenabschnitt sein wird, und das Ergebnis von reproduziert haben :R4contr.poly(4)

[0.67082040.50.22360680.22360680.50.67082040.22360680.50.67082040.67082040.50.2236068]

Die Spalten dieser Matrix sind orthonormal , wie dies beispielsweise durch (sum(Z[,3]^2))^(1/4) = 1und gezeigt werden kann z[,3]%*%z[,4] = 0(im Übrigen gilt das Gleiche für Zeilen). Und jede Spalte ist das Ergebnis der Erhöhung der Anfangswerte auf die 1. , 2. und 3. Potenz - dh linear, quadratisch und kubisch .scores - mean123


2. Welche Kontraste (Spalten) tragen wesentlich zur Erklärung der Ebenenunterschiede in der erklärenden Variablen bei?

Wir können einfach die ANOVA starten und uns die Zusammenfassung ansehen ...

summary(lm(write ~ readcat, hsb2))

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  52.7870     0.6339  83.268   <2e-16 ***
readcat.L    14.2587     1.4841   9.607   <2e-16 ***
readcat.Q    -0.9680     1.2679  -0.764    0.446    
readcat.C    -0.1554     1.0062  -0.154    0.877 

... um zu sehen, dass es einen linearen Effekt von readcaton gibt write, so dass die ursprünglichen Werte (im dritten Codeabschnitt am Anfang des Beitrags) wie folgt reproduziert werden können:

coeff = coefficients(lm(write ~ readcat, hsb2))
C = contr.poly(4)
(recovered = c(coeff %*% c(1, C[1,]),
               coeff %*% c(1, C[2,]),
               coeff %*% c(1, C[3,]),
               coeff %*% c(1, C[4,])))
[1] 42.77273 49.97849 56.56364 61.83333

... oder...

Bildbeschreibung hier eingeben

... oder viel besser ...

Bildbeschreibung hier eingeben

Als orthogonale Kontraste die Summe ihrer Komponenten ergänzt Null für ein 1 , , ein t Konstanten und das Punktprodukt von zwei von ihnen gleich Null ist . Wenn wir sie uns vorstellen könnten, würden sie ungefähr so ​​aussehen:ich=1teinich=0ein1,,eint

Bildbeschreibung hier eingeben

X0,X1,.Xn als Kontraste.

Grafisch ist dies viel einfacher zu verstehen. Vergleichen Sie die tatsächlichen Mittelwerte durch Gruppen in großen quadratischen schwarzen Blöcken mit den vorhergesagten Werten und sehen Sie, warum eine gerade Näherung mit minimalem Beitrag von quadratischen und kubischen Polynomen (mit nur mit Löss angenäherten Kurven) optimal ist:

Bildbeschreibung hier eingeben

Wenn die Koeffizienten der ANOVA für den linearen Kontrast für die anderen Näherungen (quadratisch und kubisch) nur aus Gründen der Wirkung so groß gewesen wären, würde die folgende unsinnige Darstellung die Polynomdarstellungen jedes "Beitrags" deutlicher darstellen:

Bildbeschreibung hier eingeben

Der Code ist hier .

Antoni Parellada
quelle
+1 Wow. Kann diese Antwort (die ich bis jetzt noch nicht gelesen habe) auch als Antwort auf meine alte, vergessene Frage angesehen werden ? Stats.stackexchange.com/q/63639/3277 ?
TTNPHNS
(+1) @ttnphns: Da würde es wohl noch besser passen.
Scortchi
Nur ein Tipp: Vielleicht möchten Sie mich dort mit einem Link zu hier kommentieren; oder geben Sie dort eine Antwort - die ich wahrscheinlich akzeptieren werde.
TTNPHNS
1
@ttnphns und @Scortchi Danke! Ich habe einige Zeit damit verbracht, diese Konzepte zu verstehen, und habe nicht viel Reaktion erwartet. Es ist also eine sehr positive Überraschung. Ich denke, es gibt einige Falten in Bezug auf die Erklärung der qr.qy()Funktion auszubügeln , aber ich werde auf jeden Fall versuchen, zu sehen, ob ich etwas minimal Kohärentes zu Ihrer Frage sagen kann, sobald ich etwas Zeit habe.
Antoni Parellada
1
@Elvis Ich habe versucht, einen guten zusammenfassenden Satz zu wählen und ihn irgendwo in den Beitrag zu setzen. Ich halte dies für einen guten Punkt und fordere eine nette mathematische Erklärung, aber es könnte an dieser Stelle zu viel sein, um weiter darauf einzugehen.
Antoni Parellada
5

Ich werde Ihr Beispiel verwenden, um zu erklären, wie es funktioniert. Die Verwendung von Polynomkontrasten mit vier Gruppen ergibt folgende Ergebnisse.

Ewrichte1=μ-0,67L+0,5Q.-0,22CEwrichte2=μ-0,22L-0,5Q.+0,67CEwrichte3=μ+0,22L-0,5Q.-0,67CEwrichte4=μ+0,67L+0,5Q.+0,22C

Wobei die erste Gleichung für die Gruppe der niedrigsten Lesewerte und die vierte für die Gruppe der besten Lesewerte gilt. wir können diese Gleichungen mit der unter Verwendung der normalen linearen Regression gegebenen vergleichen (angenommenreeindich ist kontinuierlich)

Ewrichteich=μ+reeindichL+reeindich2Q.+reeindich3C

Normalerweise statt L,Q.,C du würdest haben β1,β2,β3und an erster Stelle geschrieben. Aber diese Schrift ähnelt der mit Polynomkontrasten. Also Zahlen vorL,Q.,C sind eigentlich statt reeindich,reeindich2,reeindich3. Sie können diese Koeffizienten vorher sehenL haben linearen Trend vor Q. quadratisch und vorher C kubisch.

Dann schätzt R die Parameter μ,L,Q.,C und gibt dir

μ^=52.79,L^=14.26,Q^=0.97,C^=0.16
Where μ^=14i=14Ewritei and estimated coefficients μ^,L^,Q^,C^sind so etwas wie Schätzungen bei normaler linearer Regression. An der Ausgabe können Sie also erkennen, ob die geschätzten Koeffizienten erheblich von Null abweichen, sodass Sie eine Art linearen, quadratischen oder kubischen Trend vorhersehen können.

In diesem Beispiel ist es nur deutlich ungleich Null L^. Ihr Fazit könnte also lauten: Wir sehen, dass die bessere Punktzahl beim Schreiben linear von der Lese-Punktzahl abhängt, aber es gibt keinen signifikanten quadratischen oder kubischen Effekt.

Fimba
quelle