Чи правильні рівні свободи в lmerTest :: anova? Вони дуже відрізняються від RM-ANOVA


10

Я аналізую результати експерименту часу реакції в Р.

Я провів ANOVA (повторний фактор з 2 рівнями та 1 між суб'єктним фактором з 2 рівнями). Я провів подібну лінійну змішану модель і хотів підвести підсумки lmer у вигляді таблиці ANOVA, використовуючи lmerTest::anova.

Не зрозумійте мене неправильно: я не очікував однакових результатів, проте не впевнений у ступенях свободи lmerTest::anovaрезультатів. Мені здається, це швидше відображає ANOVA без агрегації на рівні предмета.

Мені відомо про той факт, що обчислення ступеня свободи в моделях зі змішаним ефектом є складним, але lmerTest::anovaзгадується як одне можливе рішення в оновленій ?pvaluesтемі ( lme4пакеті).

Чи правильний цей розрахунок? Чи lmerTest::anovaправильно відображають результати вказаної моделі?

Оновлення: я збільшив індивідуальні відмінності. Ступені свободи в lmerTest::anovaбільшою мірою відрізняються від простої анової, але я все ще не впевнений, чому вони настільки великі для внутрішньо-предметного фактора / взаємодії.

# mini example with ANT dataset from ez package
library(ez); library(lme4); library(lmerTest)

# repeated measures ANOVA with ez package
data(ANT)
ANT.2 <- subset(ANT, !error)
# update: make individual differences larger
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]

anova.ez <- ezANOVA(data = ANT.2, dv = .(rt), wid = .(subnum), 
  within = .(direction), between = .(group))
anova.ez

# similarly with lmer and lmerTest::anova
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
lmerTest::anova(model)

# simple ANOVA on all available data
m <- lm(rt ~ group * direction, data = ANT.2)
anova(m)

Результати наведеного вище коду [ оновлено ]:

anova.ez

$ АНОВА

           Effect DFn DFd         F          p p<.05          ges
2           group   1  18 2.6854464 0.11862957       0.1294475137
3       direction   1  18 0.9160571 0.35119193       0.0001690471
4 group:direction   1  18 4.9169156 0.03970473     * 0.0009066868

lmerTest :: anova (модель)

Analysis of Variance Table of type 3  with  Satterthwaite 
approximation for degrees of freedom
                Df Sum Sq Mean Sq F value Denom Pr(>F)
group            1  13293   13293  2.6830    18 0.1188
direction        1   1946    1946  0.3935  5169 0.5305
group:direction  1  11563   11563  2.3321  5169 0.1268

анова (м)

Analysis of Variance Table

Response: rt
                  Df   Sum Sq Mean Sq  F value Pr(>F)    
group              1  1791568 1791568 242.3094 <2e-16 ***
direction          1      728     728   0.0985 0.7537    
group:direction    1    12024   12024   1.6262 0.2023    
Residuals       5187 38351225    7394                    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Відповіді:


13

Я думаю, що lmerTestце правильно і ezanovaнеправильно в даному випадку.

  • результати lmerTestзгодні з моєю інтуїцією / розумінням
  • два різні обчислення в lmerTest(Саттертвейт та Кенвард-Роджер) погоджуються
  • вони також погоджуються nlme::lme
  • коли я запускаю його, ezanovaвидає попередження, яке я не зовсім розумію, але якого не слід ігнорувати ...

Приклад повторного запуску:

library(ez); library(lmerTest); library(nlme)
data(ANT)
ANT.2 <- subset(ANT, !error)
set.seed(101)  ## for reproducibility
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]

Зробіть експериментальну конструкцію

with(ANT.2,table(subnum,group,direction))

Таким чином, схоже, що люди ( subnum) розміщуються або в контрольній, або в лікувальній групах, і кожна перевіряється в обох напрямках - тобто напрямок можна перевірити всередині людей (знаменник df великий), але група та група: напрям можна перевірити лише серед особи

(anova.ez <- ezANOVA(data = ANT.2, dv = .(rt), wid = .(subnum), 
    within = .(direction), between = .(group)))
## $ANOVA
##            Effect DFn DFd         F          p p<.05          ges
## 2           group   1  18 2.4290721 0.13651174       0.1183150147
## 3       direction   1  18 0.9160571 0.35119193       0.0002852171
## 4 group:direction   1  18 4.9169156 0.03970473     * 0.0015289914

Ось, я знаходжу, що Warning: collapsing data to cell means. *IF* the requested effects are a subset of the full design, you must use the "within_full" argument, else results may be inaccurate. знаменник DF виглядає трохи прикольно (все дорівнює 18): я думаю, що вони повинні бути більшими для напрямку та групи: напрямок, який можна перевірити самостійно (але був би меншим, якщо ви додали (direction|subnum)до моделі)?

# similarly with lmer and lmerTest::anova
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
lmerTest::anova(model)
##                 Df  Sum Sq Mean Sq F value Denom Pr(>F)
## group            1 12065.7 12065.7  2.4310    18 0.1364
## direction        1  1952.2  1952.2  0.3948  5169 0.5298
## group:direction  1 11552.2 11552.2  2.3299  5169 0.1270

Dfколонка тут відноситься до чисельник ЦФ, Denom(другий до останнього) дає оціночну знаменник ФР; вони згодні з класичною інтуїцією. Що ще важливіше, ми також отримуємо різні відповіді на значення F ...

Ми також можемо подвоїти перевірку за допомогою Кенворда-Роджера ( дуже повільно, оскільки це включає кілька разів перевстановлення моделі)

lmerTest::anova(model,ddf="Kenward-Roger")

Результати однакові.

У цьому прикладі lmenlmeпакета) насправді ідеально гарна робота, відгадуючи відповідний знаменник df (значення F і p дуже незначні):

model3 <- lme(rt ~ group * direction, random=~1|subnum, data = ANT.2)
anova(model3)[-1,]
##                 numDF denDF   F-value p-value
## group               1    18 2.4334314  0.1362
## direction           1  5169 0.3937316  0.5304
## group:direction     1  5169 2.3298847  0.1270

Якщо мені підходить взаємодія між directionі subnumdf для, directionі group:directionвони набагато менші (я б подумав, що їм буде 18, але, можливо, я щось не так):

model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)
lmerTest::anova(model2)
##                 Df  Sum Sq Mean Sq F value   Denom Pr(>F)
## group            1 20334.7 20334.7  2.4302  17.995 0.1364
## direction        1  1804.3  1804.3  0.3649 124.784 0.5469
## group:direction  1 10616.6 10616.6  2.1418 124.784 0.1459

Дякую @Ben Bolker за вашу відповідь. Я обдумаю ваші коментарі та зроблю ще кілька експериментів. Я розумію ezAnovaпопередження, оскільки не слід запускати 2x2 anova, якщо насправді ваші дані є дизайном 2x2x2.
Іржі Лукавський

1
Можливо, попередження, яке випливає, ezможе бути переказане; він насправді має дві важливі частини: (1) збирання даних та (2) інформацію про часткові конструкції. №1 найбільше стосується невідповідності, оскільки це пояснює, що для того, щоб зробити традиційну не-змішану дію, слід об'єднати дані в одне спостереження на осередок конструкції. У цьому випадку ми хочемо одного спостереження на кожний предмет на рівні змінної "напрям" (при збереженні групових міток для предметів). ezANOVA обчислює це автоматично.
Майк Лоуренс

+1, але я не впевнений, що Езанова помилилася. Я побіг, summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))і це дає 16 (?) Dfs для groupі 18 для directionі group:direction. Те, що є ~ 125 спостережень на групу / комбінацію напрямків, в значній мірі не має значення для RM-ANOVA, див., Наприклад, моє власне запитання stats.stackexchange.com/questions/286280 : напрямок перевіряється, так би мовити, на предмет- напрямок взаємодії.
амеба

Бен, продовжуючи мій попередній коментар: чи це насправді те, що ти мав на увазі з "Я б подумав, що їм буде 18, але, можливо, я щось не так"? Якщо так, то ми згідні. Але знову ж таки, 18 погоджується з RM-ANOVA і не погоджується з lmerTestцією оцінкою ~ 125 dfs.
амеба

1
Оновлення до вищесказаного: lmerTest::anova(model2, ddf="Kenward-Roger")повертає 18 000 df для groupта 17.987df для двох інших факторів, що чудово узгоджується з RM-ANOVA (згідно з ezAnova). Я можу зробити висновок, що наближення Satterthwaite model2чомусь не вдається .
амеба

10

Я, як правило, згоден з аналізом Бена, але дозвольте додати пару зауважень та трохи інтуїції.

По-перше, загальні результати:

  1. Результати lmerTest за методом Satterthwaite є правильними
  2. Метод Кенворда-Роджера також є правильним і погоджується з Satterthwaite

Бен окреслює дизайн, в якому subnumвкладений groupчас direction і group:directionперекреслений subnum. Це означає, що термін природної помилки (тобто так званий «прошарок помилки, що охоплює») для groupє, subnumтоді як прошарок помилки, що вкладається, для інших термінів (у тому числі subnum) є залишковими.

Ця структура може бути представлена ​​на так званій діаграмі фактор-структура:

names <- c(expression("[I]"[5169]^{5191}),
           expression("[subnum]"[18]^{20}), expression(grp:dir[1]^{4}),
           expression(dir[1]^{2}), expression(grp[1]^{2}), expression(0[1]^{1}))
x <- c(2, 4, 4, 6, 6, 8)
y <- c(5, 7, 5, 3, 7, 5)
plot(NA, NA, xlim=c(2, 8), ylim=c(2, 8), type="n", axes=F, xlab="", ylab="")
text(x, y, names) # Add text according to ’names’ vector
# Define coordinates for start (x0, y0) and end (x1, y1) of arrows:
x0 <- c(1.8, 1.8, 4.2, 4.2, 4.2, 6, 6) + .5
y0 <- c(5, 5, 7, 5, 5, 3, 7)
x1 <- c(2.7, 2.7, 5, 5, 5, 7.2, 7.2) + .5
y1 <- c(5, 7, 7, 3, 7, 5, 5)
arrows(x0, y0, x1, y1, length=0.1)

Діаграма структури факторів

Тут випадкові терміни укладені в дужки, 0представляє загальну середню величину (або перехоплення), [I]представляє термін помилки, номери супер-скрипту - це кількість рівнів, а числа підкриптів - кількість ступенів свободи, припускаючи збалансовану конструкцію. Діаграма вказує, що термін природної помилки (що включає прошарок помилок) для groupє subnumі що чисельник df для subnum, який дорівнює знаменнику df group, становить 18: 20 мінус 1 df для groupта 1 df для загального середнього значення. Більш вичерпне ознайомлення з діаграмами структурних факторів є у розділі 2 тут: https://02429.compute.dtu.dk/eBook .

Якби дані були точно врівноважені, ми могли б побудувати F-тести з розкладання SSQ, як це передбачено anova.lm. Оскільки набір даних дуже тісно збалансований, ми можемо отримати приблизні F-тести наступним чином:

ANT.2 <- subset(ANT, !error)
set.seed(101)
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]
fm <- lm(rt ~ group * direction + subnum, data=ANT.2)
(an <- anova(fm))
Analysis of Variance Table

Response: rt
                  Df   Sum Sq Mean Sq  F value Pr(>F)    
group              1   994365  994365 200.5461 <2e-16 ***
direction          1     1568    1568   0.3163 0.5739    
subnum            18  7576606  420923  84.8927 <2e-16 ***
group:direction    1    11561   11561   2.3316 0.1268    
Residuals       5169 25629383    4958                    
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Тут усі значення F і p обчислюються, припускаючи, що всі терміни мають залишки як прошарку помилок, що охоплює, і це справедливо для всіх, крім 'групи'. Замість цього "збалансований-правильний" F -тест для групи:

F_group <- an["group", "Mean Sq"] / an["subnum", "Mean Sq"]
c(Fvalue=F_group, pvalue=pf(F_group, 1, 18, lower.tail = FALSE))
   Fvalue    pvalue 
2.3623466 0.1416875 

де ми використовуємо subnumMS замість ResidualsMS у знаменнику F- значення.

Зауважте, що ці значення досить добре відповідають результатам Satterthwaite:

model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
anova(model, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group           12065.3 12065.3     1    18  2.4334 0.1362
direction        1951.8  1951.8     1  5169  0.3936 0.5304
group:direction 11552.2 11552.2     1  5169  2.3299 0.1270

Залишилися відмінності пояснюються тим, що дані не є точно збалансованими.

ОП порівнюється anova.lmз anova.lmerModLmerTest, що нормально, але для порівняння на зразок нам доводиться використовувати ті ж контрасти. В цьому випадку є різниця між anova.lmі anova.lmerModLmerTestтак як вони виробляють типу I і III тестів за замовчуванням , відповідно, і для цього набору даних є (невелика) різниця між Type I і III контрастами:

show_tests(anova(model, type=1))$group
               (Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment           0              1    0.005202759                     0.5013477

show_tests(anova(model, type=3))$group # type=3 is default
               (Intercept) groupTreatment directionright groupTreatment:directionright
groupTreatment           0              1              0                           0.5

Якби набір даних був повністю збалансований, контрасти типу I були б такими ж, як і контрасти типу III (на які не впливає спостережувана кількість зразків).

Останнє зауваження полягає в тому, що "повільність" методу Кенворда-Роджера пов'язана не з переозброєнням моделі, а тому, що вона включає обчислення з граничною дисперсійно-коваріантною матрицею спостережень / залишків (5191x5191 в даному випадку), яка не є випадок методу Саттерватвайта.

Щодо моделі2

Що стосується моделі2, ситуація стає складнішою, і я думаю, що простіше розпочати дискусію з іншої моделі, де я включив «класичну» взаємодію між subnumта direction:

model3 <- lmer(rt ~ group * direction + (1 | subnum) +
                 (1 | subnum:direction), data = ANT.2)
VarCorr(model3)
 Groups           Name        Std.Dev.  
 subnum:direction (Intercept) 1.7008e-06
 subnum           (Intercept) 4.0100e+01
 Residual                     7.0415e+01

Оскільки дисперсія, пов'язана з взаємодією, по суті дорівнює нулю (за наявності subnumвипадкового основного ефекту), термін взаємодії не впливає на обчислення знаменників ступенів свободи, F- значень і p -значень:

anova(model3, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
group           12065.3 12065.3     1    18  2.4334 0.1362
direction        1951.8  1951.8     1  5169  0.3936 0.5304
group:direction 11552.2 11552.2     1  5169  2.3299 0.1270

Однак чи subnum:directionє прошарок помилки, що вкладається, subnumтому, якщо ми видалимо subnumвсі пов'язані з цим SSQ, потрапляє назадsubnum:direction

model4 <- lmer(rt ~ group * direction +
                 (1 | subnum:direction), data = ANT.2)

Тепер термін природної помилки для group, directionі group:directionє subnum:directionі з nlevels(with(ANT.2, subnum:direction))= 40 і чотирма параметрами, ступінь свободи в знаменнику для цих термінів повинен бути приблизно 36:

anova(model4, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF  DenDF F value  Pr(>F)  
group           24004.5 24004.5     1 35.994  4.8325 0.03444 *
direction          50.6    50.6     1 35.994  0.0102 0.92020  
group:direction   273.4   273.4     1 35.994  0.0551 0.81583  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Ці F - тести також можуть бути апроксимувати з «збалансований-правильним» F - тестами:

an4 <- anova(lm(rt ~ group*direction + subnum:direction, data=ANT.2))
an4[1:3, "F value"] <- an4[1:3, "Mean Sq"] / an4[4, "Mean Sq"]
an4[1:3, "Pr(>F)"] <- pf(an4[1:3, "F value"], 1, 36, lower.tail = FALSE)
an4
Analysis of Variance Table

Response: rt
                   Df   Sum Sq Mean Sq F value Pr(>F)    
group               1   994365  994365  4.6976 0.0369 *  
direction           1     1568    1568  0.0074 0.9319    
group:direction     1    10795   10795  0.0510 0.8226    
direction:subnum   36  7620271  211674 42.6137 <2e-16 ***
Residuals        5151 25586484    4967                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

тепер переходимо до моделі2:

model2 <- lmer(rt ~ group * direction + (direction | subnum), data = ANT.2)

Ця модель описує досить складну структуру коваріації випадкових ефектів з матрицею варіації-коваріації 2х2. Параметризацією за замовчуванням нелегко впоратися, і нам краще зробити повторну параметризацію моделі:

model2 <- lmer(rt ~ group * direction + (0 + direction | subnum), data = ANT.2)

Якщо ми порівняємо model2з model4, у них однаково багато випадкових ефектів; 2 для кожного subnum, тобто 2 * 20 = 40 загалом. Хоча model4визначає єдиний параметр дисперсії для всіх 40 випадкових ефектів, model2передбачає, що кожне subnumпара випадкових ефектів має двоперемінний нормальний розподіл з матрицею дисперсії-коваріації 2х2, параметри якого задаються

VarCorr(model2)
 Groups   Name           Std.Dev. Corr 
 subnum   directionleft  38.880        
          directionright 41.324   1.000
 Residual                70.405        

Це вказує на перевищення розміру, але збережемо це на інший день. Важливим моментом тут є те , що model4це особливий випадок, model2 і що modelце також особливий випадок model2. Вільно (та інтуїтивно) мовлення (direction | subnum)містить або фіксує варіації, пов’язані з головним ефектом subnum , а також взаємодією direction:subnum. З точки зору випадкових ефектів ми можемо вважати ці два ефекти або структури як фіксацію змін між рядками та рядками за стовпцями відповідно:

head(ranef(model2)$subnum)
  directionleft directionright
1    -25.453576     -27.053697
2     16.446105      17.479977
3    -47.828568     -50.835277
4     -1.980433      -2.104932
5      5.647213       6.002221
6     41.493591      44.102056

У цьому випадку ці випадкові оцінки оцінок, а також оцінки параметрів дисперсії вказують на те, що ми дійсно маємо лише випадковий головний ефект subnum(варіація між рядками). До чого все це призводить - це те, що в знаменнику Satterthwaite знаходять ступінь свободи

anova(model2, type=1)
Type I Analysis of Variance Table with Satterthwaite's method
                 Sum Sq Mean Sq NumDF   DenDF F value Pr(>F)
group           12059.8 12059.8     1  17.998  2.4329 0.1362
direction        1803.6  1803.6     1 125.135  0.3638 0.5475
group:direction 10616.6 10616.6     1 125.136  2.1418 0.1458

є компромісом між цими основними ефектами та структурами взаємодії: Група DenDF залишається в 18 (вкладена в subnumпроект), але directionі group:directionDenDF - це компроміси між 36 ( model4) і 5169 ( model).

Я не думаю, що тут все вказує на те, що наближення Satterthwaite (або його реалізація в lmerTest ) є несправним.

Еквівалентна таблиця методом Кенворда-Роджера дає

anova(model2, type=1, ddf="Ken")
Type I Analysis of Variance Table with Kenward-Roger's method
                 Sum Sq Mean Sq NumDF  DenDF F value Pr(>F)
group           12059.8 12059.8     1 18.000  2.4329 0.1362
direction        1803.2  1803.2     1 17.987  0.3638 0.5539
group:direction 10614.7 10614.7     1 17.987  2.1414 0.1606

Не дивно, що KR і Satterthwaite можуть відрізнятися, але для всіх практичних цілей різниця в p -значеннях є хвилиною. Мій аналіз вище вказує на те, що DenDFдля directionі group:directionне повинно бути менше ~ 36 і, ймовірно, більше, ніж той, що враховує, що в основному ми маємо лише випадковий головний ефект directionприсутнього, тому, якщо що-небудь, я думаю, це свідчить про те, що метод KR отримує DenDFзанадто низький рівень в цьому випадку. Але майте на увазі, що дані насправді не підтримують (group | direction)структуру, тому порівняння трохи штучне - було б цікавіше, якби модель насправді підтримувалася.


+6, дякую, дуже цікаво! Пару питань. (1) Де я можу прочитати докладніше про "вкладення прошарку помилок"? Я гуглив цей термін, і ця відповідь була єдиним хітом. Загалом, яку літературу ви б рекомендували вивчити з цих питань? (2а) Наскільки я розумію, класичний RM-ANOVA для цієї конструкції відповідає вашому model3. Однак він використовується subnum:directionяк термін помилки для тестування direction. В той час, як тут, ви можете змусити це статися, виключивши (1|subnum)як model4. Чому? (2b) Крім того, RM-ANOVA дає df = 18 для direction, а не 36, коли ви потрапляєте model4. Чому?
амеба

Щодо моїх точок (2a + 2b), див summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2)).
амеба

1
(1) Тема прошарків помилок та які терміни укладені, в яких страти виведені з виразів очікуваного середнього квадрата для даної моделі / конструкції. Це "стандартний" дизайн проекту експериментів (DoE), хоча ці більш технічні теми часто потрапляють у легкі ("застосовані") варіанти таких курсів. Для ознайомлення див., Наприклад, гл. 11 та 12 у розділі users.stat.umn.edu/~gary/book/fcdae.pdf . Я дізнався цю тему з еквівалентного тексту ДК Монтгомері та обширних додаткових матеріалів від (недавно і на жаль) покійного професора Генріка Шпліда.
Руна Н Крістенсен

1
... Для більш ретельного лікування компоненти Variance Components (1992 та 2006) від Searle et al є класикою.
Руна Н Крістенсен

Ага, так, я мав би бачити, що: якщо у нас є модель, в якій і те, subnumі те, subnum:directionі не є нульовим, тоді anova(lm(rt2 ~ group * direction + subnum + subnum:direction, data = ANT.2)) для всіх трьох факторів дається 18 df, і ось що підходить метод KR. Це можна побачити вже з тим, model3коли KR дає дизайн на основі 18 df для всіх термінів, навіть коли дисперсія взаємодії дорівнює нулю, тоді як Satterthwaite розпізнає термін зникаючої дисперсії і відповідно коригує df ....
Rune H Christensen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.