boxplot() dans R : comment créer BoxGraphiques dans RStudio

⚡ Résumé intelligent

BoxLa fonction `geom_boxplot()` de ggplot2 permet de créer un diagramme en boîte (box plot) en R, qui résume une distribution numérique à l'aide de sa médiane, de ses quartiles, de ses moustaches et de ses valeurs aberrantes. Ce tutoriel explique comment construire un diagramme en boîte à partir du jeu de données sur la qualité de l'air et y ajouter des couleurs, des points, des variations, des encoches et des comparaisons de groupes.

  • (I.e. Résumé en cinq chiffres : La boîte couvre le premier au troisième quartile, la ligne marque la médiane et les moustaches atteignent 1.5 fois l'écart interquartile.
  • 🧱 Syntaxe de base : ggplot(df, aes(x = group, y = value)) + geom_boxplot() produit une boîte par niveau du groupe.ping facteur.
  • 🔴 Style atypique : Les paramètres outlier.colour, outlier.shape et outlier.size contrôlent la manière dont les points situés au-delà des moustaches sont dessinés.
  • 💠 Affichage des observations : geom_jitter() déplace le chevauchementping pointant latéralement, révélant la taille de l'échantillon derrière chaque case.
  • (I.e. Entaillé Boxest la suivante: L'option notch = TRUE définit l'intervalle de confiance de la médiane, sans chevauchement.ping Les encoches indiquent une différence réelle.
  • ???? Grouping: Carteping La fonction fill à l'intérieur de geom_boxplot() divise chaque catégorie en plusieurs boîtes côte à côte.

Boxtracer un graphique dans R

boxplot() dans R

boxplot() dans R permet de visualiser la répartition des données par quartile et de détecter la présence de valeurs aberrantes. Vous pouvez utiliser l'objet géométrique geom_boxplot() de la bibliothèque ggplot2 pour dessiner un boxplot() dans R.

Nous utiliserons le jeu de données sur la qualité de l'air pour introduire la fonction boxplot() dans R avec ggplot. Ce jeu de données enregistre les mesures quotidiennes de la qualité de l'air à New York de mai à septembre 1973 et contient 153 observations. Nous utiliserons les variables suivantes :

  • Ozone : variable numérique
  • Vent : Variable numérique
  • Mois : mai à septembre. Variable numérique

Avant d'en dessiner une, il est utile de savoir exactement ce que représente chaque partie de la boîte.

Comment lire un Box Graphique : Quartiles, écart interquartile et valeurs aberrantes

Chaque élément d'un diagramme en boîte représente une valeur parmi les cinq chiffres récapitulatifs. Savoir à quoi correspond chaque élément transforme le graphique, d'un simple ornement, en un outil d'analyse.

  • Charnière inférieure : Le premier quartile, Q1. Vingt-cinq pour cent des observations se situent en dessous.
  • Ligne médiane : Le deuxième quartile. Sa position à l'intérieur de la boîte révèle une asymétrie : une ligne décalée vers le bas signifie que les données sont asymétriques à droite.
  • Charnière supérieure : le troisième quartile, Q3. Soixante-quinze pour cent des observations se situent en dessous.
  • Box la taille: l'écart interquartile, IQR = Q3 – Q1, qui contient la moitié centrale des données et constitue la mesure standard robuste de dispersion.
  • Moustaches: Elles s'étendent jusqu'à l'observation la plus extrême qui reste à moins de 1.5 fois l'écart interquartile de la charnière la plus proche. Ce ne sont pas les valeurs minimales et maximales.
  • Points au-delà des moustaches : observations signalées comme valeurs aberrantes par cette règle de l'écart interquartile de 1.5.

Deux mises en garde. Premièrement, une valeur aberrante est ici un indicateur statistique, et non une erreur : dans une distribution asymétrique comme celle de la concentration d’ozone, les valeurs élevées sont attendues et ne doivent pas être supprimées. Deuxièmement, un diagramme en boîte masque la forme de la distribution ; ainsi, deux groupes avec des boîtes identiques peuvent présenter des données sous-jacentes très différentes. L’ajout de points aléatoires, comme illustré ci-dessous, permet de pallier ce problème.

Box Graphique vs histogramme vs diagramme en violon dans R

Les trois graphiques décrivent une distribution numérique, mais chacun révèle quelque chose que les autres cachent.

Critères Box Terrain Histogramme Complot de violon
Spectacles Médiane, quartiles, valeurs aberrantes Fréquence dans chaque classe courbe de densité complète
Revplusieurs pics Non Oui Oui
Signale les valeurs aberrantes Oui, explicitement Uniquement visuel Pas directement
Comparaison de nombreux groupes Excellent Gênant Bon
Nécessite un choix de réglage Non Oui, comptage des bacs Oui, la bande passante
objet ggplot2 geom_boxplot() géom_histogramme() géom_violon()

Un compromis courant consiste à tracer un diagramme en violon avec un diagramme en boîte étroit à l'intérieur, ce qui permet de conserver la forme de la densité et le résumé par quartile dans un seul graphique. Voir le Tutoriel sur les histogrammes pour le côté tri de la comparaison.

Créer Box Terrain

Avant de commencer à créer votre premier boxplot() dans R, vous devez manipuler les données comme suit :

  • Étape 1 : Importer les données
  • Étape 2 : Supprimez les variables inutiles
  • Étape 3 : Convertir le mois en un facteur ordonné
  • Étape 4 : Créez une nouvelle variable catégorielle divisant chaque mois en trois parties : Début, Milieu et Fin
  • Étape 5 : Supprimer les observations manquantes

Toutes ces étapes sont effectuées avec dplyr et l'opérateur de pipeline %>%.

library(dplyr)
library(ggplot2)
# Step 1
data_air <- airquality %>%

#Step 2
select(-c(Solar.R, Temp)) %>%

#Step 3
mutate(Month = factor(Month, order = TRUE, labels = c("May", "June", "July", "August", "September")), 
       
#Step 4 
day_cat = factor(ifelse(Day < 10, "Begin", ifelse(Day < 20, "Middle", "End"))))

Une bonne pratique consiste à vérifier la structure des données avec la fonction glimpse().

glimpse(data_air)

Sortie :

## Observations: 153
## Variables: 5
## $ Ozone   <int> 41, 36, 12, 18, NA, 28, 23, 19, 8, NA, 7, 16, 11, 14, ...
## $ Wind    <dbl> 7.4, 8.0, 12.6, 11.5, 14.3, 14.9, 8.6, 13.8, 20.1, 8.6...
## $ Month   <ord> May, May, May, May, May, May, May, May, May, May, May,...
## $ Day     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,...
## $ day_cat <fctr> Begin, Begin, Begin, Begin, Begin, Begin, Begin, Begi...

Les fichiers Ozone et Solar.R contiennent tous deux des valeurs NA. Comme la fonction geom_boxplot() les ignorerait silencieusement et afficherait un avertissement, il est préférable de les supprimer explicitement.

# Step 5
data_air_nona <-data_air %>% na.omit()	

Boîte à moustaches de base

Représentez maintenant graphiquement la distribution de l'ozone par mois.

# Store the graph
box_plot <- ggplot(data_air_nona, aes(x = Month, y = Ozone))
# Add the geometric object box plot
box_plot +
    geom_boxplot()

Code Explication

  • Stockez le graphique pour une utilisation ultérieure
    • box_plot : le graphique de base est stocké dans l’objet box_plot, ce qui vous permet d’ajouter des couches ultérieurement sans avoir à répéter l’appel complet.
  • Ajouter l'objet géométrique
    • Vous transmettez l'ensemble de données data_air_nona à ggplot boxplot.
    • À l’intérieur de l’argument aes(), vous ajoutez l’axe des x et l’axe des y.
    • Le signe + signifie que vous voulez que R continue à lire le code. Cela rend le code plus lisible en le cassant.
    • Utilisez geom_boxplot() pour créer une boîte à moustaches

Sortie :

Fonction Plug & Play Box Terrain

Changer le côté du graphique

Vous pouvez inverser le côté du graphique.

box_plot +
  geom_boxplot()+
  coord_flip()

Code Explication

  • box_plot : Vous utilisez le graphique que vous avez stocké. Cela évite de réécrire tous les codes à chaque fois que vous ajoutez de nouvelles informations au graphique.
  • geom_boxplot() : trace les boîtes et les moustaches
  • coord_flip() : Retourner le côté du graphique

Sortie :

Changer le côté du graphique

Changer la couleur de la valeur aberrante

Vous pouvez modifier la couleur, la forme et la taille des valeurs aberrantes.

box_plot +
    geom_boxplot(outlier.colour = "red",
        outlier.shape = 2,
        outlier.size = 3) +
    theme_classic()

Code Explication

  • outlier.colour=”red” : Contrôler la couleur des valeurs aberrantes
  • outlier.shape=2 : modifiez la forme de la valeur aberrante. 2 fait référence au triangle
  • outlier.size=3 : Modifie la taille du triangle. Plus le nombre est grand, plus les marqueurs sont grands.

Sortie :

Changer la couleur de la valeur aberrante

Ajouter une statistique récapitulative

Vous pouvez superposer une statistique récapitulative telle que la moyenne du groupe, que le diagramme en boîte lui-même n'affiche pas.

box_plot +
    geom_boxplot() +
    stat_summary(fun.y = mean,
        geom = "point",
        size = 3,
        color = "steelblue") +
    theme_classic()

Code Explication

  • La fonction stat_summary() ajoute une statistique calculée au-dessus du diagramme en boîte.
  • L'argument `fun` détermine la statistique renvoyée. Ici, il s'agit de la moyenne. Notez que les anciennes versions de code utilisent `fun.y`, fonction dépréciée par ggplot2 depuis la version 3.3.0.
  • Remarque : D'autres statistiques sont disponibles telles que min et max. Plusieurs statistiques peuvent être affichées dans le même graphique
  • geom = « point » : tracez la moyenne avec un point
  • size=3 : Taille du point
  • color =”steelblue” : Couleur des points

Sortie :

Ajouter une statistique récapitulative

Box Tracer avec des points

Ensuite, ajoutez un calque de nuage de points par-dessus les boîtes. Chaque point représente une observation, ce qui permet de visualiser la taille de l'échantillon derrière chaque boîte.

box_plot +
    geom_boxplot() +
    geom_dotplot(binaxis = 'y',
        dotsize = 1,
        stackdir = 'center') +
    theme_classic()

Code Explication

  • La fonction geom_dotplot() dessine un point par observation, empilé dans chaque intervalle.
  • binaxis='y' : change la position des points le long de l'axe y. Par défaut, l'axe des x
  • dotsize=1 : Taille des points
  • stackdir='center' : Façon d'empiler les points : Quatre valeurs :
    • « vers le haut » (par défaut),
    • "vers le bas"
    • "centre"
    • « centre entier »

Sortie :

Box Tracer avec des points

Contrôle Esthétique du Box Terrain

Changer la couleur de la boîte

Vous pouvez changer les couleurs du groupe.

ggplot(data_air_nona, aes(x = Month, y = Ozone, color = Month)) +
    geom_boxplot() +
    theme_classic()

Code Explication

  • Les couleurs des groupes sont contrôlées dans la carte aes()pingVous pouvez utiliser la propriété `color=Month` pour modifier la couleur du diagramme en boîte à moustaches en fonction des mois.

Sortie :

Changer la couleur du Box

Box tracé avec plusieurs groupes

Il est également possible d'ajouter plusieurs groupes. Vous pouvez visualiser la différence de qualité de l'air selon le jour de la mesure.

ggplot(data_air_nona, aes(Month, Ozone)) +
    geom_boxplot(aes(fill = day_cat)) +
    theme_classic()

Code Explication

  • La carte aes()ping l'objet géométrique contrôle les groupes à afficher (cette variable doit être un facteur)
  • aes(fill= day_cat) permet de créer trois cases pour chaque mois sur l'axe des x

Sortie :

Box Tracer avec plusieurs groupes

Box Tracer avec des points instables

Une autre façon de représenter les observations individuelles consiste à utiliser des points décalés. Le décalage est généralement privilégié lorsqu'un axe des abscisses catégoriel entraîne la présence de nombreux points à la même position.

Cette méthode évite le chevauchementping des données discrètes.

box_plot +
    geom_boxplot() +
    geom_jitter(shape = 15,
        color = "steelblue",
        position = position_jitter(width = 0.21)) +
    theme_classic()

Code Explication

  • La fonction geom_jitter() ajoute un petit déplacement aléatoire à chaque point pour créer un chevauchement.ping Les valeurs deviennent visibles.
  • shape=15 change la forme des points. 15 représente les carrés
  • color = « steelblue » : Change la couleur du point
  • position = position_jitter(width = 0.21) : contrôle le décalage latéral des points, mesuré en unités de l’axe des abscisses. La valeur par défaut est de 40 % de l’espacement entre les catégories.

Sortie :

Box Tracer avec des points instables

Vous pouvez voir la différence entre le premier graphique avec la méthode du jitter et le second avec la méthode des points.

box_plot +
    geom_boxplot() +
    geom_point(shape = 5,
        color = "steelblue") +
    theme_classic()

Box Tracer avec des points instables

Entaillé Box Terrain

Une fonctionnalité intéressante de geom_boxplot() est une fonction de boîte à moustaches encochée dans R. Le diagramme d'encoche rétrécit la boîte autour de la médiane. L’objectif principal d’un diagramme en boîte crantée est de comparer l’importance de la médiane entre les groupes. Il existe des preuves solides que deux groupes ont des médianes différentes lorsque les encoches ne se chevauchent pas. Une encoche est calculée comme suit :

Entaillé Box Terrain

Ici, IQR représente l'écart interquartile et n le nombre d'observations dans le groupe. L'encoche couvre approximativement l'intervalle de confiance à 95 % de la médiane.

box_plot +
    geom_boxplot(notch = TRUE) +
    theme_classic()

Code Explication

  • geom_boxplot(notch = TRUE) : ​​trace le diagramme en boîte avec des encoches autour de la médiane

Sortie :

Entaillé Box Terrain

Comment ajouter des titres, des étiquettes et des couleurs personnalisées à un Box Tracer un graphique dans R

Les graphiques ci-dessus utilisent les paramètres par défaut de ggplot2, qui reprennent les noms des variables directement depuis le cadre de données. Un graphique publiable nécessite des étiquettes lisibles et une palette de couleurs appropriée.

Titres et étiquettes des axes. Un appel à labs() définit chaque élément de texte :

box_plot +
    geom_boxplot(fill = "coral", alpha = 0.7) +
    labs(title = "Ozone concentration by month",
        subtitle = "New York, May to September 1973",
        x = "Month",
        y = "Ozone (parts per billion)",
        caption = "Source: airquality dataset") +
    theme_classic()

Choisir vos propres couleurs. Utilisez scale_fill_manual() lorsque le remplissage est mappé à l'intérieur de aes(), et scale_colour_manual() lorsque la couleur est :

ggplot(data_air_nona, aes(x = Month, y = Ozone, fill = Month)) +
    geom_boxplot() +
    scale_fill_manual(values = c("#0e9cd1", "coral", "#7dc27d", "#c9a227", "grey60")) +
    theme_classic() +
    theme(legend.position = "none")

La légende est désactivée ici car l'axe des abscisses indique déjà le nom de chaque mois ; la répéter gaspillerait donc de l'espace.

Réorganiser les boîtes. Le niveau du facteur détermine l'ordre sur l'axe. Le facteur « Mois » étant ordonné, il est déjà classé chronologiquement. Pour un facteur non ordonné, triez plutôt par la médiane.

ggplot(data_air_nona, aes(x = reorder(Month, Ozone, FUN = median), y = Ozone)) +
    geom_boxplot() +
    theme_classic()

Enregistrement du graphique. La fonction ggsave() enregistre le dernier graphique sur le disque à une résolution que vous contrôlez :

ggsave("ozone_boxplot.png", width = 8, height = 5, dpi = 300)

Box Graphique en R : Code Références

Le tableau ci-dessous répertorie l'appel ggplot2 pour chaque variante de diagramme en boîte présentée ci-dessus :

Objectif Code
Boîte à moustaches de base
ggplot(df, aes(x = x1, y = y)) + geom_boxplot()
Inverser l'orientation
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + coord_flip()
Boîte à moustaches entaillée
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(notch = TRUE)
Box tracé avec des points instables
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + geom_jitter(position = position_jitter(0.21))
Colorier par groupe
ggplot(df, aes(x = x1, y = y, color = x1)) + geom_boxplot()
Plusieurs groupes par catégorie
ggplot(df, aes(x = x1, y = y)) + geom_boxplot(aes(fill = x2))
Ajouter la moyenne du groupe
ggplot(df, aes(x = x1, y = y)) + geom_boxplot() + stat_summary(fun = mean, geom = "point")

Vérifiez également: - Tutoriel R pour les débutants : apprendre le langage de programmation R

FAQ

Les moustaches s'étendent jusqu'à la valeur extrême située à moins de 1.5 fois l'écart interquartile du quartile le plus proche. Elles ne correspondent ni au minimum ni au maximum ; toute valeur au-delà est considérée comme aberrante.

Pas automatiquement. La règle de l'écart interquartile de 1.5 est une convention, pas une preuve d'erreur. Il faut d'abord examiner chaque point : des données asymétriques, comme les mesures d'ozone, produisent naturellement des valeurs élevées qui sont des mesures authentiques.

Chevauchementping Les encoches suggèrent qu'il n'existe pas de preuve convaincante que les deux médianes diffèrent. Absence de chevauchementping Les encoches indiquent une différence réelle probable, équivalente approximativement à une comparaison avec un niveau de confiance de 95 %.

Box Les graphiques constituent une étape exploratoire standard avant l'entraînement : ils révèlent l'asymétrie, les valeurs aberrantes et les différences d'échelle des caractéristiques entre les classes. Les équipes les utilisent également pour comparer la précision du modèle sur différents plis de validation croisée.

Oui. Les assistants IA peuvent expliquer les erreurs telles qu'un axe des abscisses continu produisant une seule boîte, et suggérer la fonction aes() appropriée.ping, et signalez les arguments obsolètes comme fun.y. Réexécutez toujours le code corrigé sur vos propres données.

Résumez cet article avec :