| Lien physique | Effectif | Valeurs connues | Moyenne (CAD) | Médiane (CAD) | IQR (CAD) |
|---|---|---|---|---|---|
| Détaché | 463 | 463 | 429 179 | 376 000 | 146 500 |
| En rangée, plusieurs côtés | 28 | 28 | 376 607 | 312 500 | 157 500 |
| En rangée, un côté | 15 | 15 | 432 667 | 407 000 | 206 500 |
| Jumelé | 94 | 94 | 325 564 | 313 500 | 85 250 |
Explorer les valeurs foncières de 600 maisons à Québec
Comment les valeurs évaluées varient-elles avec le type de maison et l’aire d’étages ?
À produire : Un tableau descriptif par type de maison, des graphiques en échelles brute et logarithmique, et six réponses justifiées.
Prérequis : Exécuter un script dans RStudio. Reconnaître une variable numérique, une catégorie et une médiane.
Préparation enseignante
Extraire la trousse entière et ouvrir Donnees-bleues.Rproj. Avant la séance, exécuter installer-packages.R avec Internet. Le CSV est inclus; l’activité fonctionne ensuite hors ligne. Durée indicative : 60 à 90 minutes. Le script est exécuté techniquement; l’activité n’a pas été testée en classe.
Télécharger la trousse avec les données
30 Ko. Préparation : 01/10/2026 à 14:20 (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
-
maisons_quebec.csv: 600 lignes, 19 colonnes.
Contexte
La fiche présente 600 unités d’évaluation à un logement dans la ville de Québec, tirées sans remise parmi 99 072 unités admissibles. La cible est une valeur au rôle, pas un prix de vente. La référence au marché est le 1er juillet 2023, le rôle est entré en vigueur en 2025 et l’extraction date de 2026.
Les superficies sont en m², les valeurs en dollars canadiens. L’aire d’étages est brute et peut inclure un garage intégré. Les critères de sélection et les codes figurent dans le dictionnaire de la trousse.
Consignes
- Exécuter
datasets/maisons-quebec/activite-courte.Rdepuis le projet de la trousse. Les tableaux et graphiques apparaissent dans RStudio; ils sont aussi enregistrés dansoutputs/. - Vérifier les effectifs, les unités et les valeurs manquantes. Distinguer les dates constantes des caractéristiques qui varient entre maisons.
- Comparer la moyenne, la médiane et l’écart interquartile des valeurs foncières entre types de maisons.
- Comparer les nuages sur des axes bruts et logarithmiques, puis répondre aux six exercices.
Résultats attendus
Les 600 lignes du tirage sont complètes dans les 19 colonnes. Il n’y a aucune imputation. Cette complétude ne prouve pas l’absence de valeurs manquantes dans le rôle complet.
La moyenne vaut 410 580 CAD et la médiane 366 000 CAD. La moyenne est sensible aux valeurs élevées. Un point extrême n’est pas automatiquement une erreur.
| Échelle | Paires utilisées | Corrélation |
|---|---|---|
| Brute | 600 | 0.835 |
| Logarithmique | 600 | 0.772 |
Changer d’échelle change l’association mesurée. Une corrélation plus élevée ne garantit ni une meilleure prédiction hors apprentissage ni une relation causale.
Six exercices
- Une maison a une valeur foncière de 400 000 CAD. Peut-on dire qu’elle a été vendue à ce prix en 2026 ? Expliquer le sens des trois dates.
- Comparer moyenne et médiane globales. Relier leur différence à l’histogramme, sans supprimer les maisons de grande valeur.
- Comparer les maisons détachées et jumelées par leur médiane et leur IQR. Peut-on attribuer causalement l’écart au lien physique ?
- La corrélation augmente-t-elle en passant aux logarithmes ? Que perd-on en résumant le nuage par un seul nombre ?
- Les effectifs des quatre types sont-ils des proportions des maisons de toute la province ? Nommer la population admissible et deux exclusions.
- Vérifier
valeur_fonciere_cad == valeur_terrain_cad + valeur_batiment_cad. Pourquoi ces deux composantes seraient-elles de mauvais prédicteurs pédagogiques du total ?
Corrigé commenté
- Aucun prix de transaction n’est observé. Le rôle entre en vigueur en 2025, utilise les conditions du marché au 1er juillet 2023 et est extrait en 2026. Les 400 000 CAD décrivent une évaluation au rôle.
- Moyenne : 410 580 CAD; médiane : 366 000 CAD. Les grandes valeurs contribuent à l’asymétrie vers la droite et à l’écart entre les deux indicateurs.
- Détachées : médiane 376 000 CAD et IQR 146 500 CAD; jumelées : médiane 313 500 CAD et IQR 85 250 CAD. Les groupes peuvent aussi différer par leur taille, leur âge ou leur localisation. Il n’y a aucune affectation aléatoire du type de maison.
- Non, la corrélation passe ici d’environ 0.835 à 0.772. Le nombre ne montre pas les catégories, les variations de dispersion ni les observations influentes. Les logarithmes ne constituent pas une amélioration automatique.
- Le périmètre comprend les unités admissibles de cet instantané de Québec. Les unités intégrées en copropriété, les unités à plusieurs logements et le genre unimodulaire sont exclus. Le tirage ne représente pas les maisons de la province.
- L’égalité vaut pour les 600 maisons. Les composantes donnent la réponse par addition : les utiliser pour prédire le total produit une fuite de cible. La seconde activité utilise les caractéristiques physiques.
Limites à faire nommer
- Une seule municipalité, un instantané et des critères administratifs explicites.
- Une valeur évaluée, sans vente observée et sans mesure de rénovations.
- Des superficies brutes et des catégories de taille inégale.
- Des associations observationnelles, avec une dépendance spatiale possible.
Code complet et source
Afficher le script R
# Activité d'introduction, 60 à 90 minutes : valeurs foncières de 600 maisons.
# Ouvrir Donnees-bleues.Rproj dans la trousse extraite, puis cliquer Source.
# Données figées MAMH, CC BY 4.0. Aucune connexion requise après installation.
library(readr)
library(dplyr)
library(tidyr)
library(ggplot2)
# 1. Comprendre les données, préserver les codes de voisinage comme du texte.
maisons <- read_csv("data/processed/maisons-quebec/maisons_quebec.csv",
col_types = cols(maison_id = col_character(), arrondissement_code = col_character(),
voisinage_code = col_character(), lien_physique_code = col_character(),
genre_construction_code = col_character()), show_col_types = FALSE)
stopifnot(nrow(maisons) == 600L, ncol(maisons) == 19L,
!anyDuplicated(maisons$maison_id), all(maisons$municipalite == "Québec"),
all(maisons$nombre_logements == 1), all(maisons$annee_role == 2025),
all(maisons$date_reference_marche == as.Date("2023-07-01")))
dir.create("outputs", showWarnings = FALSE)
# 2. Audit sans imputation ni retrait automatique des observations extrêmes.
manquants <- maisons |> summarise(across(everything(), ~sum(is.na(.x)))) |>
pivot_longer(everything(), names_to = "variable", values_to = "n_manquants")
portrait <- maisons |> group_by(lien_physique) |> summarise(
effectif = n(), valeurs_connues = sum(!is.na(valeur_fonciere_cad)),
moyenne_cad = mean(valeur_fonciere_cad, na.rm = TRUE),
mediane_cad = median(valeur_fonciere_cad, na.rm = TRUE),
iqr_cad = IQR(valeur_fonciere_cad, na.rm = TRUE),
.groups = "drop")
resume_valeur <- maisons |> summarise(
n = sum(!is.na(valeur_fonciere_cad)),
moyenne = mean(valeur_fonciere_cad, na.rm = TRUE),
mediane = median(valeur_fonciere_cad, na.rm = TRUE),
minimum = min(valeur_fonciere_cad, na.rm = TRUE),
maximum = max(valeur_fonciere_cad, na.rm = TRUE))
estimees <- maisons |> count(annee_construction_statut, name = "effectif")
# Les logarithmes et la corrélation utilisent des paires finies et strictement positives.
paires <- maisons |> filter(is.finite(aire_etages_m2), aire_etages_m2 > 0,
is.finite(valeur_fonciere_cad), valeur_fonciere_cad > 0)
correlations <- tibble(echelle = c("Brute", "Logarithmique"), n = nrow(paires),
correlation = c(cor(paires$aire_etages_m2, paires$valeur_fonciere_cad),
cor(log(paires$aire_etages_m2), log(paires$valeur_fonciere_cad))))
# 3. Visualiser les observations, pas seulement leurs résumés.
distribution_plot <- ggplot(maisons, aes(x = valeur_fonciere_cad)) +
geom_histogram(bins = 30, fill = "#185b83", colour = "white", na.rm = TRUE) +
scale_x_continuous(labels = scales::label_number(big.mark = " ")) +
labs(x = "Valeur foncière évaluée (CAD)", y = "Nombre de maisons",
title = "600 maisons à Québec", subtitle = "Référence au marché : 1er juillet 2023") +
theme_minimal(base_size = 12)
group_plot <- ggplot(maisons, aes(x = lien_physique, y = valeur_fonciere_cad)) +
geom_boxplot(outlier.shape = NA, fill = "#dbeaf2", na.rm = TRUE) +
geom_point(position = position_jitter(width = 0.15, height = 0, seed = 20261001),
alpha = 0.35, size = 1, na.rm = TRUE) +
scale_y_continuous(labels = scales::label_number(big.mark = " ")) +
coord_flip() + labs(x = NULL, y = "Valeur foncière évaluée (CAD)") +
theme_minimal(base_size = 12)
scatter_plot <- ggplot(paires, aes(x = aire_etages_m2, y = valeur_fonciere_cad,
colour = lien_physique)) +
geom_point(alpha = 0.65, size = 1.8) +
scale_colour_brewer(palette = "Dark2") +
scale_y_continuous(labels = scales::label_number(big.mark = " ")) +
labs(x = "Aire d'étages brute (m²)", y = "Valeur foncière évaluée (CAD)",
colour = "Lien physique", caption = paste(nrow(maisons) - nrow(paires),
"ligne(s) écartée(s) : paire manquante, non finie ou non positive.")) +
theme_minimal(base_size = 12) + theme(legend.position = "bottom")
log_plot <- scatter_plot + scale_x_log10() +
scale_y_log10(labels = scales::label_number(big.mark = " ")) +
labs(title = "Les mêmes observations, sur des axes logarithmiques")
# 4. Résultats à interpréter dans le périmètre du rôle municipal retenu.
print(manquants); print(portrait); print(resume_valeur); print(estimees); print(correlations)
print(distribution_plot); print(group_plot); print(scatter_plot); print(log_plot)
write_csv(portrait, "outputs/maisons-portrait.csv")
write_csv(manquants, "outputs/maisons-manquants.csv")
write_csv(correlations, "outputs/maisons-correlations.csv")
ggsave("outputs/maisons-distribution.png", distribution_plot, width = 8, height = 5, dpi = 160)
ggsave("outputs/maisons-groupes.png", group_plot, width = 8, height = 5, dpi = 160)
ggsave("outputs/maisons-association.png", scatter_plot, width = 9, height = 6, dpi = 160)
ggsave("outputs/maisons-log.png", log_plot, width = 9, height = 6, dpi = 160)
message("Les valeurs évaluées ne sont pas des prix de vente. Les associations sont descriptives.")MAMH (2026), rôles d’évaluation foncière, extraction de Québec, CC BY 4.0. Sélection pédagogique par Aurélien Nicosia (2026). Le dictionnaire, la méthode et l’attribution sont inclus dans la trousse.
Vérifier le travail
- Le tableau et les graphiques décrivent les 600 lignes avec leurs unités.
- Les catégories en rangée conservent leurs effectifs distincts dans l’exploration.
- Une conclusion nomme le rôle 2025, la référence 2023 et le périmètre municipal.
- Aucun point extrême n’est retiré seulement parce qu’il se trouve au-delà d’une moustache.
Objectifs et adaptations
Objectifs
- Identifier une unité d’évaluation et distinguer les trois dates du jeu.
- Comparer moyenne, médiane et dispersion dans une distribution asymétrique.
- Explorer une association sur des axes bruts et logarithmiques.
- Distinguer association descriptive, prix de vente et effet causal.
Adaptations
- Montrer les graphiques et faire répondre aux exercices collectivement sans programmation.
- Prolonger avec une facette par arrondissement codé, sans inventer les noms des codes.
Statut documenté : Script exécuté; apprentissage en classe non évalué.
Contribution pédagogique : Aurélien Nicosia. Usage en cours non documenté.
- Ajout
- Mise à jour