如何在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
相关产品推荐
相关产品推荐

