Transformation angulaire
Article mis en ligne le 13 novembre 2021

par Philippe MICHEL

Il peut être utile d’utiliser la transformation angulaire avant de travailler sur une distribution binomiale en particulier quand on se rapproche de 0 ou de 1 (avec n>10). Un petit script d’exemple pour calculer un intervalle de confiance.

Rappel mathématique

Sur une distribution binomiale de probabilité p sur n observations, on peut démontrer par la méthode du Delta que arcsin(\sqrt{\hat{p}) suit une loi normale d’espérance  \mu = arcsin\left(\sqrt{p}\right) et de variance \sigma^2=\frac{1}{4n}. On peut donc assez simplement calculer un intervalle de confiance à 95 % par la formule (en appliquant une correction de continuité) : \left[\Phi\left(\hat{p}-\frac{1}{2n}\right)-1.96\frac{1}{2\sqrt{n}}\right. ;\left.\Phi\left(\hat{p}+\frac{1}{2n}\right)+1.96\frac{1}{2\sqrt{n}}\right] en posant : \Phi(x)=\arcsin(\sqrt{x}) Ce calcul est surtout utile quand p/n se rapproche des extrêmes c’est à dire de 0 ou de 1. (Pires AM, Amado C, Interval estimators for a binomial proportion : comparison of twenty methods. Revstat 6 (2008))

Application dans R

On observe nc cas sur nn (nn>10) observations soit une proportion de pp pour un intervalle de confiance de 95%.

  1.  trans.ang <- function(nc,nn){
  2. pp <- nc/nn # Calcul des bornes sur la fonction transformée
  3. sp <- 1.96/(2*sqrt(nn))
  4. pinf1 <- asin(sqrt(pp-1/(2*nn)))-sp
  5. psup1 <- asin(sqrt(pp+1/(2*nn)))+sp # Retour à la fonction d'origine
  6. pinf <- sin(pinf1)^2
  7. psup <- sin(psup1)^2 # Affichage du résultat brut, avec 2 chiffres signifcatifs & en pourcentage
  8. print(paste(pp,pinf,psup))
  9.  
  10. print(paste(round(pp,4),"[",round(pinf,4),";",round(psup,4),"]")) print(paste(round(pp*100,1),"% [",round(pinf*100,1),"% ;",round(psup*100,1),"% ]")) }

Télécharger

Simple, non ?