spb/traite-evaluation-qc
Public
1# Chapitre 36 — Données de panel et identification causale : bilan de rédaction (2026-10-31)23## Compteurs4- Prose : ≈ 10 000 mots hors tableaux, figures, équations et commandes (≈ 14 300 mots bruts avec `wc -w`) ; 40 pages compilées (chapitre + solutions + bibliographie du chapitre).5- Figures : 7 (6 PDF Matplotlib + 1 schéma TikZ) — `ch36-fig-trajectoires`, `ch36-fig-event-study`, `ch36-fig-bacon`, `ch36-fig-synthetique`, `ch36-fig-discontinuite`, `ch36-fig-sensibilite` ; chronologie du plan (TikZ, `\resizebox`). Toutes sur données synthétiques (cas 4 + choc déclaré ; simulation transversale ; panel artificiel « laboratoire »).6- Tableaux : 9 (plans d'identification ; cellules du 2 × 2 ; TWFE et trois erreurs-types ; coefficients de l'étude d'événement ; décomposition de Goodman-Bacon ; laboratoire ; Callaway–Sant'Anna ; bilan des estimateurs ; sensibilité et groupes témoins).7- Équations numérotées : 19 ; 1 définition (ATT) ; 1 proposition démontrée (within = indicatrices, Frisch–Waugh–Lovell).8- Exercices : 7 (niveaux 1, 1, 2, 2, 2, 3, 3) ; solutions détaillées dans `solutions/ch36.tex`, chiffres testés (ex. 1, 2, 3, 5, 6, 7).9- Encadrés : objectifs, définition, proposition, synthetique, exemple (court, étapes détaillées hors boîte comme au ch. 18), quebec, erreurs, limites, synthese.10- Citations : 18 clés distinctes, toutes déjà dans `references/library.bib` ; `references/lib-ch36.bib` ne contient aucune nouvelle entrée (commentaire explicatif).1112## Contrôles13- `tools/compile_chapter.sh 36` → `OK ch36 : 40 pages, 0 references/citations non definies, 1 overfull hbox`. L'unique overfull (29,7 pt) est dans la **bibliographie** (titre de `dubeLegrosTheriaultDesrosiers2017`, « (STDID) Estimator » insécable) ; il ne vient pas du chapitre et se corrigera dans `library.bib` (ajouter `\allowbreak` ou raccourcir le titre) lors de l'harmonisation.14- `python3 -m pytest -q analysis/python/tests/test_ch36.py` → 19 passed (7 tests génériques de `traite.panel` sur données simulées : within = LSDV, grappes unitaires = HC1, TWFE retrouve un effet constant, étude d'événement retrouve un profil, identité de Bacon + CS corrige un TWFE biaisé, contrôle synthétique retrouve des poids exacts, RDD retrouve un saut ; 10 tests des chiffres du chapitre ; 2 tests des solutions). `test_cas2_cas4.py` et `test_hedonique.py` ne sont pas touchés (aucune fonction existante modifiée).15- `python3 tools/check_manuscript.py --no-log` : les seuls messages pour ch36 sont « figure … non inscrite dans verification/figures.csv » (6), conséquence de la règle de collision (fichiers par chapitre `verification/chapters/ch36-figures.csv`, jamais les CSV globaux) ; à fusionner en phase 5.16- Contrôle croisé (`ch36_panel.py --controle`) : `linearmodels.PanelOLS` (effets entité + temps, grappes par entité) donne D = 0,090460 (identique à 1e-6) et ET 0,0196 contre 0,0198 maison (CR1 ; linearmodels n'applique pas le facteur (N−1)/(N−K)) ; `statsmodels` `cov_type="cluster"` donne 0,0198 exactement et HC1 0,005289 identique.17- PDF relu : 4 planches de contact (40 pages) + pages 13, 19, 21, 23 à plus forte résolution ; légende de la figure de Bacon déplacée sous les axes après relecture ; tableaux en `\footnotesize` avec `\tabcolsep` 4 pt ; aucun débordement restant dans le chapitre.18- Convention `\cref` sans article respectée ; étiquettes `eq:36:*`, `tab:36:*`, `fig:36:*`, `sec:36:*`, `ex:36:k`, `def:36-att`, `prop:36-within`.1920## Fichiers livrés21`manuscript/chapters/ch36.tex`, `solutions/ch36.tex`, `analysis/python/traite/panel.py` (NOUVEAU module : `mco_grappes`, `within`, `within_deux_voies`, `estimateur_within`, `indicatrices`, `twfe`, `did_2x2`, `event_study`, `callaway_santanna`, `bacon`, `controle_synthetique`, `placebos_synthetiques`, `rdd_local_lineaire`), `analysis/python/cases/ch36_panel.py`, `analysis/python/figures/ch36_figures.py`, `analysis/python/tests/test_ch36.py`, `assets/figures/ch36/*.pdf` (6), `verification/chapters/ch36-{figures,calculations,claims,registry}.csv`, `references/lib-ch36.bib`, ce bilan. Rien d'écrit dans les CSV globaux ni dans `library.bib` ; `hedonique.py`, `cas4.py` et les données synthétiques ne sont pas modifiés.2223## Résultats clés (données synthétiques, cas 4 + choc déclaré)24- Plan : cohorte A = 8 immeubles de Montréal dès 2022T3 ; cohorte B = 5 immeubles de Gatineau dès 2024T3 ; 35 jamais traités ; δ(k) = 0,01(k+1) pour k ≤ 3 puis 0,04 + 0,0025(k−3). Vérité : ATT global 0,0454 (A 0,0484 ; B 0,0356 ; fenêtre 2 × 2 0,0462).25- 2 × 2 (témoins Montréal) 0,0534 (ET 0,0201) ; placebo 2019T3 0,0155 (0,0101).26- TWFE statique : effets communs 0,0905 (biais de tendance régionale) ; RMR × trimestre 0,0702 (ET grappes 0,0264 ; ET classique 0,0054 → rapport 4,9).27- Étude d'événement : profil retrouvé (k = 3 : 0,0410 vs 0,04) ; coefficients pré ≈ −0,015 (référence k = −1 sur un point haut).28- Bacon : identité Σ s·β = TWFE exacte ; comparaison interdite 0,0403 (poids 0,015) sur le cas 4 ; laboratoire : TWFE 0,0233 vs vrai 0,0692, comparaison interdite −0,0356 (poids 0,33), CS 0,0601.29- Callaway–Sant'Anna (même RMR) : 0,0481 (ET boot 0,0116) ; avec tous les témoins, la cohorte B est surestimée (0,0521 vs 0,0356).30- Contrôle synthétique : 0,0363 (sous-estimation), RMSPE pré 0,0031, rang 1/36 (p = 0,028) ; variantes de bassin 0,0375–0,0452.31- RDD : 0,032–0,058 selon la bande (vrai 0,05), naïf 0,114.32- Tendances parallèles violées (+1 pt/an) : 2 × 2 0,0734 (biais = 0,02 exactement), TWFE 0,1227, pente pré 0,0036 vs 0,0011 ; corrections 0,0609 (tendance de groupe) et 0,0426 (2 × 2 détendancé).3334## Points non vérifiés ou partiellement vérifiés (voir ch36-claims.csv)351. Seuils de distance de Linden–Rockoff (0,1 / 0,3 mille) et de Currie et al. (0,5 / 2 milles) cités d'après les résumés (CLM-36-02, 36-03).362. « Leçons » attribuées aux travaux de Dubé et coauteurs (effet dès l'annonce, décroissance avec la distance) : généralisations sans chiffre (CLM-36-04).373. Stabilité de l'identifiant d'unité d'évaluation entre rôles triennaux dans le jeu Données Québec : non vérifiée dans les métadonnées (CLM-36-06).384. Bertrand–Duflo–Mullainathan (2004), Hausman (1978), Moulton (1986) : non cités (absents de `library.bib`) ; points attribués à Wooldridge (2010) et Angrist–Pischke (2009).395. Le bootstrap de Callaway–Sant'Anna est un bootstrap par blocs stratifié « maison » (pas le bootstrap multiplicateur de l'article) ; signalé dans `limites`.406. Les séries du cas 4 étant des marches aléatoires, les coefficients pré-traitement de l'étude d'événement ne sont pas exactement nuls (≈ −0,015) ; le texte l'explique (trimestre de référence sur un point haut) plutôt que de le masquer.4142## Suggestions pour l'harmonisation43- Le ch. 8 (§ Val-Fictif) renvoie déjà au ch. 36 pour les conditions d'identification ; le ch. 43 (inondations) peut réutiliser `traite.panel.event_study` et `callaway_santanna` (cohortes = secteurs cartographiés) ; le ch. 48 peut reprendre le panel simulé comme scénario de risque de portefeuille ; le ch. 35 peut citer la \cref{prop:36-within} pour l'équivalence indicatrices/within des indices.44- Corriger dans `library.bib` le titre de `dubeLegrosTheriaultDesrosiers2017` (overfull bibliographique) ; envisager d'ajouter Bertrand–Duflo–Mullainathan (2004, QJE 119(1), 249–275) après vérification Crossref.45- `data/synthetic/README.md` ne donne pas les taux de croissance régionaux du générateur du cas 4 (3,5 % Montréal, 4 % Gatineau, 3 % Québec et Sherbrooke, 2,5 % Trois-Rivières, 2 % Saguenay, lus dans `synth.py`) ; les y ajouter rendrait le biais de tendance régionale du ch. 36 vérifiable par le lecteur.46- Le `check_manuscript.py` devrait lire aussi `verification/chapters/chNN-figures.csv` pour ne plus signaler les figures des chapitres rédigés sous la règle de collision.47