Ich mache eine Einweg-ANOVA (pro Art) mit benutzerdefinierten Kontrasten.
[,1] [,2] [,3] [,4]
0.5 -1 0 0 0
5 1 -1 0 0
12.5 0 1 -1 0
25 0 0 1 -1
50 0 0 0 1
wo ich Intensität 0,5 gegen 5, 5 gegen 12,5 und so weiter vergleiche. Dies sind die Daten, an denen ich arbeite
mit den folgenden Ergebnissen
Generalized least squares fit by REML
Model: dark ~ intensity
Data: skofijski.diurnal[skofijski.diurnal$species == "niphargus", ]
AIC BIC logLik
63.41333 67.66163 -25.70667
Coefficients:
Value Std.Error t-value p-value
(Intercept) 16.95 0.2140872 79.17334 0.0000
intensity1 2.20 0.4281744 5.13809 0.0001
intensity2 1.40 0.5244044 2.66970 0.0175
intensity3 2.10 0.5244044 4.00454 0.0011
intensity4 1.80 0.4281744 4.20389 0.0008
Correlation:
(Intr) intns1 intns2 intns3
intensity1 0.000
intensity2 0.000 0.612
intensity3 0.000 0.408 0.667
intensity4 0.000 0.250 0.408 0.612
Standardized residuals:
Min Q1 Med Q3 Max
-2.3500484 -0.7833495 0.2611165 0.7833495 1.3055824
Residual standard error: 0.9574271
Degrees of freedom: 20 total; 15 residual
16,95 ist das globale Mittel für "Niphargus". In Intensität1 vergleiche ich Mittelwerte für Intensität 0,5 mit 5.
Wenn ich dieses Recht verstanden habe, sollte der Koeffizient für Intensität1 von 2,2 die Hälfte der Differenz zwischen den Intensitätsstufen 0,5 und 5 betragen. Meine Handberechnungen stimmen jedoch nicht mit denen der Zusammenfassung überein. Kann jemand einschneiden, was ich falsch mache?
ce1 <- skofijski.diurnal$intensity
levels(ce1) <- c("0.5", "5", "0", "0", "0")
ce1 <- as.factor(as.character(ce1))
tapply(skofijski.diurnal$dark, ce1, mean)
0 0.5 5
14.500 11.875 13.000
diff(tapply(skofijski.diurnal$dark, ce1, mean))/2
0.5 5
-1.3125 0.5625
r
anova
contrasts
generalized-least-squares
Roman Luštrik
quelle
quelle
geom_points(position=position_dodge(width=0.75))
wird festgelegt, wie die Punkte in Ihrem Plot nicht mit den Feldern übereinstimmen .geom_jitter
, die eine Verknüpfung für alle geom_point () -Parameter ist, die zittern.geom_jitter(position_dodge)
? Ich habe verwendetgeom_points(position_jitterdodge)
, um Boxplots mit Ausweichen Punkte hinzuzufügen.geom_jitter
hier . Nach meiner Erfahrung seit meiner obigen Antwort finde ich es unnötig, Boxplots zu verwenden. Je. Wenn ich viele Punkte habe, verwende ich Geigenplots, die die Punktedichte in viel feineren Details zeigen als Boxplots. Boxplots wurden erfunden, als viele Punkte aufgetragen wurden oder ihre Dichte nicht zweckmäßig war. Vielleicht ist es an der Zeit, darüber nachzudenken, diese (behinderte) Visualisierung fallen zu lassen.Antworten:
Die Matrix, die Sie für die Kontraste angegeben haben, ist grundsätzlich korrekt. Um es in eine geeignete Kontrastmatrix umzuwandeln , müssen Sie die verallgemeinerte Inverse Ihrer ursprünglichen Matrix berechnen.
Wenn
M
ist Ihre Matrix:Berechnen Sie nun die verallgemeinerte Inverse mit
ginv
und transponieren Sie das Ergebnis mitt
:Das Ergebnis ist identisch mit dem von @Greg Snow. Verwenden Sie diese Matrix für Ihre Analyse.
Dies ist viel einfacher als manuell.
Es gibt eine noch einfachere Möglichkeit, eine Matrix gleitender Unterschiede (auch als wiederholte Kontraste bezeichnet ) zu erstellen . Dies kann mit der Funktion
contr.sdif
und der Anzahl der Faktorstufen als Parameter erfolgen. Wenn Sie fünf Faktorstufen haben, wie in Ihrem Beispiel:quelle
Wenn die Matrix oben zeigt, wie Sie die Dummy-Variablen codieren (was Sie an die Funktion
C
odercontrast
in R übergeben), vergleicht die erste die erste Ebene mit den anderen (tatsächlich wird das 0,8-fache der ersten von der 0,2-fachen subtrahiert Summe der anderen).Der zweite Term vergleicht die ersten 2 Ebenen mit den letzten 3. Der dritte vergleicht die ersten drei Ebenen mit den letzten zwei und der vierte vergleicht die ersten vier Ebenen mit den letzten.
Wenn Sie die von Ihnen beschriebenen Vergleiche durchführen möchten (jedes Paar vergleichen), lautet die gewünschte Dummy-Variablencodierung:
quelle
aov()
anstelle von erforderlichlm()
? Ich frage, weil ich mehrere Tutorials gelesen habe, in denen Kontrastmatrizen füraov()
genau so konstruiert sind, wie sie von Roman angegeben wurden. Siehe z. B. Kapitel 5 in cran.r-project.org/doc/contrib/Vikneswaran-ED_companion.pdfaov
Funktion ruft dielm
Funktion auf, um die Hauptberechnungen durchzuführen, sodass Dinge wie Kontrastmatrizen in beiden den gleichen Effekt haben.