Повторные измерения ANOVA и связь с моделями со смешанным эффектом в R - PullRequest
0 голосов
/ 13 июня 2018

У меня проблема при выполнении двусторонней операции rm ANOVA в R для следующих данных (ссылка: https://drive.google.com/open?id=1nIlFfijUm4Ib6TJoHUUNeEJnZnnNzO29):

subjectnbr - это идентификатор субъекта, а blockType и linesTTL - независимыепеременные. RT2 является зависимой переменной

Сначала я выполнил команду rm ANOVA с помощью ezANOVA со следующим кодом:

ANOVA_RTS <- ezANOVA(
    data=castRTs
    , dv=RT2
    , wid=subjectnbr
    , within = .(blockType,linesTTL)
    , type = 2
    , detailed = TRUE
    , return_aov = FALSE
)
ANOVA_RTS

Результат верный (я дважды проверил, используя статистику).

Однако, когда я выполняю команду rm ANOVA с использованием функции lme, я не получаю тот же ответ и не понимаю, почему.

Вот мой код:

lmeRTs <- lme(
      RT2 ~ blockType*linesTTL, 
      random = ~1|subjectnbr/blockType/linesTTL, 
      data=castRTs)

anova(lmeRTs)  

Вот выходы как ezANOVA, так и lme .

Надеюсь, я был достаточно ясен и дал вам всю необходимую информацию.

Iс нетерпением жду вашей помощи, поскольку я пытаюсь понять ее как минимум в течение 4 часов!

Заранее спасибо.

1 Ответ

0 голосов
/ 14 июня 2018

Вот пошаговый пример того, как воспроизвести ezANOVA результаты с nlme::lme.

Данные

Мы читаем в данных и гарантируем, что все категориальные переменныеявляются factor с.

# Read in data
library(tidyverse);
df <- read.csv("castRTs.csv");
df <- df %>%
    mutate(
        blockType = factor(blockType),
        linesTTL = factor(linesTTL));

Результаты ezANOVA

В качестве проверки мы воспроизводим ez::ezANOVA результаты.

## ANOVA using ez::ezANOVA
library(ez);
model1 <- ezANOVA(
    data = df,
    dv = RT2,
    wid = subjectnbr,
    within = .(blockType, linesTTL),
    type = 2,
    detailed = TRUE,
    return_aov = FALSE);
model1;
#        $ANOVA
#              Effect DFn DFd          SSn       SSd           F            p
#1        (Intercept)   1  13 2047405.6654 34886.767 762.9332235 6.260010e-13
#2          blockType   1  13     236.5412  5011.442   0.6136028 4.474711e-01
#3           linesTTL   1  13    6584.7222  7294.620  11.7348665 4.514589e-03
#4 blockType:linesTTL   1  13    1019.1854  2521.860   5.2538251 3.922784e-02
#  p<.05         ges
#1     * 0.976293831
#2       0.004735442
#3     * 0.116958989
#4     * 0.020088855

Результаты nlme::lme

Теперь мы запускаем nlme::lme

## ANOVA using nlme::lme
library(nlme);
model2 <- anova(lme(
    RT2 ~ blockType * linesTTL,
    random = list(subjectnbr = pdBlocked(list(~1, pdIdent(~blockType - 1), pdIdent(~linesTTL - 1)))),
    data = df))
model2;
#                   numDF denDF  F-value p-value
#(Intercept)            1    39 762.9332  <.0001
#blockType              1    39   0.6136  0.4382
#linesTTL               1    39  11.7349  0.0015
#blockType:linesTTL     1    39   5.2538  0.0274

Результаты / заключение

Мы видим, что результаты F-теста обоих методов идентичны.Несколько сложная структура определения эффекта random в lme проистекает из того факта, что у вас есть два скрещенных случайных эффекта.Здесь «скрещенный» означает, что для каждой комбинации blockType и linesTTL существует наблюдение для каждого subjectnbr.

Некоторые дополнительные (необязательные) сведения

Чтобы понять роль pdBlocked и pdIdent, нам нужно взглянуть на соответствующую двухуровневую модель смешанных эффектов

enter image description here

Переменные предиктора enter image description here - это ваши категориальные переменные blockType и linesTTL, которые обычно кодируются с использованием фиктивных переменных.

Матрица дисперсии-ковариации для случайных эффектов enter image description here может принимать различные формы в зависимости от базовой корреляционной структуры ваших коэффициентов случайных эффектов.Чтобы соответствовать предположениям о двухуровневой повторяющейся мере ANOVA, мы должны указать блочно-диагональную дисперсионно-ковариационную матрицу pdBlocked, где мы создадим диагональные блоки для смещения ~1 и для категориальных переменных-предикторов blockType pdIdent(~blockType - 1) и linesTTL pdIdent(~linesTTL - 1) соответственно.Обратите внимание, что нам нужно вычесть смещение из двух последних блоков (поскольку мы уже учли смещение).

Некоторые релевантные / интересные ресурсы

Пинейро и Бейтс, модели смешанных эффектов в S и S-PLUS, Springer (2000)

Потвин и Шуц, Статистическая мощность для двухфакторных повторных измерений ANOVA, Методы исследования поведения, Instruments & Computers, 32, 347-356 (2000)

Деминг Ми, Как понимать и применять модели со смешанным эффектом, Департамент биостатистики, Университет Вандербильта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...