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 :

Vous pouvez aussi aller réviser le chapitre suivant:

Dans le libre IMS:

Aventure

Aventure 5

🎯 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 :

  1. Explorer les variables temporelles (date, jour_semaine, moment_journee, etc.) et les préparer si besoin.
  2. 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 ?
  3. 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 .html est 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)

  1. Visualisez la relation entre la vitesse du vent (Wind) et le taux d’ozone (Ozone).
  2. Calculez leur corrélation.
  3. Ajoutez une variable logique jour_chaud qui vaut TRUE si la température est supérieure à 85°F.
  4. Comparez les taux d’ozone selon jour_chaud avec 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)

  1. Est-ce que la variable Sepal.Length permet de distinguer les espèces (Species) ?
  2. Affichez un boxplot de Sepal.Length par espèce.
  3. Calculez la moyenne et l’écart-type de Sepal.Length par espèce.
  4. Calculez la corrélation entre Sepal.Length et Petal.Length.
  5. 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")