Używam lmera w R, aby sprawdzić wpływ warunku ( cond
) na jakiś wynik. Oto niektóre skompilowane dane, gdzie s jest identyfikatorem podmiotu i a
, b
i c
są warunkami.
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))
Chciałbym porównać
- poziom
a
do średniej poziomówb
ic
i - poziom
b
do poziomuc
.
Moje pytanie brzmi: jak ustawić kontrasty, aby zrobić to w taki sposób, aby punkt przecięcia odzwierciedlał średnią z trzech warunków, a dwa obliczone oszacowania bezpośrednio odzwierciedlały różnice zdefiniowane w punktach 1. i 2.?
Próbowałem z
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))
gdzie cond2
wydaje się być OK, ale cond1
nie jest.
Po Jak interpretować te niestandardowe kontrasty? , Zamiast tego próbowałem użyć uogólnionej odwrotności, ale te szacunki też nie mają sensu.
c2 <- t(ginv(c1))
gather(temp, cond, result, a, b, c) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c2))
Próbowałem też kontrastów Helmerta, ale środki wciąż się nie zgadzają.
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))
Jaki jest właściwy sposób to zrobić?