Si ritiene che siano simmetrici perché abbastanza spesso viene utilizzata un'approssimazione normale. Questo funziona abbastanza bene nel caso in cui p sia intorno a 0,5. binom.testd'altra parte riporta intervalli "esatti" di Clopper-Pearson, che si basano sulla distribuzione F (vedi qui per le formule esatte di entrambi gli approcci). Se implementassimo l'intervallo Clopper-Pearson in R sarebbe qualcosa di simile (vedi nota ):
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))
}
Si vede sia nel collegamento che nell'implementazione che la formula per il limite superiore e inferiore è completamente diversa. L'unico caso di un intervallo di confidenza simmetrico è quando p = 0,5. Usando le formule dal link e tenendo conto di ciò in questo caso è facile ricavare come viene.n=2×x
Personalmente l'ho capito meglio guardando gli intervalli di confidenza basati su un approccio logistico. I dati binomiali sono generalmente modellati utilizzando una funzione di collegamento logit, definita come:
logit(x)=log(x1−x)
Questa funzione di collegamento "mappa" il termine di errore in una regressione logistica a una distribuzione normale. Di conseguenza, gli intervalli di confidenza nel framework logistico sono simmetrici rispetto ai valori logit, proprio come nel classico framework di regressione lineare. La trasformazione del logit viene utilizzata esattamente per consentire di utilizzare l'intera teoria basata sulla normalità attorno alla regressione lineare.
Dopo aver effettuato la trasformazione inversa:
logit−1(x)=ex1+ex
Ottieni di nuovo un intervallo asimmetrico. Ora questi intervalli di confidenza sono effettivamente distorti. La loro copertura non è quella che ti aspetteresti, specialmente ai confini della distribuzione binomiale. Tuttavia, a titolo illustrativo, mostrano perché è logico che una distribuzione binomiale abbia intervalli di confidenza asimmetrici.
Un esempio 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
nota : infatti, R utilizza la distribuzione beta, ma questo è completamente equivalente e computazionalmente un po 'più efficiente. L'implementazione in R è quindi diversa da quella che mostro qui, ma dà esattamente lo stesso risultato.