Я використовую lmer в R, щоб перевірити вплив умови ( cond
) на деякий результат. Ось деякі складені дані, де s є предметом ідентифікатора і a
, b
і c
є умовами.
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))
Я хотів би порівняти
- рівень
a
до середнього рівняb
таc
та - рівень
b
до рівняc
.
Моє запитання полягає в тому, як мені встановити контрасти, щоб це зробити таким чином, щоб перехоплення відображало середнє значення трьох умов, а дві обчислені оцінки безпосередньо відображали різниці, визначені в 1. і 2.?
Я спробував
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))
де cond2
здається, що це нормально, але cond1
це не так.
Далі Як інтерпретувати ці власні контрасти? , Я намагався використати узагальнений зворотний, але ці оцінки також не мають сенсу.
c2 <- t(ginv(c1))
gather(temp, cond, result, a, b, c) %>%
lmer(result ~ cond + (1|s), data = ., contrasts = list(cond = c2))
Я також спробував протиставити Гельмеру, але засоби все ще не відповідають.
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))
Який правильний спосіб це зробити?