R中的差异(使用ezAnova)与SPSS中的估计边际均值

时间:2018-02-14 18:42:09

标签: r statistics spss

所以这是一个冰雹玛丽,但我希望有人在这里遇到过这个。我最近从SPSS切换到R,现在我正在尝试进行混合模型ANOVA。由于我对我的R技能没有信心,我在SPSS中使用完全相同的数据集来比较我的结果。

我有一个

的数据集
  

dv = RT

     

内=会话(2级),提示(3级),侧卫(2级)

     

=组(3级)。

     

没有协变量。

     

每组人数参与人数不等(25,25,23)

在R中,我使用ezAnova软件包来完成混合模型anova:

results <- ezANOVA(
    data = ant_rt_correct
    , wid = subject
    , dv = rt
    , between = group
    , within = .(session, cue, flanker) 
    , detailed = T
    , type = 3
    , return_aov = T
)

在SPSS中,我使用以下GLM:

GLM rt.1.center.congruent rt.1.center.incongruent rt.1.no.congruent rt.1.no.incongruent 
rt.1.spatial.congruent rt.1.spatial.incongruent rt.2.center.congruent rt.2.center.incongruent 
rt.2.no.congruent rt.2.no.incongruent rt.2.spatial.congruent rt.2.spatial.incongruent BY group 
/WSFACTOR=session 2 Polynomial cue 3 Polynomial flanker 2 Polynomial 
/METHOD=SSTYPE(3) 
/EMMEANS=TABLES(group*session*cue*flanker) 
/PRINT=DESCRIPTIVE 
/CRITERIA=ALPHA(.05) 
/WSDESIGN=session cue flanker session*cue session*flanker cue*flanker session*cue*flanker 
/DESIGN=group.

结果很好,即:

  

R:会话F(1,70)= 46.123 p = .000

     

SPSS:会话F(1,70)= 46.123 p = .000

我还要求使用每个单元格的方法:

descMeans <- ezStats(
    data = ant_rt_correct
    , wid = subject
    , dv = rt
    , between = group
    , within = .(session, cue, flanker) #,cue,flanker)
    , within_full = .(location,direction)
    , type = 3
)

这又与SPSS的描述完全一致,例如:对于细胞:

  

组(1) - 会话(1) - 提示(中) - 侧卫(1)

     

R:M = 484.22

     

SPSS:M = 484.22

但是,当我尝试使用emmeans软件包达到估计的边际均值时:

eMeans <- emmeans(results$aov, ~ group | session | cue | flanker)

与SPSS GLM输出中的Estimated Marginal Means表(对于相同的交互)相比,我遇到了差异,例如:

  

组(1) - 会话(1) - 提示(中) - 侧卫(1)

     

R:M = 522.5643

     

SPSS:M = 484.22

我的理解是,估计的边际均值应该与本案例中的描述性手段相同,因为我没有包括任何协变量。我错了吗?如果是这样,为什么这两个会给出不同的结果呢?

由于组大小不平衡,我还在制作相同大小的组后重新进行上述分析。在那种情况下,emmeans成了:

  

组(1) - 会话(1) - 提示(中) - 侧卫(1)

     

R:M = 521.2954

     

SPSS:M = 482.426

因此,即使在两种情况下都具有相同的群体规模,我最终也会采用完全不同的手段。请记住,SPSS和R之间的其他统计数据和描述性手段相同。我错过了什么??

谢谢!

修改

情节变浓..如果我使用AFEX包执行ANOVA:

results <- aov_ez(
    "subject"
    ,"rt"
    ,ant_rt_correct 
    ,between=c("group")
    ,within=c("session", "cue", "flanker") 
    )
)

然后再次采取emmeans:

eMeans <- emmeans(results, ~ group | session | cue | flanker)

我突然得到的价值更接近SPSS(以及描述性手段)

  

组(1) - 会话(1) - 提示(中) - 侧卫(1)

     

R:M = 484.08

     

SPSS:M = 484.22

所以也许ezANOVA在某个地方做了一些可疑的事情?

1 个答案:

答案 0 :(得分:0)

我建议你试试这个:

library(lme4)    ### I'm guessing you need to install this package first
mod <- lmer(rt ~ session + cue + flanker + (1|group),
            data = ant_rt_correct)

library(emmeans)
emm <- emmeans(mod, ~ session * cue * flanker)
pairs(emm, by = c("cue", "flanker")        # simple comparisons for session
pairs(emm, by = c("session", "flanker")    # simple comparisons for cue
pairs(emm, by = c("session", "cue")        # simple comparisons for flanker

这适合混合模型,每组有随机截距。它使用REML估计,这很可能是SPSS使用的。

相比之下,ezANOVA适合固定效应模型(根本不在因素范围内),aov_ez使用aov函数产生忽略块间效应的分析。这些对于不平衡的数据尤其有用。

另一种方法是使用afex::mixed,实际上使用lme4::lmer来适应模型。