Я хотел бы использовать 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)
подтверждает, что термин взаимодействия находится в модели.Ответы:
По умолчанию
lmer
обрабатывает опорный уровень категориального предиктора как базовый уровень и оценивает параметры для других уровней. Таким образом , вы получаете некоторые попарные сравнения в выходе по умолчанию , и вы можете получить с помощью других ,relevel
чтобы определить новый опорный уровень и вновь подгонку модели. Преимущество этого состоит в том, что вы можете использовать сравнение моделей или MCMC для получения значений p, но не исправляет множественные сравнения (хотя впоследствии вы можете применить свою собственную коррекцию).Чтобы использовать
multcomp
, вам нужно определить контрастную матрицу. Каждая строка в контрастной матрице представляет веса для эффектов, которые вы получаете при выводе модели по умолчанию, начиная с Intercept. Так что, если вы хотите эффект, который уже включен в базовый вывод, вы просто помещаете «1» в позицию, соответствующую этому эффекту. Поскольку оценки параметров относятся к общему эталонному уровню, вы можете получить сравнение между любыми двумя другими уровнями, установив вес одного на «-1», а другого - «1». Вот как это будет работать дляTime:Diet
условий вChickWeight
примере:Предостережение: этот подход использует нормальную аппроксимацию для получения значений p, которая является несколько антиконсервативной, а затем применяет некоторую коррекцию для множественных сравнений. В результате этот метод дает вам простой доступ к столько парных оценок параметров и стандартных ошибок, сколько вы хотите, но p-значения могут или не могут быть тем, что вы хотите.
(Спасибо Скотту Джексону из r-ling-lang-L за помощь в этом)
источник