SPB Git forge

spb/wp21_uqo

Public
0commits 0branches 0releases
0 Bsize
maindefault branch
—last push
6.5 KB

# 🌍 The Global Evidence on Housing Price Determinants

UQO Working Paper No. 21 — A Meta-Analysis of Hedonic Pricing Models, 1970–2026

Paper Python Data Reproducible Institution Author

TL;DR — PRISMA-style systematic search (103,011 records → 56,727 unique → 7,083 agent-screened → 2,249 hedonic studies included at stage 1), open-access retrieval (501 PDFs, 18.8 %), LLM-assisted extraction of 297 papers (242 eligible, 2,022 model columns, 18,831 coefficient rows; 20-paper independent double extraction: 100 % numerical agreement on 647 matched coefficients), harmonisation into % premiums / semi-elasticities / elasticities (7,693 usable estimates from 149 studies), and REML, three-level, cluster-robust, PET-PEESE, selection-model, Bayesian and ML meta-analyses of 67 characteristic–family combinations. Living-area elasticity 0.65 [0.61, 0.69]; bathroom +5.9 %; age −0.24 %/yr; CBD distance −3.1 %/km; waterfront +32.5 %; I² ≈ 100 % everywhere; moderators explain little. Extends Sirmans et al. (2005, 2006).


# 📌 Status

Item Value
Version 1.0 (October 2026)
SSRN not yet submitted
Journal —
Code & data reproducible from Makefile; raw PDFs not redistributed (retrieval log allows re-download)

# 🎯 What this paper does

Global, harmonised, uncertainty-aware synthesis of hedonic housing price models with a reproducible pipeline (discovery → screening → retrieval → extraction → validation → harmonisation → meta-analysis → manuscript). Eight research questions (consistency, magnitude, geography, time, estimators, AI-derived characteristics, heterogeneity vs selection, gaps).

# 🏆 Headline results

Object Estimate (REML, 95 % CI; k studies)
Living-area elasticity 0.65 [0.61, 0.69]; k = 46
Bathroom semi-elasticity +5.9 % per bathroom; k = 51
Bedroom (conditional on area) +3.0 % per bedroom; k = 60
Age −0.24 % per year; k = 54
Distance to CBD −3.1 % per km; k = 23
Garage / pool / AC / view / waterfront premiums 5.4 / 4.9 / 10.8 / 8.2 / 32.5 %
Heterogeneity median I² = 100 %; prediction intervals span zero for most characteristics
Moderators 12 of 182 terms significant (RVE); ML meta-regression out-of-study R² < 0
AI synthesis (40 studies) ML beats hedonic benchmark in most same-test-set comparisons (median MAPE 9.0 vs 12.4); 9 studies report incremental gains from AI features

# 🗂 Repository layout

text
hedonic-meta-analysis-global/           (spbgit: wp21_uqo.git)
├── CLAUDE.md · protocol/{preregistration,eligibility,search_strategy}.md
├── data/metadata/ (records, screening decisions, retrieval log, PRISMA counts, competing reviews)
├── data/extracted/ (dumps, json/ per paper, ai/ light extractions) · data/validated/ (double extraction + comparison)
├── data/final/ (studies.csv, coefficients_raw.csv, effects_all.csv, effects.csv, ai_studies.csv)
├── scripts/{discovery,screening,extraction,harmonization,validation,econometrics,visualization}/
├── results/{econometrics,figures,logs}/ · reports/{foundations,search_audit,extraction_audit,methodological_decisions,limitations}.md
├── paper/ (main.tex, sections/, appendices/, tables/, figures/, references.bib → main.pdf)
└── tests/ · requirements.txt · Makefile

# 🚀 Quick start

bash
python3 -m pip install -r requirements.txt   # + R: install.packages(c("metafor","clubSandwich"))
make screen      # deduplicate, rule-screen, audit (from stored records)
make effects     # build studies/coefficients/effects + validation comparison
make models      # R metafor + clubSandwich; Python REML/PET-PEESE/Bayes/ML
make tables figures paper

Discovery (make discover) and retrieval (make fetch) re-query live services and are slow (rate limits); the stored records and logs reproduce the paper as is. Extraction JSONs are stored artefacts of the agent protocol (scripts/extraction/EXTRACTION_PROTOCOL.md).

# 🗃 Data

Bibliographic records from Semantic Scholar bulk API, Crossref, arXiv, OpenAlex (2026-10-20); open-access PDFs via Unpaywall, Semantic Scholar and arXiv (not redistributed; data/metadata/retrieval_log.csv). No proprietary data.

# 🔬 Methodology

  1. Discovery (67 queries, multilingual) and deduplication (DOI + normalised title).
  2. Rule-based + agent screening with coded reasons (PRISMA flow generated from logs).
  3. PyMuPDF page scoring → dumps → agent extraction (JSON schema) → independent double extraction of 20 papers.
  4. Harmonisation: Kennedy-corrected premiums, unit-harmonised semi-elasticities, elasticities, partial correlations; flags.
  5. metafor rma.uni/rma.mv + clubSandwich CR2; Egger, PET-PEESE, step selection model; Gibbs Bayesian; grouped RF/GBM.

# 🖼 Figures & tables inventory

14 figures (fig01_prisma_flow … fig14_summary_evidence) and 23 table fragments (tab01_coverage … tab15_gaps) plus numbers.tex (913 macros), all generated by scripts/visualization/.

# ⚠️ Limitations

See reports/limitations.md and Section 15 of the paper (open-access retrieval bound, agent-based extraction, heterogeneity).

# 📖 Citation

bibtex
@techreport{boucher2026global,
  author = {Boucher, Simon-Pierre}, title = {The Global Evidence on Housing Price Determinants: A Meta-Analysis of Hedonic Pricing Models, 1970--2026},
  institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives}, type = {UQO Working Paper}, number = {21}, year = {2026}, month = {October}
}

# 👤 Author & contact

Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca.

# 📝 Notes

Deviations from the series standard: scripts/<phase>/ instead of numbered scripts; protocol/, reports/ directories; longtables for the diagnostics tables. Numbering: WP21 (WP20 reserved elsewhere).