Ajouter des barres d'erreur à un diagramme en barres

L'essentiel de cette page !

Faire un diagramme en barres (ou en bâtons) avec barres d'erreur, c'est facile !

Les barres d'erreur (en général la déviation standard ou intervalle de confiance, parfois les écart-types) s'ajoutent avec la fonctions arrows().

On peut ajouter des lettres ou étoiles pour indiquer si la différence est significative avec la commande text().

Ajouter des barres d'erreur à un diagramme en barres

Cette partie explique comment ajouter les barres d'erreur à un diagramme en barres (en général les intervalles de confiance) et indiquer par des étoiles ou par des lettres si ces barres présentent une différence significative ou non.

Cette partie vise donc à répondre aux questions suivantes :

  • Comment annoter un diagramme en barres
  • Comment ajouter des signes indiquant la significativité de la différence entre les bâtons d'un diagramme en bâtons
  • Comment ajouter des lettres indiquant les catégories de barres sur un diagrammes en barres
  • Ce que signifient les étoiles sur un diagramme en en barres
  • Comment ajouter des étoiles au-dessus des barres qui illustrent la p-value obtenus par des tests de Student
  • Indiquer par des lettres les résultats des tests de Student croisés
  • Comment interpréter les étoiles sur un diagramme en bâtons
  • Faire figurer les résultats d'un test ANOVA sur un diagramme en bâtons

Règles d'annotations d'un diagramme en barres

  • Les barres d'erreurs sont les intervalles de confiance
  • Lorsqu'on ajoute des étoiles au-dessus de barres, c'est pour indiquer une différence significative par rapport à une barre témoin : ces différences sont mesurées en général par le test de Student
    • * : différence significative à 95%
    • ** : différence significative à 99%
    • *** : différence significative à 99,9%
  • Lorsqu'on ajoute des lettres, c'est suite à la réalisation de tests de Student croisés qui permettent de connaître les catégories de barres présentant une différence.
    • Toutes les barres indiquées sous la même lettre ne présentent pas de différence significative entres-elles
    • Toutes les barres présentant une lettre différente présentent entres-elles une différence significative
    • Toutes les barres présentant plusieurs lettres (ex : "ab") ne présentent pas de différences significative avec les barres présentant l'une, l'autre ou deux de ces lettres.
  • Remarque importante : quelque soit la méthode d'annotation, un commentaire sous le graphique doit toujours rappeler cette méthode, désigner les tests réalisés et les p-value qui en ont été déduites.
Diagramme en barres avec barres de confiance - logiciel R project

Exemple de diagramme en barres avec barres d'erreur

Cliquer sur cet exemple pour accéder à une page détaillant cette étude.

Diagramme en bâtons à différence annotée par des lettres

Exemple de diagramme en barres annoté par des lettres pour indiquer les résultats de Student

Cliquer sur cet exemple pour accéder à une page détaillant cette étude.

1- Tracer les barres d'erreur sur le diagramme en barres

Le raisonnement pour tracer un diagramme en bâtons avec des barres d'erreur (déviation standard), le raisonnement est le suivant (en 3 étapes) :

1- Donner un nom au diagramme en barres pour enregistrer la position de chaque barre

bp = barplot(moyennes ) # Avec moyenne une liste de valeurs

2- Encadrer le diagramme

box() 

3- Ajouter les barres de confiance avec la fonction arrows()

arrows(bp,moyennes-intervalles,bp, moyennes+intervalles, lwd=1.5, angle=90,length=0.1,code=3)  
# avec moyennes une liste de valeurs et intervalles la liste des intervalles de confiance correspondant 

Exemple 0.1 - avec la fonction arrows()

A = c(1,3,4,5) ; B = c(3,5,6,3,4) ; C = c(7,6,4,7,5,4,4,4,4) 
moyennes = c(mean(A),mean(B),mean(C)) 
intervalles = c( ((t.test(A)$conf.int[2]-t.test(A)$conf.int[1])/2), ((t.test(B)$conf.int[2]-t.test(B)$conf.int[1])/2), ((t.test(C)$conf.int[2]-t.test(C)$conf.int[1])/2) ) 
bp = barplot(moyennes,ylim=c(0,10) ); box() 
arrows(bp,moyennes-intervalles,bp, moyennes+intervalles, lwd=1.5, angle=90,length=0.1,code=3) 

# Remarque : on met parfois les écart-types plutôt que la déviation standard (intervalles de confiance)

Exemple 0.2 - avec la fonction barplot2() de la librairie gplots

# En utilisant les données de l'exemple 1.0
library("gplots") # pensez à faire install.packages("gplots") pour installer gplots
barplot2(moyennes,plot.ci=T,ci.l=moyennes-intervalles,ci.u=moyennes+intervalles,ci.width=0.2,ci.lwd=2,col="orange")

# barplot2 permet de réduire le nombre de lignes de code, mais nécessite une librairie supplémentaire (gplots)

2- Ajouter les étoiles de significativité ou étoiles de confiance (pour comparer les barres à un témoin)

On peut comparer les barres à un témoin et indiquer si une différence est très significative (***) ou moins. Ces différences peuvent se déterminer en calculant des p-values par un test de Student (comparaison de moyennes) ou un Khi² (comparaison d'effectifs ou proportions).

  • Lorsqu'on ajoute des étoiles au-dessus de barres, c'est pour indiquer une différence significative par rapport à une barre témoin.
    • * : différence significative à 95%
    • ** : différence significative à 99%
    • *** : différence significative à 99,9%

L'écriture suit ce raisonnement :

simulation = barplot(x,plot=F) ; barplot(x) 
text(simulation,x+n,c("","**","***")) # à configurer manuellement  en fonction des p-values

# x : listes de valeurs

# simulation : permet de simuler la position des barres afin d'en retenir les positions et d'y ajouter les étoiles avec la fonction text

# n : à remplacer par une constante qui donne la valeur qui sépare les étoiles de chaque barre

Exemple 1

x = c(3,4,2) ; simulation = barplot(x,plot=F) ;  barplot(x, ylim=c(0,5)) 
text(simulation,x+0.6,c("","**","***"),cex = 2) 
# cex : taille des étoiles 

Exemple 2 - Comparaison de 2 échantillons avec un témoin.

x = c(2,3,4,3,2,3,2,1,1); y=c(9,8,7,6,5,4,3,2,1,0,4,4); témoin = c(7,8,9,6,5) 
test_x = t.test(témoin,x)$p.value ;  test_y = t.test(témoin,y)$p.value 
cat("la p-value entre x et le témoin est de ",test_x,"\n") 
cat("la p-value entre y et le témoin est de ",test_y,"\n") 
# Ajouter les étoiles de significativité : * si p-value de 0.05, ** si 0.01 et *** si 0.001 
# Remarque : le 2 ici donne la hauteur où se trouvent les étoiles au-dessus des barres 
moyennes = c(mean(témoin),mean(x),mean(y)) 
simul = barplot(moyennes, plot=F) 
barplot(moyennes, ylim=c(0,9),names=c("témoin","x","y"),border=NA,col="purple") 
text(simul,moyennes+1,c("","**","*"),cex=2) # Le 1 indique qu'on veut que les étoiles apparaissent 1 unité au-dessus des barres

Exemple 3 - COMBINER - Barres d'erreur + Étoiles de confiance

Étape 1 - compiler les valeurs
x = c(2,2,2,1,2,2,2,2,2); y=c(9,8,7,6,5,4,3,2,1,0,4,4); témoin = c(7,8,9,6,5)
moyennes = c(mean(témoin),mean(x),mean(y)) 
Étape 2 - comparer les barres par un test de Student // témoin
# Comparaison des moyennes de 3 échantillons x, y et témoin 
test_x = t.test(témoin,x)$p.value ;  test_y = t.test(témoin,y)$p.value 
cat("la p-value entre x et le témoin est de ",test_x,"\n") 
cat("la p-value entre y et le témoin est de ",test_y,"\n") 
# Ajouter les étoiles de significativité : * si p-value de 0.05, ** si 0.01 et *** si 0.001 
Étape 3 - Calculer les intervalles de confiance avec int.ech()
# commandes à copier-coller int.ech provenant de l' aide ici : FONCTION INT.ECH
# il faut copier int.ech ici
err =  c(int.ech(témoin),int.ech(x),int.ech(y)) 
Étape 4 - Tracer le diagramme
# Tracer le graphique 
simul =  barplot(moyennes, ylim=c(0,9),names=c("témoin","x","y"),col="red") 
# Tracer les barres d'erreur 
arrows(bp,moyennes-err,simul, moyennes+err, lwd=3, angle=90,length=0.1,code=3)   
# Ajouter les étoiles en tenant compte de la taille des barres 
text(simul,moyennes +err +1,c("","**","*"),cex=2) 
# +1 indique que l'étoile sera 1 unité au-dessus du sommet de la barre d'erreur


3- Ajouter les étoiles des lettres pour catégoriser les barres en absence de témoin de référence

  • Lorsqu'on ajoute des lettres, c'est suite à la réalisation de tests de Student croisés qui permettent de connaître les catégories de barres présentant une différence.
    • Toutes les barres indiquées sous la même lettre ne présentent pas de différence significative entres-elles
    • Toutes les barres présentant une lettre différente présentent entres-elles une différence significative
    • Toutes les barres présentant plusieurs lettres (ex : "ab") ne présentent pas de différences significative avec les barres présentant l'une, l'autre ou deux de ces lettres.