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

R语言中按性别因子水平计算鸟类检测率95%置信区间的方法

问题原因

你得到不符合预期的结果是两个错误导致的:

  • 调用Hmisc::binconf时参数传错:该函数第一个参数是对应性别分组中outcome取值为1的总个数,第二个参数是对应性别分组的总调查次数。你之前传入的1475是雄性的总调查次数、2204是全数据集总记录数,计算出的是雄性样本占总样本的比例,和检测率完全无关。
  • 你贴出的检测率计算代码存在笔误:summarise(dr = mean(sex))应该写为mean(outcome),否则计算的是sex变量的均值,和检测率逻辑不符,你得到的59%、56%的结果应该是实际运行时写对了代码,粘贴时出现手误。

正确计算方法

方法1:基于已知数值直接计算

你已经知道雌性总调查次数为729、检测率56%,雄性总调查次数为1475、检测率59%,先算出对应分组的阳性数(outcome=1的数量)后直接传入函数即可:

# 计算雌性95%置信区间,729*0.56≈408为雌性阳性数
Hmisc::binconf(x = 408, n = 729)

# 计算雄性95%置信区间,1475*0.59≈870为雄性阳性数
Hmisc::binconf(x = 870, n = 1475)

方法2:dplyr流水线自动计算

如果不想手动计算阳性数,可以直接在分组汇总逻辑中一次性输出检测率和95%置信区间:

library(dplyr)
library(Hmisc)

detection_sex_result <- df %>%
  group_by(sex) %>%
  summarise(
    total_n = n(), # 对应性别总调查次数
    pos_n = sum(outcome == 1), # 对应性别outcome=1的总数量
    detection_rate = pos_n / total_n, # 检测率点估计
    ci_lower = binconf(pos_n, total_n)[, "Lower"], # 95%置信区间下限
    ci_upper = binconf(pos_n, total_n)[, "Upper"] # 95%置信区间上限
  )

运行上述代码后,detection_sex_result中会直接存储雌性、雄性对应的检测率和置信区间结果,和你之前得到的56%、59%的点估计完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:27:02