Diagramme en barres avec lettres pour annoter la significativité des différences

Lorsqu'on réalise un diagramme en barres, il faut accomplir 2 actions avant de pouvoir présenter la significativité de la différence entre ces barres :

  1. On ajoute les barres d'erreur (intervalles de confiance)
  2. On réalise des tests de Student (en général test de Student si on compare des valeurs moyennes) et on indique par des lettres quelles barres sont différentes les unes des autres. Chaque barre présentant une lettre différente d'une autre en est forcément significativement différente.

Exemple : un diagramme en barres avec deux catégories statistiques a et b

Les résultats des tests de Student permettent de montrer que les produits 1 et 3 sont significativement différents (avec une p-value de 7.10^-3).

Le produit 2 en revanche ne présente pas de différence significative avec les produits 1 et 3.

Diagramme en barres annoté suite à des tests de Student (logiciel R)


1. Calculer la valeur de chaque barre ainsi que les intervalles de confiance

# LES DONNEES DE 3 ECHANTILLONS SIMULEES ICI PAR RNORM (mais cela marche avec n'importe quel échantillon !)
p1 <- rnorm(100,21,6) ; p1
p2 <- rnorm(100,23,20) ; p2
p3 <- rnorm(100,26,6) ; p3
# CALCUL DES MOYENNES 
moyennes = c(mean(p1),mean(p2),mean(p3))
# CALCUL DES INTERVALLES DE CONFIANCE
ic_p1 = (t.test(p1)$conf.int[2]-t.test(p1)$conf.int[1])/2
ic_p2 = (t.test(p2)$conf.int[2]-t.test(p2)$conf.int[1])/2
ic_p3 = (t.test(p3)$conf.int[2]-t.test(p3)$conf.int[1])/2
ic = c(ic_p1,ic_p2,ic_p3)

2. Tracer le diagramme en barres

# TRACER DU DIAGRAMME
diagramme = barplot(moyennes,ylim=c(0,30),space=2,col="#AAAAFF",border="#AAAAFF",names.arg=c("produit 1","produit 2","produit 3"))
# A noter : on donne un nom au diagramme, pour pouvoir lui ajouter les barres ensuite
box()

3. Ajouter les barres - les tracer

# AJOUTER LES BARRES
arrows(diagramme,moyennes-ic,diagramme, moyennes+ic, lwd=1.5, angle=90,length=0.1,code=3)

4. Ajouter les lettres pour indiquer les différences significatives entres barres

# TESTS DE STUDENT POUR COMPARER LES BARRES
t.test(p1,p2)$p.value # pas de différence significative entre p1 et p2 (catégorie a)
t.test(p1,p3)$p.value # différence significative entre p1 et p3 (catégories a contre b)
t.test(p2,p3)$p.value # pas de différence significative entre p2 et p3 (catégorie b)
# p1 et p2 sont donc de la catégorie a
# p2 et p3 sont donc de la catégorie b
# AJOUTER LES LETTRES DE SIGNIFICATIVITE
text(diagramme,moyennes+ic+1,c("a","ab","b"))