Mereka diyakini simetris karena cukup sering digunakan perkiraan normal. Yang ini bekerja cukup baik jika p terletak sekitar 0,5. binom.test
di sisi lain melaporkan interval Clopper-Pearson "tepat", yang didasarkan pada distribusi F (lihat di sini untuk formula yang tepat dari kedua pendekatan). Jika kita akan mengimplementasikan interval Clopper-Pearson di R itu akan menjadi seperti (lihat catatan ):
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))
}
Anda melihat di tautan dan di implementasi bahwa rumus untuk batas atas dan bawah sangat berbeda. Satu-satunya kasus interval kepercayaan simetris adalah ketika p = 0,5. Menggunakan rumus dari tautan dan memperhitungkan bahwa dalam hal ini mudah untuk menentukan sendiri bagaimana hasilnya.n=2×x
Saya pribadi memahaminya lebih baik melihat interval kepercayaan berdasarkan pendekatan logistik. Data binomial umumnya dimodelkan menggunakan fungsi tautan logit, didefinisikan sebagai:
logit(x)=log(x1−x)
Fungsi tautan ini "memetakan" istilah kesalahan dalam regresi logistik ke distribusi normal. Sebagai konsekuensinya, interval kepercayaan dalam kerangka logistik simetris di sekitar nilai-nilai logit, seperti halnya dalam kerangka regresi linier klasik. Transformasi logit digunakan tepat untuk memungkinkan penggunaan seluruh teori berbasis normalitas di sekitar regresi linier.
Setelah melakukan transformasi terbalik:
logit−1(x)=ex1+ex
Anda mendapatkan interval asimetris lagi. Sekarang interval kepercayaan ini sebenarnya bias. Cakupan mereka bukan yang Anda harapkan, terutama pada batas distribusi binomial. Namun, sebagai ilustrasi mereka menunjukkan kepada Anda mengapa logis bahwa distribusi binomial memiliki interval kepercayaan asimetris.
Contoh dalam 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
Catatan : Sebenarnya, R menggunakan distribusi beta, tetapi ini benar-benar setara dan komputasi sedikit lebih efisien. Implementasi dalam R dengan demikian berbeda dari apa yang saya tunjukkan di sini, tetapi memberikan hasil yang persis sama.