Я знаю, что ответ был выбран для этого поста. Я все еще хочу указать, как указать правильный термин ошибки / случайный эффект при подборе модели aov
или lmer
к данным многократного повторного измерения. Я предполагаю, что обе независимые переменные (IV) являются фиксированными и скрещиваются друг с другом и с субъектами, что означает, что все субъекты подвергаются воздействию всех комбинаций IV. Я собираюсь использовать данные, взятые из Экспериментального дизайна Кирка: Процедуры для Поведенческих Наук (2013).
library(lme4)
library(foreign)
library(lmerTest)
library(dplyr)
file_name <- "http://www.ats.ucla.edu/stat/stata/examples/kirk/rbf33.dta" #1
d <- read.dta(file_name) %>% #2
mutate(a_f = factor(a), b_f = factor(b), s_f = factor(s)) #3
head(d)
## a b s y a_f b_f s_f
## 1 1 1 1 37 1 1 1
## 2 1 2 1 43 1 2 1
## 3 1 3 1 48 1 3 1
## 4 2 1 1 39 2 1 1
## 5 2 2 1 35 2 2 1
В этом исследовании 5 субъектов подвергались 2 процедурам - типу удара (а) и продолжительности тренировки (б) - по 3 уровня в каждом. Переменная результата - отношение к меньшинству. В # 3 я превратил a, b и s в факторные переменные a_f, b_f и s_f. Пусть p и q будут номерами уровней для a_f и b_f (по 3 каждый), а n будет размером выборки (5).
В этом примере степени свободы ( dfs ) для тестов a_f, b_f и их взаимодействия должны составлять p -1 = 2, q -1 = 2 и ( p -1) * ( q -1) = 4 соответственно. df для условия ошибки s_f равно ( n -1) = 4, а df для условия ошибки Within (s_f: a_f: b_f) равно ( n *) * -1 тысяча тридцать-одна) ( рд -1) = 32. Таким образом, правильные модели должны дать вам эти dfs .
Использование aov
Теперь давайте попробуем различные спецификации модели, используя aov
:
aov(y ~ a_f*b_f + Error(s_f), data=d) %>% summary() # m1
aov(y ~ a_f*b_f + Error(s_f/a_f:b_f), data=d) %>% summary() # m2
aov(y ~ a_f*b_f + Error(s_f/a_f*b_f), data=d) %>% summary() # m3
Простое указание ошибки как Error(s_f)
в m1 дает правильные значения dfs и F, соответствующие значениям в книге. m2 также дает то же значение, что и m1, но также печально известное «Предупреждение: ошибка () модель единственная». м3 делает что-то странное. Далее выполняется разбиение внутри остатков в m1 (634,9) на остатки для трех слагаемых ошибок: s_f: a_f (174.2), s_f: b_f (173.6) и s_f: a_f: b_f (287.1). Это неправильно, так как мы не получили бы три условия ошибки, когда мы запускаем двухстороннее ANOVA между субъектами! Множественные условия ошибок также противоречат смыслу использования блочных факториальных конструкций, что позволяет нам использовать один и тот же термин ошибок для проверки A, B и AB, в отличие от схем с разделением графиков, для которых требуется 2 условия ошибок.
Использование lmer
Как мы можем получить те же значения dfs и F, используя lmer? Если ваши данные сбалансированы, приближение Кенварда-Роджера, используемое в lmerTest
, даст вам точные dfs и F-ratio.
lmer(y ~ a_f*b_f + (1|s_f), data=d) %>% anova() # mem1
lmer(y ~ a_f*b_f + (1|s_f/a_f:b_f), data=d) %>% anova() # mem2
lmer(y ~ a_f*b_f + (1|s_f/a_f*b_f), data=d) %>% anova() # mem3
lmer(y ~ a_f*b_f + (1|s_f:a_f:b_f), data=d) %>% anova() # mem4
lmer(y ~ a_f*b_f + (a_f*b_f|s_f), data=d) %>% anova() # mem5
Опять же, просто указав случайный эффект как (1|s_f)
, вы получите правильные dfs и F-отношения (mem1). mem2-5 даже не дал результатов, предположительно, количество случайных эффектов, которое нужно было оценить, было больше, чем размер выборки.