Accueil > R - Généralités > Transformation angulaire

Transformation angulaire

samedi 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 ?