如何在R中对Aids2数据集应用prop.test分析男女hs感染占比
如何用prop.test检验Aids2数据集中男女hs感染的比例差异
嘿,别慌!我一步步带你完成这个检验,用R语言来操作(毕竟prop.test是R里的标准函数):
1. 先整理我们需要的数据
首先,我们需要两组核心数据:男性中通过hs感染的人数、男性总人数,以及女性中通过hs感染的人数、女性总人数。
针对你给出的98条样本数据
我帮你数了一下:
- 男性(sex=M)总共有94人,其中74人是通过hs感染的(T.categ=hs)
- 女性(sex=F)总共有4人,没有通过hs感染的案例(所有女性的感染方式都是id或blood)
针对完整的Aids2数据集(更推荐)
如果用的是MASS包自带的完整Aids2数据集,或者你有完整数据文件,用代码自动统计更高效:
# 加载MASS包自带的Aids2数据(如果是自己的数据集,用read.csv导入) library(MASS) data(Aids2) # 统计男性组:hs感染数 & 总人数 male_hs_count <- sum(Aids2$sex == "M" & Aids2$T.categ == "hs", na.rm = TRUE) male_total <- sum(Aids2$sex == "M", na.rm = TRUE) # 统计女性组:hs感染数 & 总人数 female_hs_count <- sum(Aids2$sex == "F" & Aids2$T.categ == "hs", na.rm = TRUE) female_total <- sum(Aids2$sex == "F", na.rm = TRUE)
注:加na.rm=TRUE是为了忽略数据中的缺失值,避免统计出错
2. 执行比例差异检验
有了统计好的数值,直接调用prop.test()函数就行:
# 传入两组的成功数(hs感染数)和样本量(总人数) test_result <- prop.test( x = c(male_hs_count, female_hs_count), n = c(male_total, female_total), correct = TRUE # 连续性修正,小样本下建议保留 ) # 打印完整检验结果 print(test_result)
3. 解读检验结果
输出结果里重点看这几个部分:
- p-value:如果p值<0.05,说明男女hs感染比例存在显著差异;如果p值>0.05,则没有足够证据证明差异存在。
- 95 percent confidence interval:这个区间是两组比例差异的置信范围,如果区间不包含0,同样支持“比例有差异”的结论。
- sample estimates:这里会显示男女各自的hs感染比例,能直观看到两组的差异大小。
针对你提供的样本数据的特殊情况
你的样本里女性hs感染数是0,prop.test会自动处理这种情况,不过如果想关闭连续性修正,可以把correct=FALSE,但小样本场景下还是建议保留修正。
小提示
如果你的数据里有缺失值,记得先用Aids2_clean <- na.omit(Aids2)清理后再统计,避免结果偏差。
内容的提问来源于stack exchange,提问作者Laurentiu
相关产品推荐
相关产品推荐

