spb/traite-evaluation-qc
Public
1# Jeu « brut » du cas 1 — DONNÉES SYNTHÉTIQUES (chapitre 14) — généré le 2026-10-31, graine 2026103123**Aucune de ces lignes ne décrit une propriété, une transaction, un matricule ou une adresse réels.** Les quatre fichiers ci-dessous sont4produits par `analysis/python/cases/ch14_nettoyage.py` (`PYTHONPATH=analysis/python python3 analysis/python/cases/ch14_nettoyage.py`) à partir5du jeu propre `cas1_gatineau_ventes.csv` (600 ventes, voir `README.md`). Ils servent à enseigner la détection et la correction des anomalies ;6ils ne sont utilisés par aucun autre chapitre. Ce fichier est tenu à la main (le `README.md` voisin est régénéré par `synth.py`).78| Fichier | Lignes | Contenu |9|---|---|---|10| `cas1_gatineau_ventes_brut.csv` | 618 | inscriptions de ventes « telles que reçues » : 600 ventes + 18 doublons, 109 lignes altérées |11| `cas1_gatineau_anomalies_injectees.csv` | 127 | table de vérité : `id_inscription`, `id_vente_origine`, `anomalie`, `detail` |12| `cas1_gatineau_role_extrait.csv` | 600 | extrait de rôle fictif (une unité par vente propre) : matricule canonique, adresse fictive, secteur, terrain, année, valeur au rôle |13| `cas1_gatineau_journal_exclusions.csv` | 144 | journal produit par le pipeline du chapitre : étape, inscription, action (exclusion / correction / imputation), motif, champ, valeur avant / après |1415## Colonnes du jeu brut16`id_inscription` (B0001…B0618, ordre = date d'acte) ; `id_vente_origine` (**colonne de traçabilité pédagogique**, absente d'un vrai jeu brut,17jamais lue par le pipeline) ; `matricule` (clé d'unité fictive au format canonique `SS-FF-NNNN-C`, 9 chiffres, altérée dans 44 % des lignes :1825 % avec espaces, 10 % sans séparateurs, 5 % avec un chiffre erroné, 4 % absente) ; `adresse_fictive` ; `date_promesse`, `date_acte`19(l'acte suit la promesse de 21 à 90 jours, tirage uniforme) ; `secteur`, `type` ; `superficie_habitable_m2`, `superficie_terrain_m2`,20`annee_construction`, `qualite_1a5`, `garage_places`, `sous_sol_fini`, `piscine`, `chambres`, `salles_de_bain` ; `lat`, `lon` ;21`valeur_role_2025` ; `montant_meubles` ; `type_transaction` (ordinaire / entre personnes liées / succession) ; `prix_vente` (prix déclaré,22meubles compris le cas échéant). Les colonnes dérivées du jeu propre (`age`, `dist_centre_km`, `date_vente`) sont volontairement absentes :23le pipeline les recalcule.2425## Anomalies injectées (lignes tirées sans remise, disjointes ; graine 20261031)26| Code | n | Loi d'injection | Détection attendue |27|---|---|---|---|28| `doublon` | 18 | copie intégrale d'une inscription, nouvel identifiant ; pour 6 d'entre elles l'acte est décalé de 1 à 3 jours | R1 (clé d'unité normalisée + promesse + prix ; puis attributs) |29| `prix_symbolique` | 5 | prix remplacé par 1 $ | R4 (prix < 5 000 $) |30| `meubles_inclus` | 8 | `montant_meubles` ~ U(8 000 ; 35 000) arrondi à 500 $, ajouté au prix | R3 (correction : prix − meubles) |31| `superficie_pi2` | 12 | superficie × 10,7639 (saisie en pi²) | R5 (> 450 m² et plausible une fois divisée) |32| `dates_inversees` | 10 | permutation promesse ↔ acte | R2 (acte antérieur à la promesse) |33| `coord_nulles` | 9 | lat = lon = 0 | R6 puis G1 (géocodage de repli au centre du secteur) |34| `coord_hors_zone` | 6 | signe de la longitude inversé (≈ ½) ou lat ↔ lon | R6 puis G1 |35| `vente_liee_declaree` | 8 | prix × U(0,40 ; 0,60), `type_transaction` = « entre personnes liées » (p = 0,65) ou « succession » | R7 |36| `vente_liee_non_declaree` | 6 | prix × U(0,40 ; 0,60), `type_transaction` laissé à « ordinaire » | S1 (score robuste) ou E1 (résidu studentisé) |37| `terrain_manquant` | 20 | `superficie_terrain_m2` = NA | I1 (imputation) |38| `qualite_manquante` | 15 | `qualite_1a5` = NA | I1 |39| `annee_manquante` | 10 | `annee_construction` = NA | I1 |4041Les proportions (≈ 18 % des lignes touchées) sont volontairement élevées pour que chaque mécanisme soit visible ; elles ne mesurent pas la42fréquence des anomalies dans une source réelle (aucune statistique publique sur ce point n'a été trouvée, voir `verification/chapters/ch14-claims.csv`).4344## Pipeline de référence (chapitre 14)45R1 doublons → R2 dates → R3 meubles → R4 prix symbolique → R5 unité de superficie → R6 coordonnées → R7 transactions déclarées non représentatives →46G1 géocodage de repli → I1 imputation (médiane conditionnelle secteur × type) → S1 scores robustes (|z| > 3,5 sur ln prix/m² par secteur, ln superficie,47ln terrain par secteur) → E1 régression (`traite.cas1.hedonique`, exclusion si |t_i| > 3, au plus deux itérations). Résultat : 579 ventes ;48le modèle hédonique réestimé coïncide avec celui du jeu propre à moins de 0,5 erreur-type sur chaque coefficient (σ = 0,0837 contre 0,0830).4950Version du pipeline inscrite dans le journal : `ch14_nettoyage.py 1.0 (2026-10-31)`. Tests : `analysis/python/tests/test_ch14.py`.51