ฉันใช้ lmer ใน R เพื่อตรวจสอบผลกระทบของ condition ( cond
) ต่อผลลัพธ์บางรายการ นี่คือบางส่วนทำข้อมูลที่อยู่ที่ระบุเรื่องและ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))
ฉันลองใช้ Helmert ตรงกันข้ามเช่นกัน แต่ค่าเฉลี่ยยังไม่ตรงกัน
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))
วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?