针对两个受试者内因素在R中使用lme / lmer进行重复测量ANOVA


19

我正在尝试lmenlme软件包中复制aov重复测量方差分析的结果。对于单因素重复测量实验和具有一个受试者间因素和一个受试者内因素的两因素实验,我已经做到了,但是对于在两个因素内的两个因素实验,我却遇到了麻烦主题因素。

一个例子如下所示。AB是固定效应因子和subject是随机效应的因素。

set.seed(1)
d <- data.frame(
    Y = rnorm(48),
    subject = factor(rep(1:12, 4)),
    A = factor(rep(1:2, each=24)),
    B = factor(rep(rep(1:2, each=12), 2)))

summary(aov(Y ~ A*B + Error(subject/(A*B)), data=d))  # Standard repeated measures ANOVA

library(nlme)
# Attempts:
anova(lme(Y ~ A*B, data=d, random = ~ 1 | subject))  # not same as above
anova(lme(Y ~ A*B, data=d, random = ~ 1 | subject/(A+B)))  # gives error

我在Pinheiro和Bates的书中看不到对此的解释,但是我可能忽略了它。

Answers:


15

您要拟合的东西aov被称为带状图,lme由于与subject:Asubject:B随机效应相交,因此拟合起来很棘手。

您的第一次尝试等效于aov(Y ~ A*B + Error(subject), data=d),其中不包括所有随机效果;您的第二次尝试是正确的主意,但是使用lme交叉随机效应的语法非常棘手。

使用lmenlme包装,代码会

lme(Y ~ A*B, random=list(subject=pdBlocked(list(~1, pdIdent(~A-1), pdIdent(~B-1)))), data=d)

lmerlme4包中使用,代码将类似于

lmer(Y ~ A*B + (1|subject) + (1|A:subject) + (1|B:subject), data=d)    

来自R-help的这些线程可能会有所帮助(而且要感谢,这就是我从中获取nlme代码的地方)。

http://www.biostat.wustl.edu/archives/html/s-news/2005-01/msg00091.html

http://permalink.gmane.org/gmane.comp.lang.r.lme4.devel/3328

http://www.mail-archive.com/r-help@stat.math.ethz.ch/msg10843.html

最后一个链接指的是Pinheiro / Bates的p.165。这也可能会有所帮助。

编辑:还请注意,在您拥有的数据集中,某些方差成分为负,这与lme配合使用随机效应是不允许的,因此结果有所不同。可以使用8的种子来创建具有所有正方差成分的数据集。有关详细信息,请参见此答案

还要注意,lmefrom nlme不能正确计算分母的自由度,因此F统计量是一致的,但p值不是,并且lmerfrom lme4也不尝试,因为在存在不平衡的交叉随机效应的情况下它非常棘手,并且可能不会甚至是明智的选择。但这不只是我想要进入的。


亚伦,我认为您的lmer代码不正确。OP aov调用只是一种标准的重复测量设计,可以使用lmer作为进行分析lmer(Y~A*B+(1|subject))。(尽管对于更复杂的模型也可以查看此答案,该模型可以估算跨Ss的效果方差和相关性:stats.stackexchange.com/questions/13166/rs-lmer-cheat-sheet/…
Mike Lawrence

4
OP的aov调用具有三个随机效果;用lmer我上面的代码复制它是正确的。您的lmer代码仅具有一种随机作用。哪个正确取决于上下文。
亚伦-恢复莫妮卡

另请注意,您链接到的答案没有交叉随机效应的任何示例。
亚伦-恢复莫妮卡

6

如果这就是您要做的一切,那么您的第一个尝试就是正确的答案。nlme()计算出组件之间和组件内部,您不需要指定它们。

您遇到的问题不是因为您不知道如何指定模型,而是因为重复测量方差分析和混合效应不是一回事。有时ANOVA和混合效果模型的结果会匹配。当您像对ANOVA一样汇总数据并从中进行计算时,尤其如此。但是总的来说,如果做得正确,尽管结论可能相似,但结果几乎永远不会相同。您的示例数据不像真正的重复测量,在S中,您经常会重复每个测量。当您进行ANOVA检验时,通常会汇总这些重复来估算每个受试者的效果。在混合效果建模中,您不会做任何事情。您使用原始数据。当你这样做的时候

[此外,使用lmer()(来自lme4包)而不是lme(),可以为我提供与示例中的效果方差分析完全匹配的SS和MS值,只是F有所不同]


1
我相信,如果一切都平衡了,则使用混合模型(即使用ML或REML进行估算)的结果与使用ANOVA进行的结果(即通过矩进行估算)将几乎相同。这种情况下的问题是使用这两种方法获得相同模型拟合的语法。
亚伦-恢复莫妮卡

我不确定您要完成什么。看来您只是在尝试学习如何复制结果以更好地理解这种关系。nlme无法完成您想做的事情。我只是看着lmer而已,也不可能(尽管至少它报告的MS效果与ANOVA相同)。如果要获得方差分析结果,只需进行方差分析即可。有了正确完成的真实数据,两者几乎永远不会完全相同。
约翰

1
还要注意,第一次尝试是不正确的,因为它不能正确考虑交叉随机效应。
亚伦-恢复莫妮卡

1
约翰,谢谢您的回答。我这样做的原因是,我在该站点上的某个地方读到,通常不再建议使用重复测量ANOVA,而首选混合效果模型。由于某种原因,我给这两种方法以平衡的设计以相同的结果感到印象深刻,我正在尝试确认这一点。
mark999 2011年

亚伦,我将其作为对大致等同的答案。通常,建议将其作为复制重复措施的第一步。没有完美匹配中的“正确”。添加更多随机效果无法解决问题。我注意到,您引用的答案之一会推荐您编写的解决方案。但是,绝对方差分析的结果(模型不同,但方差分析的结果)绝对与我说的正确无异。我怀疑作者只是试图匹配OP的要求,但这不是一个明智的模型。
约翰
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.