独立样本t检验输出组均值与mean()函数计算结果存在差异相关咨询
均值偏差的核心原因
分组逻辑不一致
你生成分组dummy变量的规则是:age >= 中位数赋值为1,因此dummy=0组对应的是age < 中位数的样本;但你手动计算均值时用的筛选条件是age <= 中位数,多纳入了所有刚好等于中位数的样本,这是第一组均值出现偏差的根本原因。
你提到第二组均值无偏差,是因为你没有对第二组做同样的手动验证,如果用age >= 中位数手动计算第二组均值,会发现和t.test输出的第二组均值也存在对应偏差,差值刚好是中位数样本带来的统计量变动。可选影响因素:缺失值处理逻辑差异
t.test()的公式接口默认会对公式涉及的所有变量做行级缺失删除,即某行只要age或Meaningfulness存在缺失,就会被排除出分析;你手动计算时虽然也加了na.rm=TRUE,但如果存在age为缺失的样本,这些样本不会进入你的筛选子集,也可能带来微小差异,不过该因素的影响远小于分组逻辑错误的影响。
数值选用建议
- 首先对齐分组逻辑:所有分析统一用生成好的dummy变量做分组依据,不要重复用age条件筛选,比如手动计算均值时直接调用
mean(Meaningfulness[dummy==0], na.rm=TRUE)、mean(Meaningfulness[dummy==1], na.rm=TRUE),即可保证和t.test的分组、统计量完全一致。 - 建议提前清洗分析样本:先筛选出
age和Meaningfulness均无缺失的样本再做后续所有分析,避免不同函数的缺失值处理规则不同导致结果不一致,示例代码:
df_analyze = df[complete.cases(df$age, df$Meaningfulness), ]
后续生成dummy、做t检验、计算均值和Cohen's d都用df_analyze数据集,所有分析的样本会完全统一。
- 所有报告的数值必须来源统一:你在文本、表格中呈现的描述统计均值、t检验标注的均值、计算Cohen's d用到的均值,必须是同一套样本、同一套分组得到的结果,不能混用两套不同逻辑得到的数值。只要对齐样本和分组规则,t.test输出的均值和手动计算的均值会完全一致,不存在需要二选一的问题。
内容的提问来源于stack exchange,提问作者Newby
相关产品推荐
相关产品推荐

