Змішана модель декількох порівнянь для взаємодії між безперервним і категоричним предиктором


11

Мені хотілося б використовувати lme4для зміщення регресії змішаних ефектів і multcompдля обчислення парних порівнянь. У мене складний набір даних з декількома безперервними і категоричними предикторами, але моє запитання можна продемонструвати, використовуючи вбудований ChickWeightнабір даних як приклад:

m <- lmer(weight ~ Time * Diet + (1 | Chick), data=ChickWeight, REML=F)

Timeє безперервним і Dietкатегоричним (4 рівні), і є кілька курчат на дієті. Всі пташенята починалися приблизно з однаковою вагою, але їх дієта (може) впливає на їх швидкість росту, тому Dietперехоплення повинні бути (більш-менш) однаковими, але схили можуть бути різними. Я можу отримати парні порівняння для такого перехоплюючого ефекту Diet:

summary(glht(m, linfct=mcp(Diet = "Tukey")))

і, справді, вони суттєво не відрізняються, але як я можу зробити аналогічний тест на Time:Dietефект? Просто введення терміна взаємодії mcpстворює помилку:

summary(glht(m, linfct=mcp('Time:Diet' = "Tukey")))
Error in summary(glht(m, linfct = mcp(`Time:Diet` = "Tukey"))) : 
  error in evaluating the argument 'object' in selecting a method for function
 'summary': Error in mcp2matrix(model, linfct = linfct) : 
Variable(s) Time:Diet have been specified in linfct but cannot be found in model’! 

Це є Time*Diet, що є лише спрощенням Time + Diet + Time:Diet. Використання anova(m)або summary(m)підтвердження того, що термін взаємодії є в моделі.
Дан М.

Відповіді:


8

За замовчуванням lmerрозглядає еталонний рівень категоричного предиктора як базовий рівень та оцінює параметри для інших рівнів. Таким чином, ви отримуєте кілька парних порівнянь у вихідних даних за замовчуванням, а ви можете отримати інші, використовуючи relevelдля визначення нового еталонного рівня та перевстановлення моделі. Це має перевагу в тому, що ви можете використовувати порівняння моделей або MCMC для отримання p-значень, але це не виправляє для кількох порівнянь (хоча ви можете застосувати власну корекцію згодом).

Для використання multcompпотрібно визначити контрастну матрицю. Кожен рядок в контрастній матриці представляє ваги для ефектів, які ви отримуєте у вихідній моделі за замовчуванням, починаючи з перехоплення. Тож якщо ви хочете ефект, який уже включений у базовий результат, просто поставте "1" у положення, що відповідає цьому ефекту. Оскільки оцінки параметрів відносяться до загального еталонного рівня, ви можете отримати порівняння між будь-якими двома іншими рівнями, встановивши вагу одного на "-1", а іншого "1". Ось як це буде працювати для Time:Dietтермінів у ChickWeightприкладі:

contrast.matrix <- rbind("Time:Diet1 vs. Time:Diet2" =  c(0, 0, 0, 0, 0, 1, 0, 0),
                           "Time:Diet1 vs. Time:Diet3" =  c(0, 0, 0, 0, 0, 0, 1, 0),
                           "Time:Diet1 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, 0, 0, 1),
                           "Time:Diet2 vs. Time:Diet3" =  c(0, 0, 0, 0, 0, -1, 1, 0),
                           "Time:Diet2 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, -1, 0, 1),
                           "Time:Diet3 vs. Time:Diet4" =  c(0, 0, 0, 0, 0, 0, -1, 1))
summary(glht(m, contrast.matrix))

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

(Дякую Скотту Джексону від r-ling-lang-L за допомогу в цьому)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.