在 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
中编写相同的模型?特别是,我不知道如何包含"observed"术语?
如果我只是写
lmer(value ~ treatment * gender + (phase*hour|id), data = obk.long,
observed = "gender")
我收到一个错误,告知被观察不是一个有效的选项 .
此外,如果我只是删除观察到的选项 lmer
产生错误:
错误:观察次数(= 240)<=期限的随机效应数(= 240)(阶段*小时| id);随机效应参数和残差方差(或尺度参数)可能无法识别 .
在lmer语法中,我指定“between”或“within”变量?据我所知,你只需在左侧写入因变量,在右侧写入所有其他变量,并将错误项写为(1 | id) .
包“car”使用idata作为主题内变量 .
2 回答
我可能不太了解经典的ANOVA理论来完全回答这个问题,但我会采取一个裂缝 . 首先,有几点:
observed
参数仅与效果大小的计算相关 ....所以我认为你可以放心 .
......但这可能不是正确的前进方向 .
我 think 但不确定这是正确的方法:
这指定
phase
和hour
的交互在id
内变化 . 残差方差和(id内的小时)方差混淆(这就是为什么我们需要覆盖lmerControl()
规范),所以不要相信那些特定的方差估计 . 但是,治疗和性别的主要影响应该处理相同 . 如果加载lmerTest
而不是lmer
并运行summary(m1)
或anova(m1)
,它会为afex
计算的固定(性别和治疗)效果提供相同的自由度(10) .lme
给出了可比较的答案,但需要预先构建逐个小时的交互:我不知道如何重建
afex
的随机效应测试 .正如Ben Bolker正确地说的那样,只需离开
observed
即可 .此外,我不建议做你想做的事 . 在每个参与者的每个设计单元格内使用混合模型进行数据集而不进行复制有点值得怀疑,因为如何指定随机效果结构并不是很清楚 . 重要的是,Barr等人 . 正如你所意识到的那样,"keep it maximal"的格言不起作用 . 问题是模型过度参数化(因此来自
lmer
的错误) .我推荐使用ANOVA . 关于这个问题的更多讨论可以在Ben和我discussed this more thoroughly的交叉验证线程中找到 .