如何将 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))
这指定 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
的随机效应检验。
正如 Ben Bolker 所说的那样,只需将 observed
排除在外即可。
此外,我不建议做你想做的事。在每个参与者的设计的每个单元格内使用没有复制的数据集混合模型有点值得怀疑,因为目前还不清楚如何指定随机效应结构。重要的是,Barr 等人。正如您所意识到的,"keep it maximal" 的格言在这里不起作用。问题是模型参数化过度(因此 lmer
出现错误)。
我推荐使用方差分析。关于这个问题的更多讨论可以在 Ben 和我 discussed this more thoroughly.
的交叉验证线程上找到
在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))
这指定 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
的随机效应检验。
正如 Ben Bolker 所说的那样,只需将 observed
排除在外即可。
此外,我不建议做你想做的事。在每个参与者的设计的每个单元格内使用没有复制的数据集混合模型有点值得怀疑,因为目前还不清楚如何指定随机效应结构。重要的是,Barr 等人。正如您所意识到的,"keep it maximal" 的格言在这里不起作用。问题是模型参数化过度(因此 lmer
出现错误)。
我推荐使用方差分析。关于这个问题的更多讨论可以在 Ben 和我 discussed this more thoroughly.
的交叉验证线程上找到