Module 2 - Plan d’apprentissage
STT-1100 Introduction à la science des données
Objectifs du module
À la fin de ce module, vous devriez être capable de
Utiliser GitHub via RStudio pour clôner un dépôt et faire des commit et des push.
Lire un fichier
xlsdans RStudio.Gérer et transformer des données numériques à l’aide de
dplyr(glimpse,select,mutate,filter).Calculer et interpréter des statistiques descriptives pour des variables numériques (
moyenne,médiane,écart-type,variance,étendue,quantiles), incluant pour des sous-groupes de données.Visualiser des variables numériques avec
ggplot2(histogramme,boite à moustache,nuage de points) et interpréter les graphiques obtenus.Produire et interpréter des graphiques comparant la distribution de variables continues entre des groupes (
histogrammes superposés,diagrammes en boites juxtaposés,densités empilées (ridge plots),visualisation en facettes).Utiliser les options de
ggplot2pour améliorer la qualité de graphiques (titres, légendes, axes lisibles, cohérence graphique,facets).
Lectures initiales
Comme le module 2 est étallé sur 2 semaines, il y a un peu plus de lecture, pour vous préparer à la première partie du module vous pouvez survoler les lectures et y revenir de facon plus précise en préparation de la partie 2.
On commence par quelques chapitres dans le fameux R4DS de Hadley Wickham et Garrett Grolemund:
Data visualization
Découvrez comment utiliserggplot2pour créer vos premiers graphiques. Cette introduction à la visualisation de données vous montre comment représenter efficacement des variables numériques et comment personnaliser vos graphiques.Data transformation
Apprenez à transformer vos jeux de données avecdplyr: filtrer, trier, créer de nouvelles colonnes et résumer l’information. Ce chapitre pose les bases de la manipulation de données dans le style du tidyverse.Exploratory Data Analysis (EDA)
Explorez vos données pour en dégager des tendances, détecter des valeurs extrêmes et formuler des hypothèses. Ce chapitre présente des techniques simples mais puissantes d’analyse visuelle et statistique.Tidy data (spreadsheets)
Découvrez comment organiser vos données pour les rendre exploitables. Ce chapitre aborde le concept de “données propres” et vous montre comment reconnaître les structures de table communes dans des fichiers Excel ou CSV.
📐 Guide de style du tidyverse
📗 Un nouveau livre de référence
Dans ce module, nous introduisons un second ouvrage de référence : Introduction to Modern Statistics (par Mine Çetinkaya-Rundel et Johanna Hardin).
Note : on abrègera souvent par IMS
Ce livre, également accessible gratuitement en ligne, propose une approche moderne et appliquée de la statistique. Il met l’accent sur la visualisation, l’intuition statistique et les bonnes pratiques en science des données. Il constitue un excellent complément à R4DS, notamment pour approfondir les aspects statistiques des analyses exploratoires.
- Introduction to Modern Statistics – Chapitre 5 : Exploring numerical data
Dans ce chapitre, vous apprendrez à explorer des données numériques à l’aide d’outils statistiques comme les résumés numériques, les histogrammes, et les boxplots. Il propose une vision claire et rigoureuse de la distribution des données.
Aventure
Défi
Voici le défi que vous devrez réaliser pour le module 2. Il est divisé en deux parties :
Partie 1 : Compléter votre journal de bord et le soumettre sur GitHub. Dix (10) journaux de bord seront sélectionnés au hasard et feront l’objet d’une évaluation sommative.
Partie 2 : Soumettre sur GitHub le rapport d’analyse de données que la Dre Adélie pourra utiliser dans le cadre de sa demande de subvention.
Exercices de consolidation
Pour mettre en pratique les apprentissages de ce module, vous trouverez ci‑dessous 13 exercices couvrant l’ensemble des notions du module 2 (ggplot2, dplyr, EDA, données tidy, bonnes pratiques de style et statistique descriptive façon IMS).
Nous utiliserons principalement le jeu de données mpg prevenant de la library ggplot2 (performances de voitures commercialisées aux États‑Unis, 1999‑2008). Lorsque d’autres jeux de données sont utilisés, ils sont précisés dans l’énoncé.
Jeu de données mpg – Description des variables
| Variable | Type | Description (français) |
|---|---|---|
manufacturer |
facteur | Constructeur automobile (ex. toyota, audi). |
model |
facteur | Modèle spécifique du véhicule (ex. corolla, a4). |
displ |
numérique | Cylindrée du moteur en litres (L). |
year |
entier | Année du modèle (1999 ou 2008). |
cyl |
entier | Nombre de cylindres du moteur. |
trans |
facteur | Type de transmission : automatique (auto) ou manuelle (manual) ; suffixe = nombre de rapports. |
drv |
facteur | Type de transmission finale : traction avant (f), propulsion (r) ou intégrale (4). |
cty |
numérique | Consommation ville en miles par gallon (MPG). |
hwy |
numérique | Consommation autoroute en miles par gallon (MPG). |
fl |
facteur | Type de carburant : c (CNG), d (diesel), e (éthanol), p (premium), r (régulier). |
class |
facteur | Catégorie de véhicule : compact, suv, minivan, etc. |
ℹ️ Source : base Fuel Economy de l’EPA, incluse dans ggplot2 et documentée avec
?mpg.
Exercice 1 — Premier graphique (visualisation rapide)
Contexte : vous découvrez la relation entre cylindrée (displ) et consommation sur autoroute (hwy) dans mpg. Tracez un nuage de points.
library(tidyverse)
mpg %>%
ggplot(aes(displ, hwy)) +
geom_point() +
labs(
title = "Consommation autoroute vs cylindrée",
x = "Cylindrée (L)",
y = "MPG autoroute"
)Exercice 2 — Ajout de couleur et thème (esthétique)
Contexte : améliorer la lisibilité du graphique précédent en distinguant les points par catégorie de véhicule (class) et en appliquant un thème minimaliste.
mpg %>%
ggplot(aes(displ, hwy, colour = class)) +
geom_point(alpha = 0.8, size = 2) +
theme_minimal() +
labs(
title = "Consommation selon la catégorie",
colour = "Catégorie"
)Exercice 3 — Filtrer avec dplyr (extraction ciblée)
Contexte : la responsable marketing de Toyota souhaite connaître la dispersion de ses modèles. Sélectionnez uniquement les voitures Toyota et affichez model, displ, hwy.
toyota <- mpg %>%
filter(manufacturer == "toyota") %>%
select(model, displ, hwy)
toyotaExercice 4 — Variable dérivée et résumé (statistiques descriptives)
Contexte : on définit une mesure d’efficacité globale efficiency = hwy / cty. Calculez, par catégorie (class), la moyenne et l’écart‑type de cette nouvelle variable.
mpg %>%
mutate(efficiency = hwy / cty) %>%
group_by(class) %>%
summarise(
eff_mean = mean(efficiency, na.rm = TRUE),
eff_sd = sd(efficiency, na.rm = TRUE)
)Exercice 5 — Histogramme et densité (distribution)
Contexte : la répartition de la cylindrée vous intrigue. Tracez l’histogramme de displ (largeur de classe 0,5 L) et superposez la densité.
mpg %>%
ggplot(aes(displ)) +
geom_histogram(binwidth = 0.5, fill = "steelblue", colour = "white") +
geom_density(aes(y = ..count.. * 0.5), linewidth = 1) +
labs(x = "Cylindrée (L)")Exercice 6 — Valeur extrême (repérage d’outliers)
Contexte : un magazine veut savoir quel modèle possède la meilleure consommation autoroute. Trouvez‑le et affichez manufacturer, model, year, hwy.
mpg %>%
filter(hwy == max(hwy)) %>%
select(manufacturer, model, year, hwy)Exercice 7 — Bonnes pratiques #1 (style tidyverse)
Contexte : vous recevez un script bâclé. Réécrivez‑le pour qu’il respecte le guide de style tidyverse.
Tout d’abord executer le code pour voir ce que ca donne. > C’est l’ancienne facon de faire un graphique avec
base R.Reproduisez le graphique avec
ggplot2en respectant les bonnes pratiques de style.
plot(mpg$displ,mpg$hwy,col=as.factor(mpg$drv));title("plot")mpg %>%
ggplot(aes(displ, hwy, colour = drv)) +
geom_point() +
labs(
title = "Consommation autoroute vs cylindrée",
x = "Cylindrée (L)",
y = "MPG autoroute",
colour = "Transmission"
)Exercice 8 — Bonnes pratiques #2 (structure de script)
Contexte : créez un fichier analyse_mpg.R avec :
un en‑tête clair (auteur, date) ;
chargement de
tidyverse;un pipeline qui calcule la moyenne de
hwyparclasset l’enregistre dansmean_hwy.
# analyse_mpg.R – A. Nicosia
# Date : 2025‑05‑20
library(tidyverse)
mean_hwy <- mpg %>%
group_by(class) %>%
summarise(mean_hwy = mean(hwy, na.rm = TRUE))Exercice 9 — Données « tidy » (pivot_longer)
Contexte : vous passez des ventes annuelles d’un format large à long pour faciliter les visualisations.
sales <- tibble(
brand = c("A", "B"),
sales_2023 = c(120, 95),
sales_2024 = c(150, 110)
)sales_long <- sales %>%
pivot_longer(
cols = starts_with("sales_"),
names_to = "year",
names_prefix = "sales_",
values_to = "units"
)
sales_longExercice 10 — Sommaire numérique (cinq‑nombre)
Contexte : résumé statistique rapide du MPG en ville (cty).
fivenum(mpg$cty)
# ou
summary(mpg$cty)Exercice 11 — Boxplot par catégorie (comparaison de groupes)
Contexte : visualiser la distribution de hwy par class, classes triées par médiane décroissante.
mpg %>%
ggplot(aes(reorder(class, hwy, median, na.rm = TRUE), hwy)) +
geom_boxplot(fill = "orange") +
coord_flip() +
labs(
x = "Catégorie (triée)",
y = "MPG autoroute"
)Exercice 12 — Facettes (distribution par transmission)
Contexte : comparer les distributions de cylindrée (displ) selon le type de transmission (drv).
mpg %>%
ggplot(aes(displ)) +
geom_histogram(binwidth = 0.5, fill = "darkseagreen") +
facet_wrap(~ drv, nrow = 1) +
labs(x = "Cylindrée (L)")Exercice 13 — Analyse statistique complète (inspiration IMS)
Contexte : comme dans le chapitre 5 d’Introduction to Modern Statistics, vous devez explorer en profondeur la variable hwy.
- Calculez la moyenne, l’écart‑type, la médiane, l’IQR et le nombre d’observations.
- Créez un histogramme de
hwyavec la densité superposée. - Ajoutez un boxplot (horizontal) sous l’histogramme.
- Interprétez : distribution symétrique ou asymétrique ? valeurs extrêmes ? que peut‑on conclure sur l’efficacité énergétique des voitures ?
# 1. Statistiques
mpg %>%
summarise(
n = n(),
mean_hwy = mean(hwy),
sd_hwy = sd(hwy),
median_hwy = median(hwy),
IQR_hwy = IQR(hwy)
)
# 2‑3. Histogramme + boxplot
library(patchwork) # pour l’assemblage (facultatif)
p1 <- mpg %>%
ggplot(aes(hwy)) +
geom_histogram(binwidth = 2, fill = "steelblue", colour = "white") +
geom_density(aes(y = ..count.. * 2), linewidth = 1) +
labs(title = "Distribution de MPG autoroute")
p2 <- mpg %>%
ggplot(aes(y = hwy)) +
geom_boxplot(fill = "orange", width = 0.4) +
theme_void()
p1 / p2 # patchwork empile les deux graphiquesInterprétation : la distribution est légèrement asymétrique à droite ; quelques véhicules très efficaces (> 40 MPG) apparaissent comme valeurs extrêmes. Globalement, la médiane autour de 24 MPG indique qu’une majorité de voitures reste modérément efficace.