人们认为它们是对称的,因为经常使用法线近似。如果p处于0.5左右,则此效果很好。binom.test
另一方面,报告的“精确” Clopper-Pearson间隔基于F分布(有关这两种方法的确切公式,请参见此处)。如果我们要在R中实现Clopper-Pearson间隔,则将类似于(参见注释):
Clopper.Pearson <- function(x, n, conf.level){
alpha <- (1 - conf.level) / 2
QF.l <- qf(1 - alpha, 2*n - 2*x + 2, 2*x)
QF.u <- qf(1 - alpha, 2*x + 2, 2*n - 2*x)
ll <- if (x == 0){
0
} else { x / ( x + (n-x+1)*QF.l ) }
uu <- if (x == 0){
0
} else { (x+1)*QF.u / ( n - x + (x+1)*QF.u ) }
return(c(ll, uu))
}
您可以在链接和实现中看到上限和下限的公式完全不同。对称置信区间的唯一情况是p = 0.5时。使用链接中的公式,并考虑到在这种情况下,,很容易得出自己的来历。n = 2 × x
我个人认为,最好是基于逻辑方法来研究置信区间。通常使用logit链接函数对二项式数据进行建模,定义为:
l o g i t(x )= 对数( x1 − x)
此链接函数将逻辑回归中的错误项“映射”到正态分布。结果,逻辑框架中的置信区间围绕logit值对称,这与经典线性回归框架中的情形非常相似。logit转换正好用于围绕线性回归使用整个基于正态性的理论。
经过逆变换后:
升ø 克我吨− 1(x )= eX1 + eX
您再次得到一个不对称的间隔。现在,这些置信区间实际上是有偏差的。它们的覆盖范围不是您期望的,特别是在二项式分布的边界。然而,作为说明,他们向您展示了为什么二项式分布具有不对称置信区间是逻辑的。
R中的一个例子:
logit <- function(x){ log(x/(1-x)) }
inv.logit <- function(x){ exp(x)/(1+exp(x)) }
x <- c(0.2, 0.5, 0.8)
lx <- logit(x)
upper <- lx + 2
lower <- lx - 2
logxtab <- cbind(lx, upper, lower)
logxtab # the confidence intervals are symmetric by construction
xtab <- inv.logit(logxtab)
xtab # back transformation gives asymmetric confidence intervals
注意:实际上,R使用beta分布,但这是完全等效的,并且计算效率更高。因此,R中的实现与我在此处所示的实现不同,但是它给出的结果完全相同。