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:
wobei die Werte , , oder annehmen sollje nach der unterschiedlichen Ebene der Intervallvariablen 4.
Ist das richtig? Und wenn ja, welchen Zweck hatten Polynomkontraste?
r
regression
contrasts
Pippo
quelle
quelle
contr.poly
in R.Antworten:
Um es noch einmal zusammenzufassen (und falls die OP-Hyperlinks in Zukunft fehlschlagen sollten), betrachten wir einen Datensatz
hsb2
als solchen:welche hier importiert werden können .
Wir wandeln die Variable
read
in eine geordnete / ordinale Variable um: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 Ebenenreadcat
. In R können wir verwendenlm(write ~ readcat, hsb2)
1. Generieren der Kontrastmatrix:
Die bestellte Variablen−1=3 Kontraste.
readcat
hat vier verschiedene Ebenen , also haben wirLassen Sie uns zuerst das Geld holen und einen Blick auf die integrierte R-Funktion werfen:
Lassen Sie uns nun untersuchen, was unter der Haube vor sich ging:
Was ist dort passiert? das(−1.5)0 (−0.5)0 0.50 1.50 (−1.5)1 (−0.5)1 0.51 1.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.25 0.52=0.25 1.52=2.25 (−1.5)3=−3.375 (−0.5)3=−0.125 0.53=0.125 1.53=3.375
outer(a, b, "^")
wirft die Elemente vona
zu den Elementen von aufb
, 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,25Als 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 .QR
c_Q = qr(X)$qr
... von denen wir nur die Diagonale speichern (R QR -Zerlegung. Gerade? Nun, nein ... Es stellt sich heraus, dass die Diagonale einer oberen Dreiecksmatrix die Eigenwerte der Matrix enthält!
z = c_Q * (row(c_Q) == col(c_Q))
). Was liegt in der Diagonale: Nur die "unteren" Einträge des Teils des Q RAls nächstes rufen wir die folgende Funktion aufQ Q Qz
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 .qr(X)$qr
Q = qr.Q(qr(X))
Q %*% 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:Q R Qz
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
Zuletzt nennen wir die
(Z <- sweep(raw, 2L, apply(raw, 2L, function(x) sqrt(sum(x^2))), "/", check.margin = FALSE))
Umwandlung der Matrixraw
in orthonormale Vektoren:Diese Funktion "normalisiert" einfach die Matrix, indem∑col.x2i−−−−−−−√ (i) (ii) (i) .
"/"
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.apply(raw, 2, function(x)sqrt(sum(x^2)))
2 2.236 2 1.341
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 :R4
contr.poly(4)
Die Spalten dieser Matrix sind orthonormal , wie dies beispielsweise durchscores - mean 1 2 3
(sum(Z[,3]^2))^(1/4) = 1
und gezeigt werden kannz[,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 .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))
... um zu sehen, dass es einen linearen Effekt von
readcat
on gibtwrite
, so dass die ursprünglichen Werte (im dritten Codeabschnitt am Anfang des Beitrags) wie folgt reproduziert werden können:... oder...
... oder viel besser ...
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:∑i = 1teinich= 0 ein1, ⋯ , at
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:
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:
Der Code ist hier .
quelle
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.Ich werde Ihr Beispiel verwenden, um zu erklären, wie es funktioniert. Die Verwendung von Polynomkontrasten mit vier Gruppen ergibt folgende Ergebnisse.
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 (angenommenr e a dich ist kontinuierlich)
Normalerweise stattL , Q , C du würdest haben β1, β2, β3 und an erster Stelle geschrieben. Aber diese Schrift ähnelt der mit Polynomkontrasten. Also Zahlen vorL , Q , C sind eigentlich statt r e a dich, r e a d2ich, r e a d3ich . 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
In diesem Beispiel ist es nur deutlich ungleich NullLˆ . 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.
quelle