SPB Git

# Chapitre 36 — Données de panel et identification causale : bilan de rédaction (2026-10-31)

# Compteurs

  • 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).
  • 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 »).
  • 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).
  • Équations numérotées : 19 ; 1 définition (ATT) ; 1 proposition démontrée (within = indicatrices, Frisch–Waugh–Lovell).
  • 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).
  • Encadrés : objectifs, définition, proposition, synthetique, exemple (court, étapes détaillées hors boîte comme au ch. 18), quebec, erreurs, limites, synthese.
  • Citations : 18 clés distinctes, toutes déjà dans references/library.bib ; references/lib-ch36.bib ne contient aucune nouvelle entrée (commentaire explicatif).

# Contrôles

  • 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.
  • 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).
  • 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.
  • 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.
  • 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.
  • Convention \cref sans article respectée ; étiquettes eq:36:*, tab:36:*, fig:36:*, sec:36:*, ex:36:k, def:36-att, prop:36-within.

# Fichiers livrés

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.

# Résultats clés (données synthétiques, cas 4 + choc déclaré)

  • 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).
  • 2 × 2 (témoins Montréal) 0,0534 (ET 0,0201) ; placebo 2019T3 0,0155 (0,0101).
  • 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).
  • É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).
  • 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.
  • 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).
  • 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.
  • RDD : 0,032–0,058 selon la bande (vrai 0,05), naïf 0,114.
  • 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é).

# Points non vérifiés ou partiellement vérifiés (voir ch36-claims.csv)

  1. 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).
  2. « 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).
  3. 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).
  4. Bertrand–Duflo–Mullainathan (2004), Hausman (1978), Moulton (1986) : non cités (absents de library.bib) ; points attribués à Wooldridge (2010) et Angrist–Pischke (2009).
  5. Le bootstrap de Callaway–Sant'Anna est un bootstrap par blocs stratifié « maison » (pas le bootstrap multiplicateur de l'article) ; signalé dans limites.
  6. 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.

# Suggestions pour l'harmonisation

  • 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.
  • 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.
  • 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.
  • 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.
Files · b89896847ac1aae8938f8bc73852056ce0ce4556
Menu

Theme