You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R stats包中完成ANCOVA后获取Cohen's d值?

在R的stats包ANCOVA中获取Cohen's d值

stats包自带的aov()输出确实不会直接给出Cohen's d,你可以通过以下两种方式获取:

方法1:手动计算(基于调整后均值)

ANCOVA的Cohen's d需要用控制协变量后的组均值差除以模型残差标准差,步骤如下:

  • 拟合ANCOVA模型
# 替换成你的变量和数据集
ancova_model <- aov(因变量 ~ 分组变量 + 协变量, data = 你的数据集)
  • 计算各组调整后均值
    借助emmeans包提取控制协变量后的组均值:
library(emmeans)
adjusted_means <- emmeans(ancova_model, ~ 分组变量)
adjusted_means_df <- as.data.frame(adjusted_means)
  • 计算Cohen's d
# 获取模型残差标准差
resid_sd <- sqrt(mean(resid(ancova_model)^2))

# 以两组比较为例,替换索引对应你的分组
mean_diff <- adjusted_means_df$emmean[1] - adjusted_means_df$emmean[2]
cohens_d <- mean_diff / resid_sd

方法2:用effectsize包自动计算

effectsize包可以直接针对ANCOVA的事后比较生成Cohen's d,步骤更简便:

  • 安装并加载包
install.packages("effectsize")
library(effectsize)
  • 拟合模型后,计算事后检验的效应量
# 先做事后比较(这里用Tukey调整,可按需替换)
posthoc <- emmeans(ancova_model, pairwise ~ 分组变量, adjust = "tukey")
# 提取Cohen's d
es <- effectsize(posthoc, type = "d")
print(es)

输出结果会包含所有成对分组比较的Cohen's d值,且自动基于调整后均值和残差标准差计算,符合ANCOVA的效应量逻辑。

内容的提问来源于stack exchange,提问作者Dan Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:15:43