【问题标题】:Repeated measures ANOVA and link to mixed-effect models in R重复测量方差分析并链接到 R 中的混合效应模型
【发布时间】:2018-06-13 12:04:21
【问题描述】:

在 R 中对以下数据执行双向 rm ANOVA 时遇到问题(链接:https://drive.google.com/open?id=1nIlFfijUm4Ib6TJoHUUNeEJnZnnNzO29):

subjectnbr is the id of the subject and blockType and linesTTL are the independent variables. RT2 is the dependent variable

我首先通过使用 ezANOVA 和以下代码执行 rm ANOVA:

ANOVA_RTS <- ezANOVA(
    data=castRTs
    , dv=RT2
    , wid=subjectnbr
    , within = .(blockType,linesTTL)
    , type = 2
    , detailed = TRUE
    , return_aov = FALSE
)
ANOVA_RTS

结果是正确的(我使用 statistica 进行了仔细检查)。

但是,当我使用 lme 函数执行 rm ANOVA 时,我没有得到相同的答案,我也不知道为什么。

这是我的代码:

lmeRTs <- lme(
      RT2 ~ blockType*linesTTL, 
      random = ~1|subjectnbr/blockType/linesTTL, 
      data=castRTs)

anova(lmeRTs)  

这里是the outputs of both ezANOVA and lme

我希望我已经足够清楚,并已为您提供了所有需要的信息。

我期待您的帮助,因为我正在努力解决至少 4 个小时!

提前致谢。

【问题讨论】:

  • 您对问题的描述几乎是完美的。唯一缺少的是数据。前 15 行不足以重现您的问题。您是否可以尝试设计一个问题的最小实例,并使用您将包含在您的问题中的一个小数据集?它甚至可以帮助您了解问题所在。有关如何创建最小、完整和可验证示例的指南,请参阅 stackoverflow.com/help/mcve。希望这会有所帮助;-)
  • 是的,请包括来自ezANOVA 的示例数据和预期输出。我认为问题在于您在lme 中的随机效应规范,您需要考虑到随机效应blockType:subjectnbrlinesTTL:subjectnbr 是交叉的。在lme 中指定这些 2 因子随机效应模型可能非常棘手。为了提供更具体的帮助,我们需要一个可重复的数据示例。
  • 非常感谢您的 cmets。这是我的数据的链接:drive.google.com/open?id=1nIlFfijUm4Ib6TJoHUUNeEJnZnnNzO29 Cheers :)
  • @user9935785 我添加了一个答案,显示如何使用nlme::lme 重现ezANOVA 结果。我还略微更改了您的问题标题,以更好地反映您帖子主体中的问题陈述。

标签: r statistics anova


【解决方案1】:

这是一个关于如何使用nlme::lme 重现ezANOVA 结果的分步示例。

数据

我们读入数据并确保所有分类变量都是factors。

# Read in data
library(tidyverse);
df <- read.csv("castRTs.csv");
df <- df %>%
    mutate(
        blockType = factor(blockType),
        linesTTL = factor(linesTTL));

ezANOVA 的结果

作为检查,我们重现 ez::ezANOVA 结果。

## ANOVA using ez::ezANOVA
library(ez);
model1 <- ezANOVA(
    data = df,
    dv = RT2,
    wid = subjectnbr,
    within = .(blockType, linesTTL),
    type = 2,
    detailed = TRUE,
    return_aov = FALSE);
model1;
#        $ANOVA
#              Effect DFn DFd          SSn       SSd           F            p
#1        (Intercept)   1  13 2047405.6654 34886.767 762.9332235 6.260010e-13
#2          blockType   1  13     236.5412  5011.442   0.6136028 4.474711e-01
#3           linesTTL   1  13    6584.7222  7294.620  11.7348665 4.514589e-03
#4 blockType:linesTTL   1  13    1019.1854  2521.860   5.2538251 3.922784e-02
#  p<.05         ges
#1     * 0.976293831
#2       0.004735442
#3     * 0.116958989
#4     * 0.020088855

nlme::lme 的结果

我们现在运行nlme::lme

## ANOVA using nlme::lme
library(nlme);
model2 <- anova(lme(
    RT2 ~ blockType * linesTTL,
    random = list(subjectnbr = pdBlocked(list(~1, pdIdent(~blockType - 1), pdIdent(~linesTTL - 1)))),
    data = df))
model2;
#                   numDF denDF  F-value p-value
#(Intercept)            1    39 762.9332  <.0001
#blockType              1    39   0.6136  0.4382
#linesTTL               1    39  11.7349  0.0015
#blockType:linesTTL     1    39   5.2538  0.0274

结果/结论

我们可以看到两种方法的 F 检验结果是相同的。 lme 中的random 效果定义的结构有些复杂,这是因为您有两个 交叉的随机效果。这里的“交叉”意味着对于blockTypelinesTTL 的每个组合,每个subjectnbr 都有一个观察值。

一些额外的(可选的)细节

要了解pdBlockedpdIdent的作用,我们需要看一下对应的两级混合效应模型

预测变量 是您的分类变量blockTypelinesTTL,它们通常使用虚拟变量进行编码。

随机效应 的方差-协方差矩阵可以采用不同的形式,具体取决于随机效应系数的基本相关结构。为了与两级重复测量方差分析的假设一致,我们必须指定一个块对角方差协方差矩阵pdBlocked,其中我们为偏移量~1 和分类预测变量@987654351 创建对角块@pdIdent(~blockType - 1)linesTTLpdIdent(~linesTTL - 1),分别。请注意,我们需要从最后两个块中减去偏移量(因为我们已经考虑了偏移量)。

一些相关/有趣的资源

Pinheiro and Bates, Mixed-Effects Models in S and S-PLUS, Springer (2000)

Potvin and Schutz, Statistical power for the two-factor repeated measures ANOVA, Behavior Research Methods, Instruments & Computers, 32, 347-356 (2000)

Deming Mi, How to understand and apply mixed-effect models, Department of Biostatistics, Vanderbilt university

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多