Плановые контрасты в смешанных моделях - PullRequest
0 голосов
/ 21 января 2019

Мой эксперимент состоит из двух факторов, один между и один внутри субъекта.Время является фактором между субъектами и имеет два уровня: (низкий и высокий).Времена - это факторы внутри субъекта, и они имеют три уровня: 1, 4, 5. dv - моя зависимая переменная, и id - идентификатор для каждого участника.Я приложил данные для 6 первых участников.

Используя R, я выполнил ANOVA, который дал значительные результаты для обоих факторов.У меня есть два запланированных контраста:

1) Во время 1 я хочу сравнить две возрастные группы (низкий и высокий).То есть сравнение между субъектами.

2) В младшем возрасте я хочу сравнить Время 1 и Время 5. То есть, сравнение внутри объекта.

Конечно, я мог бы выполнить-test, но это кажется неуместным, так как я могу основывать свою стандартную оценку ошибок здесь на большем количестве ячеек.У меня вопрос, как я могу выполнить вышеупомянутые контрасты и какова соответствующая степень свободы?

structure(list(id = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 
5L, 5L, 5L, 5L, 5L, 5L), .Label = c("1", "2", "3", "5", "6", 
"7", "8", "11", "12", "13", "15", "17", "18", "19", "20", "21", 
"22", "23", "24", "25", "27", "28", "29", "31", "32", "34", "35", 
"36", "37", "38", "39", "40", "42", "43", "44", "45", "46", "47", 
"48", "49", "52", "53", "54", "55", "56", "58", "59", "60", "62", 
"63", "64", "66", "67", "68", "69", "70", "71", "72", "73", "74", 
"75", "77", "79", "80", "81", "83", "84", "85", "86", "87", "88", 
"89", "90", "91", "92", "93", "94", "96", "97", "98", "99", "100", 
"101", "102", "103", "104", "105", "106", "107", "108", "109", 
"110", "111", "112", "113", "114", "115", "116", "117", "118", 
"119", "120", "121", "122", "123", "124", "125", "126", "127", 
"128", "129", "130", "132", "133", "134", "135", "136", "137", 
"138", "139", "140", "142", "143", "144", "145", "146", "147", 
"148", "149", "150", "151", "152", "153", "154", "156", "157", 
"158", "159", "160", "161", "162", "163", "165", "166", "167", 
"168", "169", "171", "172", "174", "175", "176", "177", "178", 
"179", "180", "181", "182", "183", "184", "185", "186", "187", 
"188", "189", "190", "191", "192", "193", "194", "195", "196", 
"200", "201", "202", "203", "204", "205", "206", "208", "209", 
"210", "212", "213", "214", "215", "216", "217", "218", "219", 
"220", "222", "223", "224", "226", "228", "230", "231", "232", 
"233", "234", "236", "237", "238", "239", "240", "241", "242", 
"243", "244", "246", "247", "248", "249", "250", "251", "252", 
"253", "254", "255", "256", "257", "258", "260", "261", "262", 
"263", "266", "267", "269", "270", "271", "272", "273", "274", 
"275", "276", "277", "278", "279", "280", "281", "282", "283", 
"284", "285", "286", "287", "288", "289", "290", "291", "292", 
"293", "294", "295", "296", "298", "299", "300"), class = "factor"), 
    age = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
    2L, 2L, 2L, 2L, 2L), .Label = c("high", "low"), class = "factor"), 
    time = structure(c(3L, 3L, 2L, 2L, 1L, 1L, 3L, 3L, 2L, 2L, 
    1L, 1L, 3L, 3L, 2L, 2L, 1L, 1L, 3L, 3L, 2L, 2L, 1L, 1L, 3L, 
    3L, 2L, 2L, 1L, 1L), .Label = c("1", "4", "5"), class = "factor"), 
    dv = c(104, 102, 104, 103, 104, 104, 102, 102, 102, 102, 
    106, 106, 106, 106, 107, 107, 106, 106, 106, 107, 105, 104, 
    106, 107, 104, 101, 104, 101, 104, 106)), row.names = c(NA, 
-30L), class = c("tbl_df", "tbl", "data.frame"))

1 Ответ

0 голосов
/ 24 января 2019

Загрузите пакет lme4, который подходит для многоуровневых моделей (альтернатива ANOVA с повторными измерениями), и emmeans, который может делать контрасты.

library(lme4)
library(emmeans)

Это подходит для модели, гдеdv предсказывается взаимодействием (R автоматически заполняет основные эффекты), плюс случайный перехват и случайный эффект time - оба вложены в id.dat - это то, что я сохранил из dput в вашем посте.

mod <- lmer(dv ~ age * time + (1 + time | id), dat)

Контрасты сбивают с толку, и я всегда параноик, я пойму это неправильно.Таким образом, мы можем использовать emmeans, чтобы найти их.Мы можем разместить объект emmeans, который получает значения при каждой комбинации time и age:

emm_mod <- emmeans(mod, ~ time + age)

. Требуемые контрасты - третий и четырнадцатый из результата pairs() (запустите его самостоятельно, чтобы увидеть, как он выглядит).Вы можете получить нужные контрасты, поместив coef() вокруг объекта pairs().Вам просто нужны два столбца - 3-й и 14-й:

(contr_mat <- coef(pairs(emm_mod))[, c("c.3", "c.14")])

, который возвращает:

       c.3 c.14
1,high   1    0
4,high   0    0
5,high   0    0
1,low   -1    1
4,low    0    0
5,low    0   -1

Вы можете сосредоточиться на этих двух контрастах, указав их в contr.Вы также можете использовать выбранную вами настройку p-значения на adjust во что угодно - я начну с "holm":

emmeans(mod, ~ time + age, contr = contr_mat, adjust = "holm")

Бит contrasts даст вам значения p, которые вы естьинтересует:

$emmeans
 time age    emmean        SE df lower.CL upper.CL
 1    high 106.2500 0.6518719  3 104.1755 108.3245
 4    high 105.7500 0.8544406  3 103.0308 108.4692
 5    high 106.2500 0.4759431  3 104.7353 107.7647
 1    low  105.0000 0.5322511  3 103.3061 106.6939
 4    low  102.6667 0.6976478  3 100.4464 104.8869
 5    low  102.5000 0.3886059  3 101.2633 103.7367

Degrees-of-freedom method: kenward-roger 
Confidence level used: 0.95 

$contrasts
 contrast estimate        SE df t.ratio p.value
 c.3          1.25 0.8415630  3   1.485  0.2341
 c.14         2.50 0.7104068  3   3.519  0.0779

P value adjustment: holm method for 2 tests 

Вы также можете попробовать adjust = "none":

> emmeans(mod, ~ time + age, contr = contr_mat, adjust = "none")$contrasts
 contrast estimate        SE df t.ratio p.value
 c.3          1.25 0.8415630  3   1.485  0.2341
 c.14         2.50 0.7104068  3   3.519  0.0389
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...