Trucs pour LaTeX & R

Barplot de pourcentage avec intervalles de confiance

mardi 22 mai 2018 par Philippe MICHEL

21/05/2018 on passe à tidyverse ,c’est à dire à purrr pour faire les calcules &surtout à ggplot2 pour créer le graphique.

On dessine un barplot en % du premier niveau de la variable de test (testv) qui doit être dichotomique.

La technique consiste à définir trois vecteurs : un avec les pourcentages gg, un avec les bornes inférieures de l’intervalle de confiance gb & un avec les bornes supérieures gh.

Le calcul de l’intervalle de confiance se fait par transformation angulaire [1]. Plus de renseignement ?

Par exemple, on veut présenter le pourcentage de femme (variable testv en F/H) pour plusieurs catégories professionnelles (varp ).

  • testv la variable de test
  • varx est la variable à présenter.
  • titre est le titre du graphique.

J’ai volontairement laissé des couleurs très clinquantes, à vous de voir...

  1. # Philippe MICHEL 2017
  2. #
  3. barconf <- function(varx,testv,tit="titre"){
  4.                                         # Création de la table
  5.   nom <- levels(varx)
  6. tta <- as.data.frame.matrix(table(testv,varx)) # table de contingence
  7.                                         # Calcul des % & des bornes de l'IC
  8.     gg <- map_dbl(tta, function(x) 100*x[1]/sum(x))
  9.     tainf <- map_dbl(tta, function(x) asin(sqrt(x[1]/sum(x)-1/(2*sum(x))))-1.96/(2*sqrt(sum(x))))
  10.     tasup <- map_dbl(tta, function(x) asin(sqrt(x[1]/sum(x)+1/(2*sum(x))))+1.96/(2*sqrt(sum(x))))
  11.     gb <- 100*sin(tainf)^2
  12. gh <- 100*sin(tasup)^2
  13. # On regroupe ces variables dans un data.frame
  14. ggdf <- data.frame(nom,gg,gb,gh)
  15. # On attaque le graphique
  16. gd <- ggplot(ggdf, aes(x=nom, y=gg, fill=nom))
  17. gd <- gd + geom_bar(stat="identity")
  18. gd <- gd +  geom_errorbar(aes(ymin=gb, ymax=gh), width=.8,size=0.8) # On dessine les barres d'erreur
  19. gd <- gd + labs(title = titre,
  20.                 y="%"
  21.                 ) # Titres des axes & du graphique
  22. gd <- gd + theme_light() # Thème simple, idéal pour publication
  23. gd <- gd + theme(plot.title = element_text(size=18, face="bold"),
  24.                            axis.title.x = element_blank(),
  25.                            axis.title.y= element_text(size=16, face="bold"),
  26.                            axis.text.x = element_text(size=16, face="bold"),
  27.                  axis.text.y = element_text(size=16, face="bold"),
  28.                  legend.position = "none",
  29.                  )
  30. gd <- gd + scale_x_discrete(limits=levels(varx)) # Pour éviter un reclassement des niveaux
  31. #
  32. plot(gd)  
  33. }

Télécharger


Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 405 / 127569

Suivre la vie du site fr  Suivre la vie du site R   ?    |    titre sites syndiques OPML   ?

Site réalisé avec SPIP 3.2.1 + AHUNTSIC

Creative Commons License