Module 5 - Plan d’apprentissage
STT-1100 Introduction à la science des données
🎯 Objectifs du module
À la fin de ce module, vous devriez être capable de :
- Gérer et analyser des variables temporelles à l’aide de
lubridate. - Étudier la relation entre deux variables à l’aide de graphiques et de statistiques descriptives, notamment à l’aide du coefficient de corrélation.
- Calculer et interpréter la corrélation entre deux variables numériques.
- Rédiger un rapport d’analyse exploratoire des données (EDA) mettant en évidence des tendances et des motifs dans les données.
📚 Lectures
Dans ce module, nous allons explorer les concepts de base de l’analyse exploratoire des données (EDA) et de la manipulation des dates et heures. Voici quelques lectures initiales pour vous préparer :
R for Data Science – EDA
Ce chapitre vous introduit à l’analyse exploratoire des données (EDA) avec le packageggplot2.
R for Data Science – Dates and Times
Ce chapitre vous introduit à la manipulation des dates et heures avec le packagelubridate.
Vous pouvez aussi aller réviser le chapitre suivant:
- R for Data Science – Tidy Data
Ce chapitre vous rappelle les principes de la structure des données « tidy » et comment les appliquer avectidyr.
Dans le libre IMS:
- Introduction to modern statistics – Applications: Explore
Ce chapitre vous introduit aux bonnes pratiques de modélisation exploratoire des données.
Aventure
🎯 Défi — Analyser les retards pour soutenir les décisions
Dans ce défi, vous devez remettre un rapport professionnel destiné à votre superviseure, Dr Sofia Martínez, afin de répondre aux trois grandes questions stratégiques posées dans l’aventure. Votre rôle est de fournir une analyse claire, appuyée sur des visualisations pertinentes et des interprétations rigoureuses.
📌 Ce que vous devez faire
À partir des données fusionnées fournies (flights_merged_2023.rds), vous devez :
- Explorer les variables temporelles (
date,jour_semaine,moment_journee, etc.) et les préparer si besoin. - Répondre aux trois grandes questions de Sofia :
- Quels sont les créneaux horaires à éviter pour réduire les retards ?
- Dans quelle mesure la météo est-elle responsable des retards ?
- Les avions plus âgés sont-ils plus souvent en retard ou annulés ?
- Pour chaque question :
- effectuez une analyse exploratoire pertinente ;
- produisez au moins une visualisation claire ;
- rédigez une interprétation concise de vos résultats.
✏️ Ce que le rapport doit contenir
Votre fichier rapport.qmd doit inclure :
- Une courte introduction qui rappelle le contexte (travail à JFK, rôle avec Sofia, etc.).
- Une section pour chaque question du brief.
- Vos analyses (code R reproductible, tableaux ou graphes, commentaires).
- Vos interprétations pour faire ressortir les constats clés.
- Une courte conclusion qui résume les réponses apportées aux gestionnaires.
🚀 Mise en ligne et rendu
- Publiez le rapport sur votre dépôt GitHub dans l’organisation du cours.
- Assurez-vous que le fichier
.htmlest bien généré et lisible. - Faites une dernière relecture pour vérifier la clarté, la structure et la présentation.
🧠 Astuce : Mettez-vous dans la peau d’un·e analyste professionnel·le — ce rapport pourrait être présenté au comité exécutif de l’aéroport !
🧾 Grille d’évaluation (10 points)
| Critère | Description | Points |
|---|---|---|
Exploration temporelle (lubridate) |
Création de variables date, jour_semaine, moment_journee ; bonne utilisation de lubridate. |
2 |
| Analyse des créneaux horaires | Pertinence de l’analyse, qualité de la visualisation et interprétation. | 2 |
| Analyse de la météo | Choix judicieux des variables météo, test de relation avec les retards, interprétation correcte. | 2 |
| Analyse des avions anciens | Construction de age_avion, analyse correcte des retards ou annulations, interprétation pertinente. |
2 |
| Structure et présentation du rapport | Rapport clair, bien structuré, visuellement lisible ; visualisations bien annotées ; code commenté. | 2 |
💡 Bonus possible (max +1) pour une analyse complémentaire originale (ex. : analyse par compagnie ou distance).
🧠 Exercices de consolidation
Ces exercices vous permettront de consolider les compétences du module 5 : exploration, corrélation, visualisation, analyse bivariée. Tous les jeux de données utilisés sont intégrés à R.
🚗 1. Jeu de données : mtcars
Quelle est la force de la relation linéaire entre la consommation (mpg) et le poids (wt) des voitures ?
cor(mtcars$mpg, mtcars$wt)
# ≈ -0.87 → forte corrélation négative : les voitures plus lourdes consomment plus.🌡️ 2. Jeu de données : airquality
Créez un graphique illustrant la relation entre la température (Temp) et le taux d’ozone (Ozone), avec une ligne de tendance.
ggplot(airquality, aes(x = Temp, y = Ozone)) +
geom_point() +
geom_smooth(method = "lm")📆 3. Jeu de données : airquality
Créez une variable date à partir de Month et Day (en supposant l’année 1973), puis ajoutez une colonne indiquant le jour de la semaine.
library(lubridate)
airquality <- airquality %>%
mutate(date = make_date(1973, Month, Day),
jour_semaine = wday(date, label = TRUE))🦷 4. Jeu de données : ToothGrowth
Comparez la longueur des dents (len) selon le type de supplément (supp) à l’aide d’un boxplot.
ggplot(ToothGrowth, aes(x = supp, y = len)) +
geom_boxplot()💊 5. Jeu de données : ToothGrowth
Calculez la moyenne de longueur des dents pour chaque combinaison de supplément (supp) et de dose (dose).
ToothGrowth %>%
group_by(supp, dose) %>%
summarise(moyenne = mean(len), .groups = "drop")🌸 6. Jeu de données : iris
Calculez la matrice de corrélation entre les variables numériques.
iris %>%
select(where(is.numeric)) %>%
cor() %>%
round(2)🐣 7. Jeu de données : ChickWeight
Tracez l’évolution du poids (weight) dans le temps (Time) pour un seul poussin (par exemple Chick 1).
ggplot(filter(ChickWeight, Chick == 1), aes(x = Time, y = weight)) +
geom_line()🐥 8. Jeu de données : ChickWeight
Quel est le poids moyen des poussins à la fin de l’expérience (Time = 21) pour chaque type de régime alimentaire (Diet) ?
ChickWeight %>%
filter(Time == 21) %>%
group_by(Diet) %>%
summarise(moyenne = mean(weight))🌿 9. Jeu de données : iris
Visualisez la distribution de Petal.Length à l’aide d’un histogramme avec courbe de densité superposée.
ggplot(iris, aes(x = Petal.Length)) +
geom_histogram(aes(y = ..density..), bins = 20, fill = "lightblue") +
geom_density(color = "blue")⚙️ 10. Jeu de données : mtcars
Combien y a-t-il de voitures pour chaque combinaison de nombre de cylindres (cyl) et de type de transmission (am) ?
mtcars %>%
count(cyl, am)🔍 Problème 1 — EDA météo et ozone (jeu de données : airquality)
- Visualisez la relation entre la vitesse du vent (
Wind) et le taux d’ozone (Ozone). - Calculez leur corrélation.
- Ajoutez une variable logique
jour_chaudqui vautTRUEsi la température est supérieure à 85°F. - Comparez les taux d’ozone selon
jour_chaudavec un boxplot.
ggplot(airquality, aes(x = Wind, y = Ozone)) +
geom_point() +
geom_smooth(method = "lm")
cor(airquality$Wind, airquality$Ozone, use = "complete.obs")
airquality <- airquality %>%
mutate(jour_chaud = Temp > 85)
ggplot(airquality, aes(x = jour_chaud, y = Ozone)) +
geom_boxplot()🔍 Problème 2 — EDA florale (jeu de données : iris)
- Est-ce que la variable
Sepal.Lengthpermet de distinguer les espèces (Species) ? - Affichez un boxplot de
Sepal.Lengthpar espèce. - Calculez la moyenne et l’écart-type de
Sepal.Lengthpar espèce. - Calculez la corrélation entre
Sepal.LengthetPetal.Length. - Visualisez leur relation avec un nuage de points et une ligne de tendance.
ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot()
iris %>%
group_by(Species) %>%
summarise(moyenne = mean(Sepal.Length),
ecart = sd(Sepal.Length))
cor(iris$Sepal.Length, iris$Petal.Length)
ggplot(iris, aes(x = Petal.Length, y = Sepal.Length)) +
geom_point() +
geom_smooth(method = "lm")