SPB Git forge

spb/wp1_uqo

Public
3commits 1branches 1releases
2.6 MBsize
maindefault branch
25 min agolast push
TeX 52% Python 47.9%
8.5 KB

# 🏡 Heterogeneous Amenity Capitalization in the Quebec Residential Market

UQO Working Paper No. 1 — A Spatial Quantile Regression Approach

Paper Python Data Reproducible Institution Author

TL;DR — Do neighbourhood amenities capitalize into house prices the same way at the bottom and at the top of the price distribution? Using 42,481 Centris listings in four segments (houses, condos, plexes, land), we estimate quantile regressions at τ ∈ {.10, .25, .50, .75, .90} augmented with an instrumented spatial lag (two-stage spatial quantile regression, 2SQR). Coefficient homogeneity across quantiles is rejected (omnibus χ²(7) = 35.7, p < 0.001 for houses): park proximity is worth +8.7% at the 10th percentile and nothing at the 90th; hospital proximity is a −8.2% discount at the bottom and vanishes at the top. The spatial lag ρ is positive and significant in every segment (Moran's I on OLS residuals 0.44–0.55). First multi-segment spatial quantile analysis of amenity capitalization for Quebec.


# 📌 Status

Item Value
Version 1.0 (May 2026)
SSRN not yet submitted
Journal —
Code & data reproducible from scripts/; the Centris snapshot is not redistributed (see data/raw/README.md)

# 🎯 What this paper does

Standard hedonic models estimated by OLS impose a single implicit price for every attribute, whatever the price segment. This paper asks whether the capitalization of neighbourhood amenities (hospitals, parks, transit, schools, shopping) varies along the conditional price distribution of Quebec residential listings, and whether that heterogeneity survives once spatial dependence is taken into account.

text
Q_τ(ln P_i | X_i, W ln P) = α(τ) + ρ(τ) · [W ln P]_i + X_i'β(τ)       τ ∈ {.10, .25, .50, .75, .90}

The spatial lag W ln P is instrumented by spatially lagged covariates (Kim & Muller, 2004), standard errors are bootstrapped (200 replications), inter-quantile Wald tests probe β(τ_low) = β(τ_high), and Moran's I on residuals diagnoses remaining spatial autocorrelation. The analysis is run separately for single-family houses, condominiums, multiplexes and vacant land.

# 🏆 Headline results

Object Estimate
Omnibus Wald test of coefficient homogeneity (houses) χ²(7) = 35.74, p < 0.001
Hospital proximity, τ = .10 → .90 −0.082 (sig.) → positive, insignificant
Park proximity, τ = .10 → .90 +0.087 (p < 0.001) → −0.044 (n.s.)
Transit proximity, τ = .10 → .90 +0.074 → −0.008
Spatial lag ρ (τ = .50) 0.29 (houses), 0.20 (condos); positive and significant in all segments
Moran's I on OLS residuals 0.44 – 0.55 across segments
First-stage F-statistics > 100 in every segment

Interpretation: listing prices and cross-sectional variation only, so coefficients are quantile-specific capitalization gradients, not causal effects.

# 🗂 Repository layout

text
amenity-capitalization-spatial-quantile/
├── data/
│   ├── raw/                  # Centris JSON snapshot (see data/raw/README.md) — not committed
│   └── processed/
├── scripts/                  # the pipeline, in order
│   ├── 01_hedonic_ols_v1.py          # baseline log-linear OLS, single-family subset
│   ├── 02_hedonic_ols_v2.py          # quadratic terms, surface selection correction, spatial interactions
│   ├── 03_hedonic_ols_final.py       # final OLS specification (centred variables, HC3)
│   ├── 04_quantile_spatial_hedonic.py # QR + instrumented spatial lag, Moran, Wald (houses)
│   └── 05_sqr_multi_segment.py       # full multi-segment 2SQR with bootstrap, figures, tables (the paper)
├── results/
│   └── sqr_multi_segment_output.txt  # complete console output of step 05
├── figures/                  # fig2_wtp_by_quantile.png (others regenerated by step 05)
└── paper/                    # main.tex + sections/ + tables/ → main.pdf

# 🚀 Quick start

bash
python3 -m pip install -r requirements.txt
# put the Centris JSON snapshot in data/raw/, then:
python3 scripts/03_hedonic_ols_final.py                       # OLS benchmark
python3 scripts/05_sqr_multi_segment.py data/raw/house_listings_1767845793472.json   # 2SQR, 4 segments, figures fig1–fig7, LaTeX tables
cd paper && make                                              # latexmk → main.pdf

Runtime ≈ 15 minutes on an Apple-silicon laptop (bootstrap 200 × 5 quantiles × 4 segments).

# 🗃 Data

42,481 Centris listings (Quebec, May 2026) with asking price, structural characteristics, coordinates and distances to amenities; four segments. Listings with missing price, area or coordinates are dropped; prices are winsorized at 1/99%. Details and access conditions in data/raw/README.md.

# 🔬 Methodology

  1. OLS hedonic benchmark (log-linear, HC3) — scripts/03_hedonic_ols_final.py.
  2. Quantile regression (Koenker & Bassett, 1978) at five quantiles — scripts/04_…, scripts/05_….
  3. Two-stage spatial quantile regression: spatial lag of log price built from a k-nearest-neighbour weight matrix, instrumented by lagged covariates (Kim & Muller, 2004) — scripts/05_sqr_multi_segment.py.
  4. Inference: 200-replication bootstrap standard errors; inter-quantile Wald tests; Moran's I on residuals; sensitivity to k (number of neighbours).
  5. Willingness-to-pay by quantile, direct/indirect effects at τ = .50.

# 🖼 Figures & tables inventory

Figure Content
fig1_coef_plots_amenities amenity coefficients across quantiles, by segment
fig2_wtp_by_quantile willingness to pay by quantile
fig3_ols_vs_qr_vs_sqr OLS vs QR vs 2SQR coefficients
fig4_pseudo_r2 pseudo-R² by quantile
fig5_spatial_lag_rho spatial lag ρ(τ)
fig6_price_distributions price distributions by segment
fig7_wald_heatmap inter-quantile Wald tests

Tables (paper/tables/*.tex): sample, variables, descriptives (houses / other segments), specification, QR houses, SQR ρ, first stage, Moran (OLS / SQR), Wald, WTP, effects, amenity correlations, sensitivity to k.

# ⚠️ Limitations

  • Listing (asking) prices, not transaction prices; cross-section only.
  • Amenity distances are straight-line; no quality adjustment of amenities.
  • Spatial weights based on k nearest neighbours; results are checked for k but not for alternative kernels.
  • Quantile-specific coefficients are capitalization gradients, not causal effects.

# 📝 Citation

bibtex
@techreport{boucher2026amenity,
  author      = {Boucher, Simon-Pierre},
  title       = {Heterogeneous Amenity Capitalization in the Quebec Residential Market: A Spatial Quantile Regression Approach},
  institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},
  type        = {Working Paper},
  number      = {1},
  year        = {2026},
  month       = {May}
}

# 👤 Author & contact

Simon-Pierre Boucher — Département des sciences administratives, Université du Québec en Outaouais (UQO), Gatineau, QC. 📧 simon-pierre.boucher@uqo.ca

# 🗒 Notes

  • Bibliography is an inline thebibliography (paper/sections/references.tex, 103 entries), not a .bib file — kept as is (deviation from Recherche-UQO/HARMONISATION.md §3).
  • Figures 1 and 3–7 are not stored in the repository; paper/main.tex prints a placeholder box for a missing figure. Run scripts/05_sqr_multi_segment.py with the data snapshot and copy the PNGs to paper/figures/ to restore them.
  • The original flat LaTeX draft (paper_sqr_hedonic.tex, May 2026) is archived in Recherche-UQO/_archives/versions-mai-2026/amenity-capitalization--flat-tex-20260519/.
  • Cover date corrected from "May 2025" (typo) to May 2026 during the 2026-10-17 harmonisation.