Bienvenue
Les boites à moustaches (ou boxplots en anglais) montrent la relation entre une variable continue et une variable catégorielle. Les graphiques de comptage (ou counts en anglais) affichent la relation entre deux variables catégorielles. Dans ce module, vous apprendrez à utiliser les deux. Vous apprendrez comment :
Créer et interpréter des boites à moustaches
Faire pivoter les boites à moustaches en inversant le système de coordonnées de votre graphique
Utiliser des diagrammes en violon et des graphiques de ressemblance, deux geoms qui sont similaires aux boxplots
Faire et interpréter les graphiques de comptage
Le module est adapté du livre R for Data Science de Hadley Wickham et Garrett Grolemund, publié par O’Reilly Media, Inc. 2016, ISBN : 9781491910399. Vous pouvez acheter le livre sur shop.oreilly.com.
Le module utilise les packages {ggplot2} et {dplyr}, qui ont été préchargés.
Boites a moustaches (boxplots)
Introduction
Exercice 1 - Boites à moustaches

Comment créer une boite à moustaches
Pour créer une boite à moustaches avec {ggplot2}, ajoutez
geom_boxplot() au template {ggplot2}. Par
exemple, le code ci-dessous utilise des boites à moustaches pour
afficher la relation entre les variables class et
hwy du jeu de données mpg, qui est fourni avec
{ggplot2}.
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_boxplot()
Catégoriel et continu
geom_boxplot() s’attend à ce que l’axe \(y\) soit continu, mais accepte des
variables catégorielles sur l’axe \(x\). Par exemple, ici class
est une variable catégorielle. geom_boxplot() va
automatiquement tracer une boite à moustaches séparée pour chaque valeur
de \(x\). Cela permet de comparer les
distributions des points avec différentes valeurs de \(x\).

Exercice 2 - Interprétation

Exercice 3 - Créer une boite à moustaches
Recréez la boite à moustaches ci-dessous avec le jeu de données
diamonds.

ggplot(data = diamonds) +
aes(x = cut, y = price) +
geom_boxplot()
Outliers
Vous pouvez modifier l’aspect des valeurs aberrantes dans votre boite
à moustaches avec les paramètres outlier.color,
outlier.fill, outlier.shape,
outlier.size, outlier.stroke, et
outlier.alpha (le paramètre outlier.shape
prend un nombre de 1 à 25).
Malheureusement, vous ne pouvez pas dire à
geom_boxplot() d’ignorer complètement les valeurs
aberrantes, mais vous pouvez faire disparaître les valeurs aberrantes en
fixant outlier.alpha = 0. Essayez-le dans le graphique
ci-dessous.
ggplot(data = diamonds) +
aes(x = cut, y = price) +
geom_boxplot(outlier.shape = 24,
outlier.fill = "white",
outlier.stroke = 0.25)
ggplot(data = diamonds) +
aes(x = cut, y = price) +
geom_boxplot(outlier.alpha = 0)
Paramètres esthétiques
Les boites à moustaches reconnaissent les paramètres esthétiques suivants : alpha, color, fill, group, linetype, shape, size, et weight.
Parmi ces éléments, group est peut-être le plus couramment
utilisé. Examinez le graphique ci-dessous. Il utilise une variable
continue sur l’axe \(x\). En
conséquence, geom_boxplot() n’est pas sûr de savoir comment
diviser les données en catégories : il regroupe toutes les données dans
un seul boxplot. Le résultat révèle peu de choses sur la relation entre
le carat et le prix.

Dans les prochaines sections, nous utiliserons group pour construire un graphique plus instructif.
Comment “couper” une variable continue
{ggplot2} propose trois fonctions d’aide que vous pouvez utiliser
pour diviser une variable continue en catégories. Chacune prend un
vecteur continu et renvoie un vecteur catégoriel qui assigne chaque
valeur à une classe. Par exemple, cut_interval() découpe un
vecteur en n classes de longueur égale.
continuous_vector <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
continuous_vector
## [1] 1 2 3 4 5 6 7 8 9 10
cut_interval(continuous_vector, n = 3)
## [1] [1,4] [1,4] [1,4] [1,4] (4,7] (4,7] (4,7] (7,10] (7,10] (7,10]
## Levels: [1,4] (4,7] (7,10]
Les fonctions cut
Les trois fonctions cut sont
cut_interval()qui construitnclasses avec une étendue égalecut_number()qui construitnclasses avec (approximativement) un nombre égal d’observationscut_width()qui construit des classes avec la largeurwidth.
Utilisez l’une des trois fonctions ci-dessous pour découper
continuous_vector en classes de largeur
width = 2.
## [1] 1 2 3 4 5 6 7 8 9 10
continuous_vector
[1] 1 2 3 4 5 6 7 8 9 10
cut_width(continuous_vector, width = 2)
Exercice 4 - Appliquer une fonction de coupure en intervalles
Lorsque vous définissez le paramètre esthétique \(group\) d’une boite à moustaches,
geom_boxplot() va dessiner une boite à moustaches séparée
pour chaque collection d’observations qui ont la même valeur pour le
vecteur que vous mettez dans \(group\).
Cela signifie que nous pouvons diviser notre graphique
carat en utilisant pour \(group\) le résultat d’une fonction de
coupure, comme dans le code ci-dessous. Étudiez le code, puis
modifiez-le pour créer une boite à moustaches séparée pour chaque
intervalle de 0,25 carat.
ggplot(data = diamonds) +
aes(x = carat, y = price, group = cut_interval(carat, n = 2)) +
geom_boxplot()
Warning: Orientation is not uniquely specified when both the x and y aesthetics are
continuous. Picking default orientation 'x'.
ggplot(data = diamonds) +
aes(x = carat, y = price, group = cut_width(carat, width = 0.25)) +
geom_boxplot()
coord_flip()
geom_boxplot() s’attend toujours à ce que la variable
catégorielle apparaisse sur l’axe \(x\), ce qui crée des boites à moustaches
verticales. Mais que faire si vous souhaitez créer des boites à
moustaches horizontales, comme dans le graphique ci-dessous ?

Vous pouvez faire cela en ajoutant + coord_flip() à
votre appel de graphique.
Exercice 5 - boites à moustaches horizontales
Modifiez le code ci-dessous pour orienter les boites à moustaches horizontalement.
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_boxplot()
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_boxplot() +
coord_flip()
Geoms similaires
geom_dotplot()
Les boites à moustaches sont un moyen rapide de représenter une distribution, mais ils laissent derrière eux beaucoup d’informations. {ggplot2} complète les boites à moustaches avec deux geoms qui montrent plus d’informations.
Le premier est geom_dotplot(). Il permet de créer des
graphiques de ressemblance. Si vous mettez le paramètre
binaxis de geom_dotplot() à "y",
geom_dotplot() se comporte comme
geom_boxplot(), et affiche une distribution séparée pour
chaque groupe de données.
Ici, chaque groupe fonctionne comme un histogramme vertical. Ajoutez
le paramètre stackdir = "center" puis relancez le code.
Pouvez-vous interpréter les résultats ?
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_dotplot(binaxis = "y",
dotsize = 0.5,
binwidth = 1)
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_dotplot(binaxis = "y",
dotsize = 0.5,
binwidth = 1,
stackdir = "center")
geom_violin()
geom_violin() fournit une seconde alternative à
geom_boxplot(). Un diagramme en violon utilise les densités
pour dessiner une version lissée du graphique centré que vous venez de
construire.
Chaque “violon” couvre l’ensemble des données. Le violon est épais là où il y a beaucoup de valeurs, et mince là où il y en a peu.
Convertissez le tracé ci-dessous pour passer d’une boite à moustaches à un diagramme en violon. Notez que les diagrammes en violon n’utilisent pas les paramètres que vous avez vus pour les graphiques de ressemblance.
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_boxplot()
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_violin()
Exercice 7 - Diagrammes en violon
Vous pouvez encore améliorer les diagrammes en violon en ajoutant le
paramètre draw_quantiles = c(0.25, 0.5, 0.75). Cela fera en
sorte que {ggplot2} trace des lignes horizontales à travers les violons
aux 25e, 50e et 75e percentiles. Ce sont les trois mêmes lignes
horizontales qui sont affichées dans un boxplot (les 25e et 75e
percentiles sont les limites de la boite, le 50e percentile est la
médiane).
Ajoutez ces lignes au diagramme en violon ci-dessous.
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_violin()
ggplot(data = mpg) +
aes(x = class, y = hwy) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75))
Comptages
geom_count()
Les boites à moustaches constituent un moyen efficace d’explorer l’interaction entre une variable continue et une variable catégorielle. Mais qu’en est-il si vous avez deux variables catégorielles ?
Vous pouvez voir comment les observations sont réparties entre deux
variables catégorielles avec geom_count().
geom_count() affiche un point à chaque combinaison de
valeurs des deux variables. La taille du point est mise en
correspondance avec le nombre d’observations qui ont cette combinaison
de valeurs. Les combinaisons rares auront de petits points, les
combinaisons fréquentes auront de gros points.

Exercice 8 - Graphiques de comptages
Utilisez geom_count() pour afficher l’interaction des
variables cut et clarity du jeu de données
diamonds.
ggplot(data = diamonds) +
aes(x = cut, y = clarity) +
geom_count()
count
Vous pouvez utiliser la fonction count() du package
{dplyr} pour calculer les valeurs de comptage affichées
par geom_count(). Pour utiliser la fonction
count(), passez-lui un jeu de données et ensuite les noms
d’aucune ou plusieurs variables du jeu de données. count()
renverra un nouveau tableau qui liste le nombre d’observations qui
apparaissent avec chaque combinaison possible des variables
spécifiées.
Ainsi, par exemple, le code ci-dessous renvoie les comptages que vous avez visualisés dans l’exercice 8.
diamonds |>
count(cut, clarity)
Heatmaps
Les heatmaps, parfois aussi appelées cartes de chaleur, fournissent une deuxième façon de visualiser la relation entre deux variables catégorielles. Elles fonctionnent comme des graphiques de comptage, mais utilisent une couleur de remplissage (au lieu d’une taille de point) pour afficher le nombre d’observations dans chaque combinaison.
Comment construire un heatmap ?
{ggplot2} ne fournit pas de fonction geom pour les heatmaps, mais
vous pouvez en construire en utilisant les résultats de
count() avec geom_tile().
Pour ce faire, définissez les paramètres esthétiques x et y de
geom_tile() aux variables que vous passez à
count(). Ensuite, utilisez la variable n
calculée par count() pour le paramètre esthétique de
remplissage (fill). Le graphique ci-dessous affiche les mêmes comptages
que le graphique de l’exercice 8.
diamonds |>
count(cut, clarity) |>
ggplot() +
aes(x = cut, y = clarity, fill = n) +
geom_tile()

Exercice 9 - Construire une heatmap
Pratiquez la méthode ci-dessus en recréant la heatmap ci-dessous.

diamonds |>
count(color, cut) |>
ggplot() +
aes(x = color, y = cut, fill = n) +
geom_tile()
Récapitulatif
Les boites à moustaches (boxplots), les graphiques de ressemblance (dotplots) et les diagrammes en violon (violin plots) permettent de rechercher les relations entre une variable continue et une variable catégorielle. Les diagrammes en violon transmettent rapidement beaucoup d’informations, mais les boites à moustaches ont une longueur d’avance en termes de popularité — elles étaient faciles à construire lorsque les statisticiens devaient dessiner des graphiques à la main.
Dans n’importe lequel de ces graphiques, recherchez les
distributions, les étendues de valeurs, les médianes, l’asymétrie ou
tout autre élément qui attire votre attention en changeant de manière
inhabituelle d’une distribution à l’autre. Souvent, vous pouvez rendre
les graphiques encore plus révélateurs avec la fonction
fct_reorder() du package {forcats} (nous attendrons que
vous ayez utilisé les facteurs pour en savoir plus).
Les diagrammes de comptage et les heatmaps (cartes de chaleur) vous aident à voir comment les observations sont distribuées à travers les interactions de deux variables catégorielles.