Оновлення травня 2017 року : Як виявляється, низка того, що я написав тут, є начебто несправедливим . Деякі оновлення здійснюються протягом усього повідомлення.
Я дуже погоджуюся з тим, що вже сказав Бен Болкер (дякую за вигук afex::mixed()
), але дозвольте додати ще кілька загальних та конкретних думок з цього приводу.
Зосередьтеся на фіксованих проти випадкових ефектів та способах повідомляти про результати
Для типу експериментального дослідження, який представлений у прикладі набору даних Джонатана Барона, ви використовуєте важливе питання, як правило, чи має маніпульований фактор загальний ефект чи ні. Наприклад, чи знаходимо ми загальний головний ефект чи взаємодію Task
? Важливим моментом є те, що в цих наборах даних зазвичай всі фактори знаходяться під повним експериментальним контролем і призначаються випадковим чином. Отже, у центрі уваги, як правило, приділяється фіксований вплив.
На противагу цьому, компоненти випадкових ефектів можуть розглядатися як параметри «неприємності», які фіксують систематичну дисперсію (тобто, міжособистісні відмінності в розмірі ефекту), які не обов'язково важливі для головного питання. З цієї точки зору пропонується використовувати структуру максимальних випадкових ефектів, як це пропонують Барр та ін. випливає дещо природно. Неважко уявити, що експериментальна маніпуляція не впливає на всіх людей точно так само, і ми хочемо це контролювати. З іншого боку, кількість факторів або рівнів, як правило, не надто велика, тому небезпека переобладнання здається порівняно невеликою.
Отже, я б наслідував пропозицію Barr et al. і вказати структуру максимальних випадкових ефектів і повідомити про тести фіксованих ефектів як мої основні результати. Для тестування фіксованих ефектів я б також запропонував використовувати, afex::mixed()
оскільки він повідомляє про тестування ефектів чи факторів (замість тестування параметрів) та обчислює ці тести дещо розумним чином (наприклад, використовує однакову структуру випадкових ефектів для всіх моделей, у яких один ефект видаляється, використовує контрасти суми до нуля, пропонує різні методи обчислення р- значень, ...).
Як щодо даних прикладу
Проблема з наведеними прикладом даних полягає в тому, що для цього набору даних максимальна структура випадкових ефектів призводить до перенасиченої моделі, оскільки на комірку конструкції існує лише одна точка даних:
> with(df, table(Valence, Subject, Task))
, , Task = Cued
Subject
Valence Faye Jason Jim Ron Victor
Neg 1 1 1 1 1
Neu 1 1 1 1 1
Pos 1 1 1 1 1
, , Task = Free
Subject
Valence Faye Jason Jim Ron Victor
Neg 1 1 1 1 1
Neu 1 1 1 1 1
Pos 1 1 1 1 1
Отже, lmer
дроселі в структурі максимальних випадкових ефектів:
> lmer(Recall~Task*Valence + (Valence*Task|Subject), df)
Error: number of observations (=30) <= number of random effects (=30) for term
(Valence * Task | Subject); the random-effects parameters and the residual variance
(or scale parameter) are probably unidentifiable
На жаль, досі не існує узгодженого способу вирішення цієї проблеми. Але дозвольте намалювати та обговорити деякі:
Першим рішенням може бути усунення найвищого випадкового нахилу та перевірка ефектів для цієї моделі:
require(afex)
mixed(Recall~Task*Valence + (Valence+Task|Subject), df)
Effect F ndf ddf F.scaling p.value
1 Task 6.56 1 4.00 1.00 .06
2 Valence 0.80 2 3.00 0.75 .53
3 Task:Valence 0.42 2 8.00 1.00 .67
Однак це рішення є трохи спеціальним та не надто мотивованим.
Оновити травень 2017 року. Це такий підхід, який я зараз схвалюю. Дивіться цю публікацію в блозі та проект глави, яку я співавторую , розділ "Структури випадкових ефектів для традиційних дизайнів ANOVA".
Альтернативним рішенням (і таким, яке можна вважати висунутим дискусією Барра та ін.), Може бути завжди усунення випадкових нахилів для найменшого ефекту. У цьому є дві проблеми: (1) Яку структуру випадкових ефектів ми використовуємо, щоб дізнатися, що таке найменший ефект, і (2) R неохоче видаляє ефект нижчого порядку, такий як основний ефект, якщо ефекти вищого порядку, такі як взаємодія цього ефекту присутня (див. тут ). Як наслідок, потрібно буде вручну встановити цю структуру випадкових ефектів і передати так побудовану матрицю моделі на виклик lmer.
Третім рішенням може бути використання альтернативної параметризації частини випадкових ефектів, а саме тієї, що відповідає моделі RM-ANOVA для цих даних. На жаль (?) lmer
Не дозволяє "негативні відхилення", тому ця параметризація не відповідає точно RM-ANOVA для всіх наборів даних , дивіться обговорення тут і в інших місцях (наприклад, тут і тут ). "Lmer-ANOVA" для цих даних буде:
> mixed(Recall~Task*Valence + (1|Subject) + (1|Task:Subject) + (1|Valence:Subject), df)
Effect F ndf ddf F.scaling p.value
1 Task 7.35 1 4.00 1.00 .05
2 Valence 1.46 2 8.00 1.00 .29
3 Task:Valence 0.29 2 8.00 1.00 .76
Враховуючи всі ці проблеми, я просто не користувався б lmer
для встановлення наборів даних, для яких є лише одна точка даних на комірку конструкції, якщо немає більш узгодженого рішення для задачі структури максимальних випадкових ефектів.
Натомість я б також міг ще використовувати класичну ANOVA. Використання однієї з обгортки для car::Anova()
в afex
результатах буде:
> aov4(Recall~Task*Valence + (Valence*Task|Subject), df)
Effect df MSE F ges p
1 Valence 1.44, 5.75 4.67 1.46 .02 .29
2 Task 1, 4 4.08 7.35 + .07 .05
3 Valence:Task 1.63, 6.52 2.96 0.29 .003 .71
Зауважимо, що afex
тепер також можна повернути модель, з aov
якою можна передаватись lsmeans
для спеціальних тестів (але для тестування ефектів ті, про які повідомляється, car::Anova
все-таки більш розумні):
> require(lsmeans)
> m <- aov4(Recall~Task*Valence + (Valence*Task|Subject), df, return = "aov")
> lsmeans(m, ~Task+Valence)
Task Valence lsmean SE df lower.CL upper.CL
Cued Neg 11.8 1.852026 5.52 7.17157 16.42843
Free Neg 10.2 1.852026 5.52 5.57157 14.82843
Cued Neu 13.0 1.852026 5.52 8.37157 17.62843
Free Neu 11.2 1.852026 5.52 6.57157 15.82843
Cued Pos 13.6 1.852026 5.52 8.97157 18.22843
Free Pos 11.0 1.852026 5.52 6.37157 15.62843
Confidence level used: 0.95