Как конвертировать информацию 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 3

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. Более подробное обсуждение именно этого вопроса можно найти на перекрестной проверке потока, где Бен и я обсудили это более подробно.