SPB Git

spb/wp5_uqo Public

UQO Working Paper No. 5 — Airbnb, residential rents and housing market pressure.

TeX 53.4% Python 46.5%
ZIP
NameLast commitUpdated
data Initial commit: restructured UQO WP5 (Airbnb & residential rents) 5 days ago
figures Add extended robustness: clustered SEs, size control, log form, ring... 5 days ago
paper Rebuild final PDF (51 pages, clean pass) 5 days ago
results Add extended robustness: clustered SEs, size control, log form, ring... 5 days ago
scripts Add extended robustness: clustered SEs, size control, log form, ring... 5 days ago
src Initial commit: restructured UQO WP5 (Airbnb & residential rents) 5 days ago
.gitignore Initial commit: restructured UQO WP5 (Airbnb & residential rents) 5 days ago
AUDIT.md Initial commit: restructured UQO WP5 (Airbnb & residential rents) 5 days ago
CHANGES.md Add extended robustness: clustered SEs, size control, log form, ring... 5 days ago
PAPER_REVIEW.md Scholarly upgrade: literature expansion (24 -> 56 refs) and framing... 5 days ago
README.md Redesign README: badge-rich presentation, paper section-by-section... 5 days ago
requirements.txt Initial commit: restructured UQO WP5 (Airbnb & residential rents) 5 days ago
UPGRADE_REPORT.md Scholarly upgrade: literature expansion (24 -> 56 refs) and framing... 5 days ago
README.md

# 🏠 Airbnb, Residential Rents & Housing Market Pressure

# A Hedonic and Spatial Econometric Analysis

UQO Working Paper No. 5


Author Institution Contact


— The paper at a glance —

PDF References Sample Headline Tables Figures Build

— Methods —

OLS Spatial Quantile ML Geo

— Stack —

Python pandas statsmodels scikit-learn PySAL SHAP LaTeX

— Quality —

Reproducible Verified Deterministic Status


# 🧭 Navigation

📜 The Paper 🔍 Abstract 📖 Inside the Paper
🏆 Headline Results 📁 Repository Map 💾 Data
⚙️ Pipeline 📐 Models 🛡️ Robustness
🚀 Reproduce 🧰 Environment ✅ Provenance
📖 Citation 📬 Contact

# 📜 The Paper

# Airbnb, Residential Rents, and Housing Market Pressure:

# A Hedonic and Spatial Econometric Analysis

Simon-Pierre Boucher — Université du Québec en Outaouais UQO Working Paper No. 5 · May 2026 · 51 pages · 56 references

Read

# 🔍 Abstract

This paper investigates the relationship between Airbnb short-term rental activity and residential rents in Quebec, Canada. Using cross-sectional microdata comprising ~5,000 Airbnb listings and ~8,300 rental listings, we employ a hedonic pricing framework augmented with spatial econometric techniques to quantify the conditional association between nearby Airbnb presence and monthly rents. For each rental listing we construct Airbnb exposure measures within 250 m, 500 m, 1 km, and 2 km buffers using Haversine distances. Baseline estimates indicate that an additional Airbnb listing within 500 m is associated with a statistically significant increase in monthly rent of approximately 0.3–0.5%, controlling for dwelling characteristics, building type, and city fixed effects. Quantile regressions reveal that the association is stronger at the upper tail of the rent distribution. A complementary hedonic model of Airbnb nightly prices indicates that short-term rental pricing is driven primarily by listing characteristics. Robustness checks — alternative buffer radii, subsample analyses, and machine-learning benchmarks — confirm the stability of the rent–exposure association. We discuss policy implications for housing affordability and short-term rental regulation, while cautioning that cross-sectional associations should not be interpreted as causal effects.

Keywords: Airbnb · short-term rentals · housing rents · hedonic pricing · spatial econometrics · housing affordability · Quebec JEL: R21 · R31 · L83 · C21


# 📖 Inside the Paper — Section by Section

§ Section What it delivers Key exhibits
1 🎬 Introduction Motivation, the P2P-platform housing channel, the Canadian evidence gap, magnitude preview vs. Berlin/LA quasi-experiments, three contributions
2 📚 Literature Review 10 thematic subsections: correlational → quasi-experimental STR evidence, Canadian & Quebec studies, P2P economics, STR pricing, hedonic theory, spatial econometrics, quantile methods, ML in housing, tourism gentrification & regulation, gap statement 56 refs
3 💾 Data Two scraped microdatasets, cleaning protocol, Haversine spatial buffer merge (6 exposure metrics × 4 radii), summary statistics, geography Tables 1–2 · Figures 1–3
4 📐 Methodology Six models: hedonic rent (1a–1e), Airbnb pricing (2a–2c), city-level (3), SAR/SEM via Kelejian–Prucha GMM (4), quantile (5), ML benchmark (6); identification & endogeneity discussion Equations 1–6
5 📊 Results β = 0.0039*** per nearby listing; spatial dependence (ρ̂ = 0.137***, λ̂ = 0.539); quantile gradient .0037→.0047; superhost discount; RF test R² = 0.71 Tables 3–9 · Figures 4–7
6 🛡️ Robustness Buffer decay, alternative exposures, subsamples, trimming, city-clustered SEs, size control, log form, ring decomposition, leave-one-city-out Tables 10–12 · Figures 8–10
7 💬 Discussion Magnitudes benchmarked against Berlin ($6–10 ≈ 7–13 €/listing), LA & Boston; two candid disagreements with the literature; policy for CITQ/Montreal zoning; 7 limitations; future work
8 🎯 Conclusion Five findings, cross-design corroboration, no overselling
A–C 📎 Appendices Variable dictionary, city-name standardisation, sample attrition · Haversine & KNN-weights formulas, estimator details · supplementary robustness Tables A1–A2

# 🏆 Headline Results

F1 F2 F3 F4 F5 F6

# Finding Evidence
1 Each additional Airbnb listing within 500 m≈ +0.4% monthly rent (0.3–0.5% across specs) — ≈ $6–10/month at the median rent, the same order as Berlin's quasi-experimental 7–13 €/listing Table 3 (1c) · §7.1
2 Per-listing association decays monotonically with distance Table 10 · Fig. 4
3 Significant at every quantile, rising to 0.0047 at τ = 0.90 (~25% above OLS) Table 7 · Fig. 5
4 Spatial dependence is substantial and the coefficient survives GMM spatial models with mild attenuation (0.0034) Table 6
5 Airbnb nightly prices driven by listing characteristics; superhost enters with a discount (vs. premia in prior work — discussed, not hidden) Table 4 · §7.1
6 Robust to city-clustered SEs (tighter than HC1), size control, log(1+count), ring decomposition, trimming, and dropping any of the 8 largest cities Table 12 · Fig. 9

# 📁 Repository Map

wp5_uqo/
├── 📄 README.md                    ← you are here
├── 🔎 AUDIT.md                     ← forensic audit of the original project
├── 📝 CHANGES.md                   ← restructuring & rewrite log
├── 🧪 PAPER_REVIEW.md              ← pre-upgrade critical assessment
├── 📚 UPGRADE_REPORT.md            ← literature expansion report (per-ref justification)
├── 📦 requirements.txt             ← pinned dependencies

├── data/
│   ├── raw/                        ← airbnb.csv + rent.json (NOT distributed → README)
│   └── processed/                  ← 5 verified parquet datasets (committed)

├── src/                            ← shared modules
│   ├── config.py                   ← all paths & constants
│   ├── geo.py                      ← vectorised Haversine matrix
│   ├── latex_tables.py             ← stargazer-style table builder
│   └── plotting.py                 ← publication matplotlib styles

├── scripts/                        ← 01 → 11 numbered pipeline
├── figures/                        ← 16 publication PDF figures
├── results/tables/                 ← 13 LaTeX fragments + 4 CSVs
├── results/logs/                   ← data-inspection log

└── paper/                          ← LaTeX → 📄 main.pdf (51 pages)
    ├── main.tex · references.bib (56 entries) · Makefile
    ├── sections/  (titlepage + 8 sections)
    └── appendix/  (data · methods · robustness)

# 💾 Data

Airbnb Realtor Merge Coverage

Dataset Source Raw → Clean Key fields
🛏️ Airbnb listings Airbnb (scraped) ~5,000 → 3,456 nightly price, lat/lon, property type, rating, reviews, superhost
🏢 Rental listings Realtor.ca (scraped) 8,356 → 8,303 monthly rent, lat/lon, bedrooms, bathrooms, building type, size

Spatial merge — for every rental listing × radius r ∈ {250 m, 500 m, 1 km, 2 km}, six metrics computed against all Airbnb listings via chunked vectorised Haversine distances: count · density · mean_price · share_entire_home · mean_rating · superhost_share, plus city-level aggregates.

🔒 Raw files are not distributed (data/raw/README.md). The committed parquets make steps 04–11 and the paper fully reproducible without them.


# ⚙️ Analysis Pipeline

Step Script Produces
01 01_inspect_raw_data.py data dictionary log
02 02_clean_airbnb.py airbnb_clean.parquet
03 03_clean_rent.py rent_clean.parquet
04 04_merge_data.py 3 merged parquets (buffer merge) ~1 min
05 05_descriptive_analysis.py 3 tables + 7 figures
06 06_hedonic_models.py Models 1–3 → 3 tables
07 07_spatial_models.py SAR/SEM + buffer robustness ~1 min
08 08_quantile_models.py quantile table + coefficient path ~1 min
09 09_ml_robustness.py ML comparison + SHAP figures ~2 min
10 10_robustness_tables_figures.py outlier/subsample tables + 3 figures
11 11_extended_robustness.py clustered SEs · ring · leave-one-out ~1 min

⚡ = under 15 s on Apple Silicon. Everything reads/writes through src/config.py; fully deterministic (seed 42).


# 📐 Econometric Models

Model Specification Estimator
1a–1e log_rent ~ airbnb_count_500m + X + building type [+ city FE]; variants: density, entire-home share OLS · HC1
2a–2c log_price ~ mean_rent_city + listing controls [+ city FE] OLS · HC1
3 city-level forward & reverse regressions (153 cities) OLS · HC1
4 SAR & SEM, KNN(k=5) row-standardised weights GMM — GM_Lag / GM_Error (Kelejian–Prucha)
5 quantile regressions, τ ∈ {.10, .25, .50, .75, .90} + fine grid IRLS (statsmodels)
6 OLS / LASSO / ENet / RF / GBM, 80/20 split, SHAP attribution scikit-learn

# 🛡️ Robustness Programme

R1 R2 R3 R4 R5 R6 R7 R8 R9

The Airbnb coefficient stays positive and significant at 1% in every single check; the leave-one-city-out range is 0.0038–0.0040 — excluding Montreal (half the sample) barely moves it.


# 🚀 Reproducing Everything

git clone https://github.com/spboucher-ai/wp5_uqo.git && cd wp5_uqo
python3 -m pip install -r requirements.txt

# full pipeline (steps 01–03 optional: need data/raw/)
for s in scripts/0{4..9}_*.py scripts/1{0,1}_*.py; do python3 "$s"; done

cd paper && latexmk        # → paper/main.pdf  (51 pages)

# 🧰 Environment & Dependencies

Verified on macOS (Apple Silicon) · Python 3.14.4 · TeX Live 2025.

Package Pinned Role
pandas / pyarrow 3.0.2 / 24.0.0 wrangling, parquet I/O
numpy / scipy 2.4.4 / 1.17.1 Haversine, KD-tree
statsmodels 0.14.6 OLS (HC1/cluster), quantile regression
libpysal / spreg 4.14.1 / 1.9.0 KNN weights, SAR/SEM (GMM)
scikit-learn 1.6.1 LASSO, ENet, RF, GBM
shap 0.48.0 SHAP values
matplotlib 3.10.9 all figures

# ✅ Verification & Provenance

Rebuilt on 2026-08-05 from the original project (kept untouched as backup) under a strict no-result-changes policy:

  • ✅ 3/3 merged parquets value-identical to the originals
  • 14/16 tables byte-identical (2 residual float-level diffs documented in AUDIT.md §8)
  • ✅ All figures regenerated, including 5 missing from the original (which broke its LaTeX build)
  • ✅ Every text↔table inconsistency corrected in the prose only — itemised in CHANGES.md
  • ✅ All 32 references added in the scholarly upgrade verified via Crossref/JMLR (DOIs) — per-reference justification in UPGRADE_REPORT.md

# 📖 Citation

@techreport{boucher2026airbnb,
  author      = {Boucher, Simon-Pierre},
  title       = {Airbnb, Residential Rents, and Housing Market Pressure:
                 A Hedonic and Spatial Econometric Analysis},
  institution = {Universit\'e du Qu\'ebec en Outaouais,
                 D\'epartement des sciences administratives},
  type        = {Working Paper},
  number      = {5},
  year        = {2026},
  month       = {May},
  address     = {Gatineau, QC, Canada}
}

# 📬 Contact

Simon-Pierre Boucher Département des sciences administratives · Université du Québec en Outaouais 283, boulevard Alexandre-Taché, Gatineau (Québec) J9A 1L8, Canada

Email UQO

Issues and PRs welcome — please do not request the raw scraped data, which cannot be redistributed.



© 2026 Simon-Pierre Boucher — UQO Working Paper No. 5 · Code and manuscript for academic use.