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

在R中进行双样本t检验:性别与收入占比的组间差异分析问题

问题描述

我有如下数据框:

df <- structure(list(ID = c(243, 292, 317, 388, 398, 404, 463, 473, 
842, 844, 858, 862, 869, 871, 879, 888), Zone = c(1, 1, 1, 1, 
1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2), Gen = c("Male", "Male", 
"Other Gender Identity", "Male", "Male", "Male", "Male", "Female", 
"Female", "Male", "Female", "Male", "Male", "Male", "Male", "Female"
), Month_Inc = c("< $1,500", "< $1,500", "< $1,500", "$1,500 - $1,999", 
"$1,500 - $1,999", "< $1,500", "< $1,500", "< $1,500", "$1,500 - $1,999", 
"$2,000 - $2,499", "$1,500 - $1,999", "< $1,500", "$2,500 - $2,999", 
"< $1,500", "< $1,500", "< $1,500")), row.names = c(NA, -16L), class = c("tbl_df", 
"tbl", "data.frame"))

需要完成两个检验:

  • 检验两个区域中女性占比的统计差异(原假设H₀:两区域女性占比相等;备择假设H₁:两区域女性占比不相等)
  • 检验两个区域中收入水平的组间占比差异

尝试用t.test(Gen ~ Zone, mu = 0, alt = "two.sided", conf= 0.95, paired = FALSE, ver.equal = FALSE, data= df)未得到预期结果,需要修正代码。

解决方案

核心问题是错误地将t检验用于分类变量的比例/分布检验:t检验仅适用于连续变量的均值比较,而你要检验的是分类变量(性别、收入)在不同区域的分布差异,需选择对应方法:

一、检验两区域女性占比差异

需将性别变量转换为二分类聚焦女性群体,使用两样本比例检验(prop.test):

步骤1:统计各区域女性及总人数

# 生成区域与是否为女性的交叉表
female_counts <- table(df$Zone, df$Gen == "Female")
female_counts

输出示例:

FALSE TRUE
  1     7    1
  2     5    3

步骤2:执行比例检验

# x为各区域女性人数,n为各区域总人数
prop.test(x = c(1, 3), n = c(8, 8), alternative = "two.sided", conf.level = 0.95)

该检验直接针对两区域女性占比是否相等完成假设检验,完全匹配你的需求。

二、检验两区域收入水平的分布差异

收入是多分类变量,使用卡方独立性检验(chisq.test),验证收入水平与区域是否独立:

步骤1:生成收入与区域的列联表

income_table <- table(df$Zone, df$Month_Inc)
income_table

步骤2:执行卡方检验

chisq.test(income_table)

若单元格期望频数过小(如<5),可添加模拟参数提升结果可靠性:

chisq.test(income_table, simulate.p.value = TRUE)

原代码无效原因

t.test要求因变量为连续数值型变量,而Gen是字符型分类变量,无法计算均值,因此输出无意义结果。必须针对分类变量的比例/分布选择对应检验方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:25:34