Ajouter des barres d'erreur à un diagramme en barres
3. Ajouter des barres d'erreur à un diagramme en barres (étoiles de confiance)
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.
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.