Wie wird eine Kontrastmatrix (in R) für die Differenz zwischen einer Ebene und einem Durchschnitt der anderen angegeben?


9

Ich habe ein Regressionsmodell, das so aussieht:

Y=β0+β1X1+β2X2+β3X3+β12X1X2+β13X1X3+β123X1X2X3

... oder in R-Notation: y ~ x1 + x2 + x3 + x1:x2 + x1:x3 + x1:x2:x3

, und sind kategoriale Variablen und ist numerisch. Die Komplikation ist, dass drei Ebenen und anstelle von Standardkontrasten muss ich testen:X1X2X3X1X1a,X1b,X1c

  • Ob sich der Achsenabschnitt für Ebene signifikant vom durchschnittlichen Achsenabschnitt für die Ebenen und .X1aX1bX1c
  • Ob sich die Antwort von zwischen der Ebene und dem Durchschnitt der Ebenen und signifikant unterscheidet .X2X1aX1bX1c
  • Ob sich die Steigung von zwischen der Ebene und dem Durchschnitt der Ebenen und signifikant unterscheidet .X3X1aX1bX1c

Basierend auf diesem Beitrag scheint die Matrix, die ich will, ...

 2
-1
-1

Also mache ich contrasts(mydata$x1)<-t(ginv(cbind(2,-1,-1))). Die Schätzung von ändert sich, aber auch die anderen. Ich kann die neue Schätzung von reproduzieren, indem ich die vorhergesagten Werte der und (wenn und auf ihrem Referenzniveau sind) vom doppelten Wert von auf diesen Niveaus . Ich kann jedoch nicht darauf vertrauen, dass ich meine Kontrastmatrix korrekt angegeben habe, es sei denn, ich kann auch die anderen Koeffizienten auf ähnliche Weise ableiten.β1beta1X1bX1cX3=0X2X1a

Hat jemand einen Rat, wie ich mich mit der Beziehung zwischen Zellmitteln und Kontrasten auseinandersetzen kann? Vielen Dank. Gibt es einen Standardnamen für diese Art von Kontrast?


Aha! Gemäß dem Link in der Antwort von Glen_b können Sie unter dem Strich JEDEN Vergleich der gewünschten Gruppenmittelwerte wie folgt in ein Kontrastattribut im R-Stil konvertieren:

  1. Machen Sie eine quadratische Matrix. Die Zeilen repräsentieren die Ebenen Ihres Faktors und die Spalten repräsentieren Kontraste. Außer dem ersten, der dem Modell sagt, was der Achsenabschnitt darstellen soll.
  2. Wenn Sie möchten, dass Ihr Achsenabschnitt der Mittelwert ist, füllen Sie die erste Spalte mit demselben Wert ungleich Null, egal was passiert. Wenn Sie möchten, dass der Achsenabschnitt eines der Mittelwerte der Ebene ist, setzen Sie eine Zahl in diese Zeile und füllen Sie den Rest mit Nullen. Wenn der Achsenabschnitt ein Mittelwert aus mehreren Ebenen sein soll, setzen Sie Zahlen in diese Zeilen und Nullen in den Rest. Wenn Sie möchten, dass es sich um einen gewichteten Mittelwert handelt, verwenden Sie unterschiedliche Zahlen, andernfalls verwenden Sie dieselbe Zahl. Sie können sogar negative Werte in die Intercept-Spalte eingeben, und das bedeutet wahrscheinlich auch etwas, aber es ändert die anderen Kontraste vollständig, sodass ich keine Ahnung habe, wofür das ist
  3. Füllen Sie den Rest der Spalten mit positiven und negativen Werten aus, die angeben, welche Ebenen Sie im Vergleich zu anderen wünschen. Ich vergesse, warum das Summieren auf Null wichtig ist, aber passen Sie die Werte so an, dass die Spalten auf Null summieren.
  4. Transponieren Sie die Matrix mit der t()Funktion.
  5. Verwenden Sie ginv()aus der MASSVerpackung oder solve(), um die Umkehrung der transponierten Matrix zu erhalten.
  6. Löschen Sie die erste Spalte, z mycontrast<-mycontrast[,-1]. Sie haben jetzt eine apx p-1-Matrix, aber die Informationen, die Sie für Ihren Achsenabschnitt eingegeben haben, wurden in Schritt 5 in der gesamten Matrix codiert.
  7. Wenn Sie möchten, dass Beschriftungen in der Zusammenfassungsausgabe angenehmer zu lesen sind als lm()die Standardausgabe von et al., Benennen Sie die Spalten Ihrer Matrix entsprechend. Der Intercept wird jedoch immer automatisch benannt (Intercept).
  8. Machen Sie Ihre Matrix zum neuen Kontrast für den betreffenden Faktor, z contrasts(mydata$myfactor)<-mymatrix
  9. Führen Sie lm()(und wahrscheinlich viele andere Funktionen, die Formeln verwenden) wie gewohnt in Standard R aus, ohne laden zu glhtmüssen doBy, oder contrasts.

Glen_b, danke und danke UCLA Statistical Consulting Group. Mein Prof für angewandte Statistiken verbrachte mehrere Tage damit, sich mit diesem Thema zu beschäftigen, und ich hatte immer noch keine Ahnung, wie ich meine eigene Kontrastmatrix schreiben sollte. Und jetzt, eine Stunde Lesen und Spielen mit R, und ich denke endlich, ich verstehe. Ich denke, ich hätte mich stattdessen bei der UCLA bewerben sollen. Oder University of StackExchange.

Antworten:


5

Dieser Vergleich von eins mit dem Mittelwert aller späteren Variablen wird (abgesehen von der Skala) als Helmert-Codierung oder Helmert-Kontraste bezeichnet . Der eine, den Sie geben, ist der erste Kontrast, der andere wäre eine skalierte Version von .(0,1,1)

Was R Anrufe Helmert Codierung, diese Anrufe ‚umgekehrte Helmert‘. Sie entsprechen einer Änderung der variablen Reihenfolge.


Sollte das Äquivalent "bis zu einer Änderung der variablen Reihenfolge" "eine Umkehrung der Reihenfolge der Ebenen" erhalten? Um den SAS / SPSS-Helmertyp zu erhalten (vergleiche mit dem Durchschnitt der verbleibenden Ebenen), müsste man entweder die Reihenfolge der Ebenen des betreffenden Faktors umkehren oder rev () jede Spalte und dann rev () jede Zeile der Matrix zurückgegeben von contra.helmert?
Tim

@ Tim „eine Änderung der Variablen , um“ nicht im Sinne von „sollte jede Änderung der Variablenordnung“, aber ganz wörtlich eine Änderung der Variablenordnung (dh, eine insbesondere ist).
Glen_b -State Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.