P значення для терміну взаємодії в моделях зі змішаними ефектами з використанням lme4


10

Я аналізую деякі поведінкові дані, використовуючи, lme4в Rосновному дотримуючись чудових навчальних посібників Bodo Winter , але я не розумію, чи правильно обробляю взаємодію. Гірше, що ніхто більше не бере участь у цьому дослідженні, не використовує змішаних моделей, тому я трохи похитнувся, коли потрібно переконатися, що все правильно.

Замість того, щоб просто опублікувати крик про допомогу, я подумав, що я повинен докласти максимум зусиль для тлумачення проблеми, а потім прошу ваших колективних виправлень. Декілька інших боків:

  • Під час написання я знайшов це запитання , показавши, що nlmeбільш безпосередньо дають значення p для термінів взаємодії, але я думаю, що це все-таки справедливо запитувати стосовно lme4.
  • Livius'відповідь на це запитання надала посилання на багато додаткових читань, які я намагаюся пройти в найближчі кілька днів, тому я прокоментую будь-який прогрес, який принесе.

У своїх даних я маю залежну змінну dv, conditionманіпуляцію (0 = контроль, 1 = експериментальний стан, який повинен призвести до вищого dv), а також необхідну умову, позначена appropriate: випробування, закодовані 1для цього, повинні показувати ефект, але випробування кодуються 0можуть ні, тому що важливий фактор відсутній.

Я також включив два випадкових перехоплення для subject, і для target, що відображають співвідносні dvзначення в межах кожного предмета та в межах кожної з 14 вирішених задач (кожен учасник вирішив як контрольну, так і експериментальну версію кожної проблеми).

library(lme4)
data = read.csv("data.csv")

null_model        = lmer(dv ~ (1 | subject) + (1 | target), data = data)
mainfx_model      = lmer(dv ~ condition + appropriate + (1 | subject) + (1 | target),
                         data = data)
interaction_model = lmer(dv ~ condition + appropriate + condition*appropriate +
                              (1 | subject) + (1 | target), data = data)
summary(interaction_model)

Вихід:

## Linear mixed model fit by REML ['lmerMod']
## ...excluded for brevity....
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  subject  (Intercept) 0.006594 0.0812  
##  target   (Intercept) 0.000557 0.0236  
##  Residual             0.210172 0.4584  
## Number of obs: 690, groups: subject, 38; target, 14
## 
## Fixed effects:
##                                Estimate Std. Error t value
## (Intercept)                    0.2518     0.0501    5.03
## conditioncontrol               0.0579     0.0588    0.98
## appropriate                   -0.0358     0.0595   -0.60
## conditioncontrol:appropriate  -0.1553     0.0740   -2.10
## 
## Correlation of Fixed Effects:
## ...excluded for brevity.

Потім ANOVA виявляється interaction_modelзначно кращим, ніж mainfx_modelз цього, я роблю висновок, що існує значна взаємодія (p = .035).

anova(mainfx_model, interaction_model)

Вихід:

## ...excluded for brevity....
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## mainfx_model       6 913 940   -450      901                          
## interaction_model  7 910 942   -448      896  4.44      1      0.035 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Звідти я виділяю підмножину даних, щодо яких appropriateвиконується вимога (тобто appropriate = 1), і для неї підходить нульова модель, і модель, що включає conditionв якості ефекту, знову порівняння двох моделей, використовуючи ANOVA, і ось, виявіть, що conditionє вагомим провісником.

good_data = data[data$appropriate == 1, ]
good_null_model   = lmer(dv ~ (1 | subject) + (1 | target), data = good_data)
good_mainfx_model = lmer(dv ~ condition + (1 | subject) + (1 | target), data = good_data)

anova(good_null_model, good_mainfx_model)

Вихід:

## Data: good_data
## models:
## good_null_model: dv ~ (1 | subject) + (1 | target)
## good_mainfx_model: dv ~ condition + (1 | subject) + (1 | target)
##                   Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)  
## good_null_model    4 491 507   -241      483                          
## good_mainfx_model  5 487 507   -238      477  5.55      1      0.018 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Перегляньте це запитання для отримання додаткової інформації про p-значеннях у lme4: stats.stackexchange.com/questions/118416/…
Tim

Використання lmerTest :: anova () надасть вам таблиці anova з р-значеннями для кожного терміна. Це дозволить вам безпосередньо вивчити взаємодію, а не порівнювати загальні моделі. Дивіться цю відповідь на питання @Tim, пов’язане з: stats.stackexchange.com/a/118436/35304
Sawyer

Відповіді:


3

Я не бачу занадто багато, щоб сказати тут. Я думаю, ти зробив хорошу роботу.

Існує кілька способів, якими люди обговорювали тестування ефектів та отримання р-значень для складних моделей змішаних ефектів. Існує хороший поверхневий огляд тут . Найкраще - використовувати обчислювально інтенсивні методи (завантажувальний або байєсівський), але це більш досконало для більшості людей. Другий найкращий (і найкраще зручний) метод - використовувати тест на коефіцієнт ймовірності. Це те, що anova()(технічно ? Anova.merMod () ) робить. Важливо використовувати лише тест на коефіцієнт ймовірності моделей, які відповідають максимальній ймовірності , а не обмежену максимальну ймовірність.(REML). З іншого боку, для вашої остаточної моделі та для інтерпретації ви хочете використовувати REML. Це бентежить багатьох людей. У вашому виведення, ми бачимо , що ви підходите ваші моделі з REML (це тому , що опція встановлена TRUEза замовчуванням в lmer(). Це буде означати , що тест є недійсним, однак, тому що це така поширена помилка, anova.merMod()містить refitаргумент , який по за замовчуванням встановлено значення TRUE, і ви його не змінили. Отже, передбачення розробників пакунків зберегло вас там.

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


0

Я сам початківець і дотримуюся порад Zuur et al .. Я використовую lmeз nlmeпакету замість того, lme4коли мені потрібно додати ієрархічну структуру помилок до інакше лінійної моделі. Моя відповідь може бути відвертою.

Два коментарі:

(1) Я не впевнений, що має сенс тестувати conditionлише підмножину appropriate==1. Якщо ви хочете отримати значення p для основних ефектів, ви можете скористатися Anovaз пакета 'car':

require(car)
Anova(M,type="III")# type III Sum of Squares. M was fitted using method=REML

Якщо ви хочете вирішити взаємодію, ви можете запускати парні порівняння безпосередньо (?) Або робити те, що ви робили, але на обох підмножинах (тобто також із підмножиною де appropriate==0).

(2) Ви можете спочатку вибрати структуру помилок, а не вважати, що (1 | subject) + (1 | target)це найкраща структура помилок. З того, що ви написали, я вважаю, що conditionце тематичний фактор, в той час як фактор appropriateміж суб'єктом або між цільовим фактором. Ви можете додати нахили для факторів, що знаходяться в межах предмета та / або в межах цілі, наприклад: dv ~ condition + appropriate + (1+condition | subject) + (1 | target)додає випадковий нахил для фактору всередині предмета condition. Не потрібні нахили для факторів між предметами / цілями.

Ура


Дякую. Не Anovaвдасться лише зробити вигляд, що кореляції між темою і цілями не існують? Причина, за якою я повторюю аналіз лише з даними, appropriate==1полягає в тому, що ряд використаних матеріалів був показаний проблематичним після тесту, таким чином, "невідповідним". Нарешті, я не використовував випадкові нахили з тієї простої причини, що модель краще підходить без них.
Eoin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.