Es wird angenommen, dass sie symmetrisch sind, da häufig eine normale Approximation verwendet wird. Dieser funktioniert gut genug für den Fall, dass p um 0,5 liegt. binom.test
Andererseits werden "genaue" Clopper-Pearson-Intervalle gemeldet, die auf der F-Verteilung basieren (siehe hier für die genauen Formeln beider Ansätze). Wenn wir das Clopper-Pearson-Intervall in R implementieren würden, wäre es ungefähr so (siehe Hinweis ):
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))
}
Sie sehen sowohl im Link als auch in der Implementierung, dass die Formel für die obere und die untere Grenze völlig unterschiedlich sind. Der einzige Fall eines symmetrischen Konfidenzintervalls ist, wenn p = 0,5 ist. Verwenden Sie die Formeln aus dem Link und berücksichtigen Sie, dass in diesem Fall es einfach, sich abzuleiten, wie es kommt.n=2×x
Ich persönlich habe es besser verstanden, die Konfidenzintervalle auf der Grundlage eines logistischen Ansatzes zu betrachten. Binomialdaten werden im Allgemeinen mit einer Logit-Link-Funktion modelliert, die wie folgt definiert ist:
logit(x)=log(x1−x)
Diese Verknüpfungsfunktion "ordnet" den Fehlerterm in einer logistischen Regression einer Normalverteilung zu. Folglich sind die Konfidenzintervalle im logistischen Framework um die logit-Werte symmetrisch, ähnlich wie im klassischen linearen Regressionsframework. Die Logit-Transformation wird genau verwendet, um die gesamte auf Normalität basierende Theorie um die lineare Regression zu verwenden.
Nach der inversen Transformation:
logit−1(x)=ex1+ex
Sie erhalten wieder ein asymmetrisches Intervall. Nun sind diese Konfidenzintervalle tatsächlich voreingenommen. Ihre Abdeckung entspricht nicht den Erwartungen, insbesondere an den Grenzen der Binomialverteilung. Zur Veranschaulichung zeigen sie jedoch, warum es logisch ist, dass eine Binomialverteilung asymmetrische Konfidenzintervalle aufweist.
Ein Beispiel in 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
Hinweis : Tatsächlich verwendet R die Betaverteilung, dies ist jedoch völlig gleichwertig und rechnerisch ein bisschen effizienter. Die Implementierung in R unterscheidet sich daher von dem, was ich hier zeige, ergibt jedoch genau das gleiche Ergebnis.