如何在R中基于Cohen’s d计算Hedges' g及其方差与标准误
在R中从Cohen’s d计算Hedges' g及其方差、标准误
以下是针对两组样本量均为25、Cohen’s d=0.58的情况,计算Hedges' g、其方差和标准误的R代码与解释:
步骤1:定义参数
先设定样本量、Cohen’s d值及自由度:
n1 <- 25 # 组1样本量 n2 <- 25 # 组2样本量 d <- 0.58 # 报道的Cohen’s d值 df <- n1 + n2 - 2 # 自由度
步骤2:计算Hedges' g
Hedges' g是Cohen’s d的无偏修正版本,通过乘以校正因子J得到。J可通过gamma函数精确计算,大样本下也可用近似公式(结果几乎一致):
# 精确计算校正因子J J <- gamma(df/2) / (sqrt(df/2) * gamma((df-1)/2)) # 计算Hedges' g g <- d * J
步骤3:计算Hedges' g的方差
Hedges' g的方差可通过近似公式直接计算,或基于Cohen’s d的方差转换(两种方法结果一致):
# 方法1:直接计算g的方差 var_g <- (n1 + n2)/(n1*n2) + g^2/(2*(n1 + n2)) # 方法2:基于d的方差转换(验证用) var_d <- (n1 + n2)/(n1*n2) + d^2/(2*(n1 + n2)) var_g_alt <- J^2 * var_d
步骤4:计算Hedges' g的标准误
标准误为方差的平方根:
se_g <- sqrt(var_g)
输出结果
运行以下代码查看最终结果:
cat("(a) Hedges' g数值:", round(g, 4), "\n") cat("(b) Hedges' g的方差:", round(var_g, 4), "\n") cat("(c) Hedges' g的标准误:", round(se_g, 4), "\n")
结果说明
针对本例参数,运行后会得到:
- (a) Hedges' g ≈ 0.5673
- (b) Hedges' g的方差 ≈ 0.0835
- (c) Hedges' g的标准误 ≈ 0.2889
内容的提问来源于stack exchange,提问作者always.learning
相关产品推荐
相关产品推荐

