Ich verwende lmer in R, um die Auswirkung von condition ( cond
) auf ein Ergebnis zu überprüfen . Hier sind einige aus Daten, wobei s der Objektidentifizierer und a
, b
und c
sind Bedingungen.
library("tidyr")
library("dplyr")
set.seed(123)
temp <- data.frame(s = paste0("S", 1:30),
a = rnorm(30, -2, 1),
b = rnorm(30, -3, 1),
c = rnorm(30, -4, 1))
Ich würde gerne vergleichen
- Ebene
a
zum Mittelwert der Ebenenb
undc
und - Level
b
zu Levelc
.
Meine Frage ist, wie ich die Kontraste so einstelle, dass der Achsenabschnitt den Mittelwert der drei Bedingungen widerspiegelt und die beiden berechneten Schätzungen die Unterschiede gemäß 1. und 2. direkt widerspiegeln.
Ich habe es mit versucht
c1 <- cbind(c(-0.5, 0.25, 0.25), c(0, -0.5, 0.5))
gather(temp, cond, result, a, b, c) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c1))
wo cond2
scheint in Ordnung zu sein, ist es aber cond1
nicht.
Folgen Wie werden diese benutzerdefinierten Kontraste interpretiert? Ich habe versucht, stattdessen die verallgemeinerte Inverse zu verwenden, aber diese Schätzungen sind auch nicht sinnvoll.
c2 <- t(ginv(c1))
gather(temp, cond, result, a, b, c) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c2))
Ich habe auch Helmert-Kontraste ausprobiert, aber die Mittel stimmen immer noch nicht überein.
gather(temp, cond, result, a, b, c) %>%
mutate(cond = factor(cond, levels = c("c", "b", "a"))) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = contr.helmert))
Was ist der richtige Weg, um dies zu tun?
Antworten:
Für die folgenden Schritte benötigen wir den Datenrahmen im Langformat. Der Datenrahmen
dat
enthält die abhängige Variableresult
, die kategorische Prädiktorcond
(Ebene:a
,b
, undc
), und der Zufallsfaktors
.Im Folgenden werde ich zwei Ansätze veranschaulichen, um eine Kontrastmatrix zu erstellen, die den Bedingungen entspricht, die Sie vergleichen möchten:
Benutzerdefinierte Kontraste
Die Matrix
mat
entspricht den Pegeldifferenzen.Um die tatsächliche Kontrastmatrix zu erstellen, berechnen wir die verallgemeinerte Inverse mit
ginv
(vonMASS
).Diese Kontrastmatrix
cMat
kann in verwendet werdenlmer
.Wie Sie sehen können, entsprechen die Schätzungen mit festem Effekt den oben angegebenen Unterschieden. Darüber hinaus repräsentiert der Achsenabschnitt den Gesamtmittelwert.
Helmert kontrastiert mit
contr.helmert
Sie können auch die integrierte
contr.helmert
Funktion verwenden, um die Kontrastmatrix zu erstellen.Die Reihenfolge entspricht jedoch nicht der in der Frage angegebenen. Daher müssen wir die Reihenfolge der Spalten und Zeilen umkehren. Die erste Spalte entspricht
b
vs.a
und die zweite entsprichtc
vs. dem Mittelwert vonb
unda
.Vergleichen Sie die Kontrastmatrix
cHelmert2
mitcMat
. Sie werden feststellen, dass die Spalten skalierte Versionen der anderen Matrix sind.Das Ergebnis von
lmer
ist:Diese Kontrastmatrix ermöglicht dieselben Vergleiche wie die benutzerdefinierte Kontrastmatrix. Da jedoch die Werte in der Matrix unterschiedlich sind, sind auch die Koeffizienten mit festen Effekten unterschiedlich. Es überrascht nicht, dass die Werte gleich sind.t
quelle
mat
möchte , wäre dasc(1, -1/3, -1/3, -1/3)
? Deshalb setze ich die Zahlen immer so, wie sie in der Formel (a + (b + c + d) / 3) stehen, undginv
skaliere sie dann entsprechend, sodass die Koeffizienten die Differenz direkt widerspiegeln. Und als Sie die Reihenfolge im Helmert-Beispiel geändert haben, war das nur passend zur Frage? Ansonsten sollten die Ergebnisse unabhängig von der Reihenfolge der Kontraste gleich sein, oder?