On pense qu'ils sont symétriques car, souvent, une approximation normale est utilisée. Celui-ci fonctionne assez bien dans le cas où p se situe autour de 0,5. binom.test
d'autre part, rapporte des intervalles Clopper-Pearson "exacts", qui sont basés sur la distribution F (voir ici les formules exactes des deux approches). Si nous implémentions l'intervalle Clopper-Pearson dans R, ce serait quelque chose comme (voir note ):
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))
}
Vous voyez à la fois dans le lien et dans l'implémentation que la formule pour la limite supérieure et la limite inférieure sont complètement différentes. Le seul cas d'un intervalle de confiance symétrique est lorsque p = 0,5. En utilisant les formules du lien et en tenant compte du fait que dans ce cas il est facile de déterminer comment cela se produit.n=2×x
Personnellement, je l'ai mieux compris en regardant les intervalles de confiance basés sur une approche logistique. Les données binomiales sont généralement modélisées à l'aide d'une fonction de lien logit, définie comme:
logit(x)=log(x1−x)
Cette fonction de lien "mappe" le terme d'erreur dans une régression logistique à une distribution normale. Par conséquent, les intervalles de confiance dans le cadre logistique sont symétriques autour des valeurs logit, un peu comme dans le cadre de régression linéaire classique. La transformation logit est utilisée exactement pour permettre d'utiliser toute la théorie basée sur la normalité autour de la régression linéaire.
Après avoir fait la transformation inverse:
logit−1(x)=ex1+ex
Vous obtenez à nouveau un intervalle asymétrique. Or, ces intervalles de confiance sont en fait biaisés. Leur couverture n'est pas celle que vous attendez, en particulier aux limites de la distribution binomiale. Pourtant, à titre d'illustration, ils vous montrent pourquoi il est logique qu'une distribution binomiale ait des intervalles de confiance asymétriques.
Un exemple en 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
note : En fait, R utilise la distribution bêta, mais celle-ci est complètement équivalente et calculatrice un peu plus efficace. L'implémentation dans R est donc différente de ce que je montre ici, mais elle donne exactement le même résultat.