求ANOVA两两比较中每组对比的效应量R实现代码
获取ANOVA两两比较的效应量(Cohen's d/偏η²)的R代码
1. 计算Cohen's d(直接用emmeans工具)
emmeans包自带的eff_size()函数可以针对两两对比结果计算Cohen's d,基于模型的残差标准差计算合并标准差:
# 先生成两两对比结果(保留你的adjust=NULL设置) two.way.contrast <- pairs(emmeans(two.way.esm, ~ emotionF*typeF), adjust = NULL) # 计算Cohen's d并输出90%置信区间 contrast_effsize <- eff_size(two.way.contrast, sigma = sigma(two.way.esm), edf = df.residual(two.way.esm)) summary(contrast_effsize, level = 0.90)
2. 计算偏η²(partial eta squared)
偏η²可以通过两两对比的t值和模型残差自由度推导,公式为 η²p = t² / (t² + 残差自由度),代码实现如下:
# 提取对比结果的详细统计量 contrast_stats <- summary(two.way.contrast, level = 0.90) # 获取模型的残差自由度 df_resid <- df.residual(two.way.esm) # 计算偏η²并添加到结果表中 contrast_stats$partial_eta_sq <- (contrast_stats$t.ratio^2) / (contrast_stats$t.ratio^2 + df_resid) # 查看包含偏η²的完整结果 print(contrast_stats)
注意事项
- 如果你的模型是混合效应模型(如
lmer拟合的),需要用lmerTest包获取准确的残差自由度,替换df.residual(two.way.esm)为anova(two.way.esm)$DenDF - Cohen's d的计算默认使用合并标准差,若需要其他标准化方式,可在
eff_size()中指定method参数
内容的提问来源于stack exchange,提问作者Miranda
相关产品推荐
相关产品推荐

