9.6 Représentation graphique

Il n’existe pas un graphique de référence afin de présenter un test t de Student ou un test de Wilcoxon. On retrouve malheureusement dans la littérature plusieurs graphiques qui coexistent. Afin de présenter 3 graphiques courants, nous utilisons le jeu de données crabs.

On retrouve généralement deux graphiques montrant la moyenne et l’intervalle de confiance.

a <- chart(data = crabs, rear ~ sex) +
  stat_summary(geom = "col", fun.y = "mean") +
  stat_summary(geom = "errorbar", width = 0.1,
    fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95))
# Warning: `fun.y` is deprecated. Use `fun` instead.
b <- chart(data = crabs, rear ~ sex) +
  geom_jitter(alpha = 0.3, width = 0.2) +
  stat_summary(geom = "point", fun.y = "mean", size = 2) +
  stat_summary(geom = "errorbar", width = 0.1,
    fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95), size = 1)
# Warning: `fun.y` is deprecated. Use `fun` instead.
combine_charts(list(a,b))

Le graphique en barres (encore appelé graphique en dynamite, car il ressemble au déclencheur d’explosion de dynamite dans les Walt Disneys) et le nuage de point représentent identiquement l’information. Ils représentent la moyenne avec des barres d’erreurs qui représentent l’intervalle de confiance à 95%. Le graphique en dynamite avec des barres d’erreurs ne donne aucune information sur le nombre d’observations. Nous avons déjà abordé rapidement cette problématique dans la section 4.1.3. Il n’est donc pas le graphique optimal pour présenter un test t de Student. Donc, préférez systématiquement le graphique de droite ou une de ses variantes (graphique en violon au lieu des points et barres d’erreurs autour des moyennes superposées lorsque le nombre d’observations est très grand).

Malgré le fait que le test t de Student est un test paramétrique, on retrouve dans la littérature scientifique la boite de dispersion qui est pourtant un graphique associé à des valeurs non paramétriques. Pour le test de Wilcoxon, la boite de dispersion est le graphique descriptif le plus recommandé (on peut aussi y adjoindre les points, ou passer sur le graphique en violon si le nombre d’observations est très grand).

chart(data = crabs, rear ~ sex) +
  geom_boxplot()

Parmi ces trois choix, nous vous conseillons d’employer le nuage de point avec la valeur moyenne et l’intervalle de confiance en priorité dans vos descriptions des données, sans présager nécessairement du test d’hypothèse qui sera réalisé ensuite.

chart(data = crabs, rear ~ sex) +
  geom_jitter(alpha = 0.3, width = 0.2) +
  stat_summary(geom = "point", fun = "mean") +
  stat_summary(geom = "errorbar", width = 0.1,
    fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95))

Pièges et astuces : barres d’erreurs

Que vous utilisiez le nuage de points ou le graphique en barres, vous devez être extrêmement vigilant aux barres d’erreurs. Vous devez toujours préciser et bien comprendre ce que les barres d’erreurs cachent. Voici quatre graphiques qui présentent différentes barres d’erreurs à partir des mêmes données (la taille de l’axe y a volontairement été figée).

p <- chart(data = crabs, rear ~ sex) +
  geom_jitter(alpha = 0.1, width = 0.2) +
  stat_summary(geom = "point", fun.y = "mean") +
  scale_y_continuous(limits = c(5,22))
# Warning: `fun.y` is deprecated. Use `fun` instead.
a <- p +
  stat_summary(geom = "errorbar", width = 0.1,
    fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95)) 

b <- p +
  stat_summary(geom = "errorbar", width = 0.1,
    fun.data = "mean_sdl", fun.args = list(mult = 1))

c <- p +
  stat_summary(geom = "errorbar", width = 0.1,
    fun.data = "mean_sdl", fun.args = list(mult = 2)) 

d <- p + 
  stat_summary(geom = "errorbar", width = 0.1,
    fun.data = "mean_se", fun.args = list(mult = 1))

combine_charts(list(a,b,c,d))
Nuage de points de la largeur de l'arrière de la carapace en focntion du sexe avec la moyenne et des barres d'erreurs. Graphe A : moyenne et intervalle de confiance 0.95. Graphe B : moyenne et écart-type. Graphe C : moyenne et 2*écart-type. Graphe D : moyenne et erreur standard

Figure 9.8: Nuage de points de la largeur de l’arrière de la carapace en focntion du sexe avec la moyenne et des barres d’erreurs. Graphe A : moyenne et intervalle de confiance 0.95. Graphe B : moyenne et écart-type. Graphe C : moyenne et 2*écart-type. Graphe D : moyenne et erreur standard

Les formules associées aux barres d’erreurs sont les suivantes de A à D:

  • Graphe A : l’intervalle de confiance 0.95

\[\mathrm{IC}(1 - \alpha) \simeq \bar{x} \pm t_{\alpha/2}^{n-1} \cdot SE_x\]

mean_cl_normal(crabs$rear)
# # A data.frame: 1 x 3
#       y  ymin  ymax
#   <dbl> <dbl> <dbl>
# 1  12.7  12.4  13.1
  • Graphe B : l’écart-type

\[s_x = \sqrt{\sum_{i=1}^n{\frac{(x_i - \bar{x})^2}{n-1}}}\]

mean_sdl(crabs$rear, mult = 1)
# # A data.frame: 1 x 3
#       y  ymin  ymax
#   <dbl> <dbl> <dbl>
# 1  12.7  10.2  15.3
  • Graphe C : deux fois la valeur de l’écart-type

\[2 \times s_x\]

mean_sdl(crabs$rear, mult = 2)
# # A data.frame: 1 x 3
#       y  ymin  ymax
#   <dbl> <dbl> <dbl>
# 1  12.7  7.59  17.9
  • Graphe D : l’erreur standard

\[SE_x = \frac{s_x}{\sqrt{n}}\]

mean_se(crabs$rear)
# # A data.frame: 1 x 3
#       y  ymin  ymax
#   <dbl> <dbl> <dbl>
# 1  12.7  12.6  12.9

Comme nous venons de le voir, les barres d’erreurs sont calculées à partir de différentes fonctions. Il est donc indispensable de préciser explicitement ce que les barres d’erreurs représentent. Dans le cas du test t de Student, nous avons vu qu’il est lié directement à la notion d’intervalle de confiance. C’est donc la version avec l’IC qui permet une comparaison visuelle immédiate de la “significativité” de la différence éventuellement observée. Par contre, cet IC, autant que l’erreur standard dépendent de n. Autement dit, comme ici, les barres d’erreurs peuvent devenir très petites si n est grand, indépendamment de la variation intrinsèque des mesures. C’est l’écart type qui représentera donc le mieux cette variation des observations. De plus, nous savons que si la distribution est Normale, deux fois l’écart type d’un côté et de l’autre représente à peu près l’intervalle dans lequel 95% des observations doivent se trouver, ce qui donne un sens à la variante qui représente deux fois l’écart type comme barre d’erreur. Donc, il n’y a pas un graphique meilleur que les autres, tout dépend de l’information que vous souhaitez mettre en évidence dans vos données et du contexte de votre analyse.

Pour en savoir plus
  • Beware of dynamite. Démonstration de l’impact d’un graphe en barres pour représenter la moyenne (et l’écart type) = graphique en “dynamite”.

  • Dynamite plots : unmitigated evil? Une autre comparaison du graphe en dynamite avec des représentations alternatives qui montre que le premier peut avoir quand même quelques avantages dans des situations particulières.

  • Annotation de graphiques avec {{ggpubr}. Comment afficher les p-values sur un graph ? Ces variantes annotées des résultats des tests d’hypothèses correspondants se retrouvent fréquemment dans les publications en biologie.

Pour terminer, bien que la moyenne soit un descripteur statistique très utile, il est parfois utilisé de manière abusive. Une distribution statistique ne se résume pas à un nombre, fût-ce la moyenne. De plus, si la distribution est asymétrique, la moyenne est un mauvais choix (préférer alors la médiane, ou transformer les données pour rendre la distribution plus symétrique). La vidéo suivante détaille le problème qui peut se produire :

À vous de jouer !

Appliquez vos nouvelles connaissances dans le projet GitHub Classroom de groupe que vous avez débuté au module précédent.

Réalisez en groupe le travail A09Ga_human_health, partie II.

Travail en groupe de 4 pour les étudiants inscrits au cours de Science des Données Biologiques I : inférence à l’UMONS à terminer avant le 2023-05-22 23:59:59.

Initiez votre projet GitHub Classroom

Voyez les explications dans le fichier README.md, partie II.