它们被认为是对称的,因为经常使用正态近似。如果 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 链接函数建模,定义为:
logit(x)=log(x1−x)
此链接函数将逻辑回归中的误差项“映射”到正态分布。因此,逻辑框架中的置信区间围绕 logit 值对称,就像在经典线性回归框架中一样。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 中的实现与我在这里展示的不同,但它给出了完全相同的结果。