R语言计算Cohen's d结果与在线计算器存在差异的代码排查
代码问题排查
- 语法错误:计算
mean2时索引漏写$符,错误写法为df age>=22,正确应为df$age>=22,该错误会导致取数异常,直接影响计算结果。 - 样本重叠错误:两组分组规则为
age<=22和age>=22,所有年龄等于22的样本会被同时纳入两组计算,会导致均值、标准差计算偏差。需调整为互斥分组,例如使用age < 22和age >=22,或age <=22和age>22。 - 语法错误:合并标准差计算行缺少右括号,错误写法为
pooled <- sqrt((sd1^2 + sd2^2) / 2,正确应为pooled <- sqrt((sd1^2 + sd2^2) / 2),否则代码无法正常运行。 - 算法差异:你当前使用的是简化的等权合并标准差,标准独立样本Cohen's d默认采用按样本量加权的合并标准差,公式为:
多数在线Cohen's d计算器默认使用加权合并标准差,这是你计算结果和在线工具存在差异的核心原因。# 统计两组有效样本量 n1 <- sum(df$age <= 22 & !is.na(Meaningfulness), na.rm = T) n2 <- sum(df$age > 22 & !is.na(Meaningfulness), na.rm = T) # 加权合并标准差 pooled_weighted <- sqrt(((n1 - 1)*sd1^2 + (n2 - 1)*sd2^2)/(n1 + n2 - 2)) - 缺失值校验:需确认你本地的缺失值剔除逻辑和在线工具完全一致,若两者对age字段、Meaningfulness字段的缺失值处理规则不同,也会导致结果出现小幅偏差。
内容的提问来源于stack exchange,提问作者Newby
相关产品推荐
相关产品推荐

