如何将 Afex 或汽车方差分析模型转换为 lmer?观察变量

How to convert Afex or car ANOVA models to lmer? Observed variables

afex包中我们可以找到这个方差分析的例子:

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 会产生错误:

Error: number of observations (=240) <= number of random effects (=240) for term (phase * hour | id); the random-effects parameters and the residual variance (or scale parameter) are probably unidentifiable.

在 lmer 语法中的什么位置指定 "between" 或 "within" 变量?。据我所知,您只需将因变量写在左侧,将所有其他变量写在右侧,将错误项写为 (1|id).

包 "car" 使用 idata 作为主体内变量。

我可能对经典方差分析理论了解不够,无法完全回答这个问题,但我会尝试一下。首先,有几点:

  • observed 参数似乎只与效应量的计算有关。

observed: ‘character’ vector indicating which of the variables are observed (i.e, measured) as compared to experimentally manipulated. The default effect size reported (generalized eta-squared) requires correct specification of the obsered [sic] (in contrast to manipulated) variables.

...所以我认为您将它排除在外是安全的。

  • 如果你想覆盖你可以使用的错误
  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))

这指定 phasehour 的交互在 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 的随机效应检验。

正如 Ben Bolker 所说的那样,只需将 observed 排除在外即可。

此外,我不建议做你想做的事。在每个参与者的设计的每个单元格内使用没有复制的数据集混合模型有点​​值得怀疑,因为目前还不清楚如何指定随机效应结构。重要的是,Barr 等人。正如您所意识到的,"keep it maximal" 的格言在这里不起作用。问题是模型参数化过度(因此 lmer 出现错误)。

我推荐使用方差分析。关于这个问题的更多讨论可以在 Ben 和我 discussed this more thoroughly.

的交叉验证线程上找到