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

为何`binom::binom.confint`函数的`conf.level`参数对结果无影响?

问题:binom::binom.confint的prop.test方法不响应conf.level参数

当使用binom::binom.confint并指定methods = "prop.test"时,修改conf.level参数无法改变置信区间结果,但直接调用binom.test时该参数可正常调整区间范围。

复现代码

binom.confint的异常表现

library(binom)

x <- 10  
n <- 20 

# 设置置信水平0.80
binom.confint(x, n, methods = "prop.test", conf.level = 0.80)
#      method  x  n mean    lower    upper
# 1 prop.test 10 20  0.5 0.299298 0.700702

# 设置置信水平0.95
binom.confint(x, n, methods = "prop.test", conf.level = 0.95)
#      method  x  n mean    lower    upper
# 1 prop.test 10 20  0.5 0.299298 0.700702

binom.test的正常表现

# 置信水平0.80
binom.test(x, n, conf.level=0.80)$conf.int
# [1] 0.3381709 0.6618291

# 置信水平0.95
binom.test(x, n, conf.level=0.95)$conf.int
# [1] 0.2719578 0.7280422

问题原因

查看binom::binom.confint的源码可知,当选择prop.test方法时,函数内部调用prop.test时没有传递用户设置的conf.level参数,始终使用prop.test默认的0.95置信水平,因此无论传入什么conf.level值,计算结果都不会变化。

临时解决方法

如果需要用prop.test的逻辑并自定义置信水平,可以直接调用prop.test函数,或者封装一个简单函数:

my_binom_prop_confint <- function(x, n, conf.level = 0.95) {
  res <- prop.test(x, n, conf.level = conf.level)
  data.frame(method = "prop.test", x = x, n = n, mean = res$estimate,
             lower = res$conf.int[1], upper = res$conf.int[2])
}

# 测试0.80置信水平
my_binom_prop_confint(10, 20, conf.level = 0.80)
#      method  x  n mean    lower    upper
# 1 prop.test 10 20  0.5 0.3381709 0.6618291

# 测试0.95置信水平
my_binom_prop_confint(10, 20, conf.level = 0.95)
#      method  x  n mean    lower    upper
# 1 prop.test 10 20  0.5 0.2719578 0.7280422

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:39:55