You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

R(ezAnova)中emmeans与SPSS估计边际均值结果差异问询

关于ezAnova的emmeans与SPSS估计边际均值差异的排查方向

我之前在从SPSS转R做混合ANOVA时也碰到过一模一样的问题,分享几个大概率导致差异的原因和对应的解决思路:

  • 对比方式的默认设定差异
    SPSS默认用的是偏差对比(Deviation Contrast),而emmeans在默认状态下的对比逻辑或者模型拟合时的因素对比矩阵和SPSS不一致。你可以先检查R中各因素的对比设定:

    # 查看当前对比方式
    contrasts(data$Session)
    contrasts(data$Cue)
    # 手动设置为和SPSS一致的偏差对比/总和对比
    contrasts(data$Session) <- contr.sum(2)
    contrasts(data$Cue) <- contr.sum(3)
    contrasts(data$Flanker) <- contr.sum(2)
    contrasts(data$Group) <- contr.sum(3)
    

    重新拟合模型后再计算emmeans,大概率能缩小差异。

  • 边际均值的加权逻辑不同
    你的各组被试数不等(25、25、23),这时候差异会特别明显:SPSS计算估计边际均值时默认是平衡样本量加权(按理论相等样本量来计算均值),而emmeans默认用的是实际样本量加权。你可以在emmeans中强制指定平衡加权:

    emmeans(model, ~ Session*Cue*Flanker*Group, weights = "equal")
    
  • 模型拟合的细节差异

    • SPSS的混合ANOVA默认基于传统重复测量框架,可能会自动应用球形校正;而ezAnova本质是用线性混合效应模型拟合,且平方和类型的设定也可能和SPSS有出入。确认你在ezAnova中是否指定了type = 3(SPSS默认用类型III平方和):
      ezAnova(data = df, dv = RT, wid = Subject, 
              within = .(Session, Cue, Flanker), between = Group, 
              type = 3)
      
    • 另外,两个软件的模型拟合算法(比如迭代收敛的阈值)也可能有细微差别,你可以尝试在R中用lme4包重新拟合模型后再计算emmeans,对比结果。
  • 缺失值处理逻辑不一致
    SPSS在重复测量分析中默认是按列表删除缺失值,而R中的ezAnova如果没特别设置,可能是按行删除。你可以先对数据做统一的缺失值处理,比如用na.omit()预处理后再拟合模型,看看结果是否对齐。

内容的提问来源于stack exchange,提问作者Kerwin Olfers

火山引擎 最新活动