| Classe | Effectif | Moyenne | Médiane | Écart-type | Minimum | Maximum |
|---|---|---|---|---|---|---|
| Automobiles | 19 | 9.55 | 9.30 | 2.15 | 6.8 | 15.1 |
| Camionnettes | 9 | 10.99 | 12.20 | 2.73 | 6.2 | 13.0 |
| VUS | 16 | 10.56 | 10.40 | 2.74 | 4.4 | 14.6 |
| Fourgonnettes | 8 | 9.44 | 10.60 | 2.18 | 6.6 | 12.0 |
| Familiales | 12 | 10.26 | 9.65 | 2.19 | 8.1 | 14.3 |
- Ajout
- Mise à jour
Explorer la consommation de 64 véhicules de 2025
Comment la consommation varie-t-elle entre classes de véhicules et avec la cylindrée dans ce petit jeu canadien ?
Activité adaptée par Aurélien Nicosia de la version 1.0.0 de Véhicules. La durée de 60 à 90 minutes est indicative, hors prolongements. Le script est exécuté techniquement; l’activité n’a pas été testée en classe.
Préparation enseignante
Télécharger la trousse, l’extraire entièrement et ouvrir Donnees-bleues.Rproj. Avant la séance, ouvrir installer-packages.R et cliquer sur Source avec Internet. Les deux CSV sont inclus; l’activité fonctionne ensuite hors ligne.
Télécharger la trousse avec les données
17 Ko. Préparation : 07/09/2026 à 08:22 (heure du Québec).
Les fichiers de données sont inclus dans la trousse.
Conditions de la source · Provenance et empreinte du ZIP
Fichiers inclus
-
vehicules_canada_2025.csv: 64 lignes, 19 colonnes. -
parc_quebec_2022.csv: 152 lignes, 5 colonnes.
Contexte
La fiche du jeu présente les données et leurs limites. Le tableau principal contient 64 configurations canadiennes de l’année modèle 2025 et 19 variables complètes, issues des cotes de RNCan recueillies le 2 juillet 2026. Une ligne n’est ni un véhicule immatriculé ni une vente. La présence des configurations au Québec n’est pas confirmée.
Le petit jeu contient des configurations à essence, éventuellement hybrides non rechargeables. Sa sélection vise la diversité des classes et des transmissions. Une seconde table décrit séparément des comptes SAAQ au 31 décembre 2022.
Consignes
- Dans la trousse, ouvrir
datasets/vehicules-canada-2025/activite-courte.Ret cliquer sur Source. Lire les tableaux dans Console et utiliser les flèches de Plots pour parcourir les graphiques. Les sorties sont aussi enregistrées dansoutputs/. - Vérifier l’unité d’observation, les 64 lignes et les unités de cylindrée et de consommation. Le script ajoute
classe, une étiquette française dérivée des 19 colonnes sources. - Comparer les médianes et les dispersions entre classes, puis décrire le nuage cylindrée-consommation.
- Répondre aux six exercices ci-dessous. Les sections sur la régression et la SAAQ sont facultatives.
Résultat attendu
Remettre un tableau descriptif, deux graphiques et six réponses courtes avec les unités et une limite de portée. Les résultats ci-dessous sont recalculés à partir de la trousse distribuée.
Comparer les classes
Toutes les consommations de ce tableau sont en L/100 km. Une valeur plus faible correspond à moins de carburant pour la même distance. Les effectifs par classe ne sont pas des parts du parc canadien ou québécois.
Les points rendent visibles les petits effectifs. Un point au-delà d’une moustache ne prouve pas une erreur et ne doit pas être supprimé automatiquement.
Explorer une association
La corrélation globale est 0.683. Les corrélations par classe portent sur des groupes plus petits. Une association globale ne signifie pas que chaque classe suit la même relation, ni qu’une hausse de cylindrée causerait à elle seule la différence de consommation.
| Classe | Effectif | Corrélation |
|---|---|---|
| Automobiles | 19 | 0.715 |
| Camionnettes | 9 | 0.455 |
| VUS | 16 | 0.760 |
| Fourgonnettes | 8 | 0.882 |
| Familiales | 12 | 0.850 |
Vérifier les unités
RNCan publie des milles par gallon impérial. combined_mpg_us utilise le gallon américain et est calculé à partir de la consommation combinée. Le gallon américain est celui de mtcars$mpg. Une conversion n’ajoute pas une mesure indépendante.
Utiliser cette conversion comme prédicteur de la consommation reviendrait à fournir une transformation de la réponse. Les consommations urbaine, routière et combinée sont aussi liées par construction; les émissions de CO2 sont liées au carburant et à sa consommation.
Un écart mineur déjà présent dans la source est conservé pour le Ford Maverick Hybrid : 6,2 L/100 km publiés en combiné, contre 6,095 calculés à partir des cotes affichées ville-route et de la pondération 55/45. Sa cause n’est pas établie. Le rapport de la version source documente ce point.
Six exercices
- Quelle classe a la médiane la plus élevée dans ce petit jeu ? Donner sa valeur et l’unité.
- Dans chaque classe, calculer l’écart interquartile avec
IQR()et identifier la dispersion la plus forte selon cet indicateur. - Ajouter
facet_wrap(~ classe)au nuage de points. Expliquer une différence entre la vue globale et les vues par classe. - Vérifier que le produit
combined_mpg_us * combined_l_per_100kmest presque constant. Expliquer les très petits écarts. - Peut-on conclure que les véhicules à boîte manuelle consomment moins à cause de leur transmission ? Distinguer comparaison descriptive et causalité.
- Une personne affirme que les 16 VUS représentent 25 % des véhicules au Québec. Identifier les erreurs concernant l’échantillonnage et la portée géographique.
Point d’arrêt : avoir remis le tableau, les deux graphiques et les six réponses. Les prolongements suivants sont facultatifs.
Prolongement : régression et validation
Le script ajuste combined_l_per_100km ~ engine_size_l. La réponse est une cote d’essai, pas une consommation mesurée pendant les déplacements d’un ménage.
| Terme | Estimation |
|---|---|
| (Intercept) | 5.112 |
| engine_size_l | 1.939 |
La pente décrit l’écart ajusté de consommation associé à un litre supplémentaire de cylindrée dans cet échantillon. La cylindrée nulle est hors du domaine observé; l’ordonnée à l’origine n’a pas ici d’interprétation physique.
La validation croisée retire successivement une configuration, ajuste le modèle sur les 63 autres et prédit la configuration retirée. La référence constante est la moyenne de ces mêmes 63 configurations d’apprentissage.
| Modèle | RMSE (L/100 km) |
|---|---|
| Cylindrée seule | 1.781 |
| Moyenne des 63 autres configurations | 2.413 |
L’erreur mesure une évaluation interne au petit jeu. Des modèles de la même marque peuvent partager des caractéristiques. Généraliser à d’autres marques ou années demanderait une séparation adaptée et davantage de données. Ce résultat ne mesure pas une performance sur le parc québécois.
Prolongement Québec : compter dans la bonne table
Le tableau SAAQ concerne les automobiles et camions légers de type AU et de classes PAU, CAU ou RAU, autorisés à circuler au 31 décembre 2022. Les autres usages sont exclus. Le script additionne number_registered_qc pour obtenir les comptes par carburant.
| Carburant déclaré | Véhicules |
|---|---|
| Essence | 5 135 131 |
| Diésel | 104 750 |
| Électricité | 102 649 |
| Hybride | 95 019 |
| Hybride branchable | 65 584 |
| Propane | 3 396 |
| Gaz naturel | 539 |
| Autre | 188 |
| Hydrogène | 66 |
| Non-propulsé | 7 |
| Méthanol | 1 |
Les 152 groupes région-carburant totalisent 5 507 330 véhicules dans ce périmètre. Compter les lignes serait compter des groupes. Les régions manquantes et modalités inhabituelles sont conservées telles que déclarées. On ne peut pas attribuer ces comptes aux configurations RNCan de 2025.
Corrigé commenté
- La médiane la plus élevée concerne les Camionnettes, à 12.2 L/100 km.
- Les écarts interquartiles ci-dessous décrivent la moitié centrale des observations. Leur classement peut différer de celui des écarts-types.
| Classe | Écart interquartile (L/100 km) |
|---|---|
| Fourgonnettes | 3.62 |
| VUS | 3.17 |
| Automobiles | 2.90 |
| Familiales | 2.80 |
| Camionnettes | 1.00 |
- Le facettage sépare les classes. Comparer leurs étendues en cylindrée et leurs dispersions avant d’interpréter les corrélations. Une réponse acceptable cite un élément visible et le groupe concerné.
- Le produit est voisin de 235,214583. Le mpg américain est calculé à partir de la consommation, puis arrondi à quatre décimales.
- Non : les modèles n’ont pas été affectés aléatoirement à une transmission. La classe, la motorisation et d’autres caractéristiques peuvent différer. Le code
AMdésigne une transmission manuelle automatisée, distincte deM. - Le petit jeu est sélectionné pour sa diversité, sans pondération du parc. Ses lignes sont des configurations canadiennes dont la présence au Québec n’est pas confirmée. Leur proportion ne devient pas une proportion québécoise.
Limites à faire nommer
- La sélection n’est pas un échantillon probabiliste du parc; la complétude découle des critères retenus.
- Une seule année modèle est présente : ces 64 configurations ne permettent pas d’étudier une évolution historique.
- Les cotes d’essai ne sont pas des mesures de conduite quotidienne au Québec; le CO2 est à l’échappement, sans cycle de vie.
- Les conversions de consommation ne sont pas des mesures distinctes et une association ne prouve pas une causalité.
- Les comptes SAAQ restent dans une autre table, une autre période et un périmètre explicite.
Code complet
Ce code est celui de la trousse. Il affiche les tableaux et graphiques, enregistre les sorties dans outputs/ et ne télécharge aucune donnée pendant l’activité.
# Adaptation Données bleues par Aurélien Nicosia, source vehicules-quebec v1.0.0 (MIT).
# Ouvrir Donnees-bleues.Rproj, puis exécuter ce script depuis la racine du projet.
library(readr)
library(dplyr)
library(ggplot2)
vehicules <- read_csv("data/processed/vehicules-canada-2025/vehicules_canada_2025.csv",
col_types = cols(.default = col_guess(), vehicle_id = col_character()))
class_labels <- c(passenger_car = "Automobiles", pickup = "Camionnettes",
suv = "VUS", van = "Fourgonnettes", wagon = "Familiales")
vehicules <- vehicules |>
mutate(classe = factor(vehicle_class_group, levels = names(class_labels),
labels = unname(class_labels)))
portrait <- vehicules |>
group_by(classe) |>
summarise(n = n(), moyenne = mean(combined_l_per_100km),
mediane = median(combined_l_per_100km),
ecart_type = sd(combined_l_per_100km),
minimum = min(combined_l_per_100km),
maximum = max(combined_l_per_100km), .groups = "drop")
correlations <- vehicules |>
group_by(classe) |>
summarise(n = n(), correlation = cor(engine_size_l, combined_l_per_100km),
.groups = "drop")
correlation_globale <- cor(vehicules$engine_size_l, vehicules$combined_l_per_100km)
palette_classes <- c("#0072B2", "#D55E00", "#009E73", "#CC79A7", "#E69F00")
theme_set(theme_minimal(base_size = 12))
distribution_plot <- ggplot(vehicules, aes(classe, combined_l_per_100km, fill = classe)) +
geom_boxplot(width = 0.5, outlier.shape = NA, alpha = 0.55) +
geom_point(position = position_jitter(width = 0.12, height = 0, seed = 20260907),
size = 1.8, alpha = 0.75) +
scale_fill_manual(values = palette_classes) +
labs(x = NULL, y = "Consommation combinée (L/100 km)") +
theme(legend.position = "none") + coord_flip()
scatter_plot <- ggplot(vehicules, aes(engine_size_l, combined_l_per_100km, colour = classe)) +
geom_point(size = 2.4, alpha = 0.85) +
scale_colour_manual(values = palette_classes) +
labs(x = "Cylindrée (L)", y = "Consommation combinée (L/100 km)", colour = "Classe") +
theme(legend.position = "bottom") + guides(colour = guide_legend(nrow = 2))
# Prolongement : un modèle descriptif simple et des résidus vérifiables.
modele <- lm(combined_l_per_100km ~ engine_size_l, data = vehicules)
coefficients <- tibble(terme = names(coef(modele)), estimation = unname(coef(modele)))
diagnostic <- vehicules |>
transmute(vehicle_id, ajustement = fitted(modele), residu = residuals(modele))
residual_plot <- ggplot(diagnostic, aes(ajustement, residu)) +
geom_hline(yintercept = 0, colour = "grey45", linetype = 2) +
geom_point(colour = "#0072B2", size = 2) +
labs(x = "Consommation ajustée (L/100 km)", y = "Résidu (L/100 km)")
# Chaque ligne est prédite par un modèle qui n'a pas utilisé cette ligne.
# Cette évaluation interne ne prouve pas une généralisation au parc québécois.
loo <- lapply(seq_len(nrow(vehicules)), function(i) {
apprentissage <- vehicules[-i, ]
validation <- vehicules[i, ]
ajustement <- lm(combined_l_per_100km ~ engine_size_l, data = apprentissage)
tibble(vehicle_id = validation$vehicle_id,
observe = validation$combined_l_per_100km,
prediction_lineaire = unname(predict(ajustement, newdata = validation)),
prediction_moyenne = mean(apprentissage$combined_l_per_100km))
}) |> bind_rows()
validation_modele <- tibble(
modele = c("Cylindrée seule", "Moyenne des 63 autres configurations"),
rmse_loo = c(sqrt(mean((loo$observe - loo$prediction_lineaire)^2)),
sqrt(mean((loo$observe - loo$prediction_moyenne)^2))))
dir.create("outputs", showWarnings = FALSE)
write_csv(portrait, "outputs/portrait_classes.csv")
write_csv(correlations, "outputs/correlations_classes.csv")
write_csv(coefficients, "outputs/coefficients_regression.csv")
write_csv(loo, "outputs/predictions_loo.csv")
write_csv(validation_modele, "outputs/validation_modele.csv")
ggsave("outputs/distributions.png", distribution_plot, width = 8, height = 5, dpi = 160)
ggsave("outputs/cylindree_consommation.png", scatter_plot, width = 8, height = 5.5, dpi = 160)
ggsave("outputs/residus.png", residual_plot, width = 8, height = 4.5, dpi = 160)
print(portrait)
print(validation_modele)
print(distribution_plot)
print(scatter_plot)
print(residual_plot)
# Corrigé : médiane, écart interquartile et conversion d’unité.
classe_mediane <- portrait |> filter(mediane == max(mediane))
dispersion <- vehicules |> group_by(classe) |>
summarise(ecart_interquartile = IQR(combined_l_per_100km), .groups = "drop") |>
arrange(desc(ecart_interquartile))
produit_unites <- range(vehicules$combined_mpg_us * vehicules$combined_l_per_100km)
print(correlations)
print(classe_mediane)
print(dispersion)
print(produit_unites)
# Volet Québec distinct : additionner les comptes, jamais les attribuer aux configurations RNCan.
parc <- read_csv("data/processed/vehicules-canada-2025/parc_quebec_2022.csv",
col_types = cols(.default = col_guess(), region_qc = col_character(), saaq_fuel_code = col_character()))
parc_carburant <- parc |>
group_by(saaq_fuel_type) |>
summarise(vehicules = sum(number_registered_qc), .groups = "drop") |>
arrange(desc(vehicules))
stopifnot(nrow(vehicules) == 64, !anyNA(vehicules),
all(vehicules$model_year == 2025), nrow(parc) == 152,
sum(parc_carburant$vehicules) == 5507330)
print(parc_carburant)
write_csv(parc_carburant, "outputs/parc_quebec_carburant.csv")Sources et attribution
RNCan (2026), Cotes de consommation de carburant, collecte du 2 juillet 2026, Licence du gouvernement ouvert – Canada; explication des tableaux. SAAQ (2023), Véhicules en circulation, portrait 2022, CC BY 4.0. Aurélien Nicosia (2026), Véhicules, version 1.0.0, activité source sous MIT. Voir aussi la documentation de mtcars. Les notices et le dictionnaire complet sont inclus dans la trousse.
Contribution pédagogique : Aurélien Nicosia. Cours : usage non documenté
Fiche de mise en œuvre
Repères pédagogiques
Les objectifs et critères ci-dessous permettent d’adapter la séance. La disponibilité des ressources ne constitue pas une validation de leur efficacité en classe.
- Objectifs d'apprentissage
-
- Importer les données et reconnaître une configuration comme unité d’observation.
- Comparer les médianes et les dispersions entre cinq classes de véhicules.
- Décrire une association sans la présenter comme un effet causal.
- Reconnaître la redondance entre une consommation et sa conversion d’unité.
- Distinguer les configurations canadiennes des comptes administratifs québécois.
- Prérequis
-
- Ouvrir un projet RStudio et exécuter un script.
- Reconnaître une variable quantitative, une catégorie et une médiane.
- Critères de réussite
-
- Le tableau décrit 64 configurations et cinq classes, sans valeur manquante dans les 19 variables sources.
- Les graphiques indiquent les litres de cylindrée et les L/100 km de consommation.
- Le produit de la consommation et du mpg américain est reconnu comme presque constant par construction.
- La conclusion ne transforme pas une proportion du petit jeu en proportion du parc québécois.
- Adaptations possibles
-
- Montrer les résultats avec la personne enseignante et discuter les six exercices collectivement.
- Approfondir avec les corrélations par classe, les résidus et la validation croisée facultative.
Ressources : Fichiers inclus