Как конвертировать информацию afex или модели автомобиля дисперсионный анализ для lmer? Наблюдаемые переменные
В пакете afex
мы можем найти такой пример анализа ANOVA:
data(obk.long, package = "afex")
# estimate mixed ANOVA on the full design:
# can be written in any of these ways:
aov_car(value ~ treatment * gender + Error(id/(phase*hour)), data = obk.long,
observed = "gender")
aov_4(value ~ treatment * gender + (phase*hour|id), data = obk.long,
observed = "gender")
aov_ez("id", "value", obk.long, between = c("treatment", "gender"),
within = c("phase", "hour"), observed = "gender")
Мой вопрос в том, как я могу написать ту же модель в lme4
?
В частности, я не знаю, как включить термин" наблюдаемый"?
Если я просто напишу
lmer(value ~ treatment * gender + (phase*hour|id), data = obk.long,
observed = "gender")
Я получаю ошибку, говорящую, что наблюдаемый не является допустимым вариантом.
Кроме того, если я просто удаляю наблюдаемый параметр lmer
, то получается ошибка:
Ошибка: число наблюдений (=240)
Где в синтаксисе lmer указать переменную" между "или" внутри"?. Насколько я знаю, вы просто пишете зависимую переменную на левой стороне и все другие переменные на правой стороне, а термин ошибки как (1|id).
Пакет " car " использует idata для внутрипредметной переменной.
2 ответа:
Я, возможно, не знаю достаточно о классической теории ANOVA, чтобы ответить на этот вопрос полностью, но я возьму трещину. Во-первых, пара пунктов:
- Аргумент
observed
, по-видимому, имеет значение только для вычисления размера эффекта.Наблюдается: вектор "характер", указывающий, какая из переменных является наблюдаемый (то есть измеренный) по сравнению с экспериментально манипулированный. Сообщенный размер эффекта по умолчанию (обобщенный ЕТА-в квадрате) требуется правильное указание "наблюдаемой" [зю] (в отличие от управляемых) переменных.
... так что, я думаю, ты можешь не беспокоиться.
- Если вы хотите переопределить ошибку, вы можете использовать
control=lmerControl(check.nobs.vs.nRE="ignore")
... но это, вероятно, не правильный путь вперед.
Я думаю , но не уверен, что это правильный путь:
Это указывает на то, что взаимодействиеm1 <- lmer(value ~ treatment * gender + (1|id/phase:hour), data = obk.long, control=lmerControl(check.nobs.vs.nRE="ignore", check.nobs.vs.nlev="ignore"), contrasts=list(treatment=contr.sum,gender=contr.sum))
phase
иhour
изменяется в пределахid
. Остаточная дисперсия и (фаза по часам в пределах id) дисперсия смешиваются (именно поэтому нам нужна переопределяющая спецификацияlmerControl()
), поэтому не доверяйте этим конкретным оценкам дисперсии. Тем не менее, основные эффекты лечения и гендер должны быть обработаны точно так же. Если вы загружаетеlmerTest
вместоlmer
и запускаетеsummary(m1)
илиanova(m1)
, это дает вам те же степени свободы (10) для фиксированных (пол и лечение) эффектов, которые вычисляются поafex
.
lme
дает сопоставимые ответы, но необходимо заранее построить взаимодействие по фазам:Я не знаю, как реконструировать тестыlibrary(nlme) obk.long$ph <- with(obk.long,interaction(phase,hour)) m2 <- lme(value ~ treatment * gender, random=~1|id/ph, data = obk.long, contrasts=list(treatment=contr.sum,gender=contr.sum)) anova(m2,type="marginal")
afex
случайных эффектов.
Как правильно говорит Бен Болкер, просто оставьте
Кроме того, я бы не рекомендовал делать то, что вы хотите сделать. Использование смешанной модели для набора данных без репликации в каждой ячейке проекта на одного участника несколько сомнительно, поскольку не совсем ясно, как определить структуру случайных эффектов. Важно отметить, что Барр и др. Максима "держи его максимальным" здесь не работает, как ты понял. Проблема заключается в том, что модель перепараметризована (отсюда и ошибка отobserved
.lmer
).Я рекомендую использовать ANOVA. Более подробное обсуждение именно этого вопроса можно найти на перекрестной проверке потока, где Бен и я обсудили это более подробно.