SPB Git

spb/qwhpi Public

QHPI — Quebec Housing Price Index: quality-adjusted, hierarchically pooled housing price indexes.

Python 63.9% TypeScript 25.4% CSS 5.5% TeX 3.5% SQL 0.8% Makefile 0.5% Dockerfile 0.5%
1.9 KB

# Geography spatial join (SDA 1/20k, version V2026-07)

  • Join computed/loaded in 2.1s for 745,119 transactions
  • join_method=within: 745,119 (100.000%)
  • Distinct regions matched: 17 | municipalities: 1,125

Transactions by administrative region:

  • 16 Montérégie: 134,113
  • 06 Montréal: 116,682
  • 15 Laurentides: 77,374
  • 03 Capitale-Nationale: 73,093
  • 14 Lanaudière: 57,064
  • 05 Estrie: 52,133
  • 07 Outaouais: 44,087
  • 12 Chaudière-Appalaches: 42,729
  • 13 Laval: 28,651
  • 02 Saguenay–Lac-Saint-Jean: 26,725
  • 04 Mauricie: 26,218
  • 17 Centre-du-Québec: 22,995
  • 01 Bas-Saint-Laurent: 17,245
  • 08 Abitibi-Témiscamingue: 12,273
  • 11 Gaspésie–Îles-de-la-Madeleine: 6,452
  • 09 Côte-Nord: 5,911
  • 10 Nord-du-Québec: 1,374

# Validation: joined municipality vs raw city text

  • Name agreement (normalized, containment-tolerant): 99.92%
  • Mismatching pairs saved: outputs/tables/geo_city_mismatch_top300.csv (7 distinct pairs, 618 transactions)

Top 15 mismatch pairs (city text -> joined municipality):

  • 'Saint-Bruno' -> 'Hébertville' (Saguenay–Lac-Saint-Jean): 292
  • 'Courcelles-Saint-Évariste' -> 'Courcelles–Saint-Évariste' (Chaudière-Appalaches): 140
  • 'Saint-Félix-de-Dalquier' -> 'Amos' (Abitibi-Témiscamingue): 95
  • 'Saint-Onésime-d'Ixworth' -> 'La Pocatière' (Bas-Saint-Laurent): 61
  • 'Passes-Dangereuses' -> 'Sainte-Élisabeth-de-Proulx' (Saguenay–Lac-Saint-Jean): 16
  • 'Saint-Guy' -> 'Lac-des-Aigles' (Bas-Saint-Laurent): 13
  • 'TNO aquatique de la MRC d'Argenteuil' -> 'Grenville-sur-la-Rouge' (Laurentides): 1