二項式置信區間估計 - 為什麼它不是對稱的?
我使用以下 r 代碼來估計二項式比例的置信區間,因為我知道在設計用於檢測人群疾病的接收器操作特徵曲線設計時,它可以替代“功率計算”。
n 是 150,我們相信這種疾病在人群中的流行率為 25%。我計算了 75% 靈敏度和 90% 特異性的值(因為人們似乎就是這樣做的)。
binom.test(c(29,9), p=0.75, alternative=c("t"), conf.level=0.95) binom.test(c(100, 12), p=0.90, alternative=c("t"), conf.level=0.95)
我也訪問過這個網站:
http://statpages.org/confint.html
這是一個計算二項式置信區間的java頁面,它給出了相同的答案。
無論如何,經過漫長的設置,我想問為什麼置信區間不對稱,例如靈敏度是
95 percent confidence interval: 0.5975876 0.8855583 sample estimate probability: 0.7631579
抱歉,如果這是一個基本問題,但我所看到的任何地方似乎都表明它們將是對稱的,而我的一位同事似乎也認為它們也是對稱的。
它們被認為是對稱的,因為經常使用正態近似。如果 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。使用鏈接中的公式並考慮到在這種情況下很容易得出你自己是怎麼來的。
我個人更好地理解基於邏輯方法的置信區間。二項式數據通常使用 logit 鏈接函數建模,定義為:
此鏈接函數將邏輯回歸中的誤差項“映射”到正態分佈。因此,邏輯框架中的置信區間圍繞 logit 值對稱,就像在經典線性回歸框架中一樣。logit 變換正好用於允許使用圍繞線性回歸的整個基於正態性的理論。
進行逆變換後:
你再次得到一個不對稱的間隔。現在這些置信區間實際上是有偏差的。它們的覆蓋範圍不是您所期望的,尤其是在二項分佈的邊界處。然而,作為說明,它們向您展示了為什麼二項式分佈具有不對稱置信區間是合乎邏輯的。
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 中的實現與我在這裡展示的不同,但它給出了完全相同的結果。