重复测量ANOVA并链接到R中的混合效应模型

时间:2018-06-13 12:04:22

标签: r statistics anova

我在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个小时!

提前致谢。

1 个答案:

答案 0 :(得分:0)

以下是有关如何使用ezANOVA重现nlme::lme结果的分步示例。

数据

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

# 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检验结果是相同的。 randomlme效果定义的某种复杂结构源于你有两个交叉随机效应的事实。在这里&#34;越过&#34;表示对于blockTypelinesTTL的每个组合,都存在对每个subjectnbr的观察。

一些其他(可选)详细信息

要了解pdBlockedpdIdent的作用,我们需要查看相应的两级混合效果模型

enter image description here

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

随机效应enter image description here的方差 - 协方差矩阵可以采用不同的形式,具体取决于随机效应系数的基础相关结构。为了与两级重复测量ANOVA的假设一致,我们必须指定一个块对角方差 - 协方差矩阵pdBlocked,我们为偏移~1创建对角线块,并为分类创建对角线块预测变量分别为blockType pdIdent(~blockType - 1)linesTTL pdIdent(~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