SPB Git forge

spb/wp4_uqo

Public
3commits 1branches 1releases
5.4 MBsize
maindefault branch
1 h agolast push
Python 64.6% TeX 23.3% HTML 11.6% Makefile 0.5%
17.2 KB

# Editorial-board review — UQO Working Paper No. 4

Hedonic Pricing of Short-Term Rental Properties: A Multi-Method Analysis of Airbnb Listing Prices in Quebec Version reviewed: 1.0 (May 2026, never audited) → revised version 1.1 (October 2026). Reference state: git tag pre-revision-20261017, docs/main_pre-revision-20261017.pdf (28 pages). Companion document: docs/CHANGELOG-REVISION.md (audit trail of every change, references added, scripts run).

# 1. Summary verdict

The v1.0 manuscript was not a publishable paper; it was a pipeline report whose text had been written around whatever the code produced. The code, run on a data set whose fields had been misdescribed, produced numbers that no referee would accept and several that were not results at all:

  1. The dependent variable was contaminated. The displayed price field is bimodal on the log scale (modes near $150 and $2,500; 26.5 % of the 3,456 priced listings above $1,000). Bedroom by bedroom, listings above $1,000 are priced 16–19 times those below: the upper mode records the total price of multi-night stays (about 23 nights), concentrated among small Montreal rental units with few reviews. v1.0 modelled the mixture as if it were a nightly price and obtained $R^2$ of 0.05–0.27, a "has reviews" coefficient of 9.5 log points, a "bedrooms" premium of +213 % and a Winsorisation band of $38–$10,822 for "nightly" prices.
  2. Five regressors were fabricated or mislabelled. The "luxury", "business travel", "family comfort", "leisure" and "remote work" amenity indices were the normalised amenity count plus Gaussian noise (σ = 0.05, src/amenities.py, _proxy_indices_from_count); the "business travel index −68.5 %" result is noise. "Entire home / private room / shared room" were relabelled property-type groups ("Rental unit" → "private room", "Other" → "shared room"); the scrape has no room type. "Multi-listing host" was a duplicated-title proxy; host_professional_dummy was a constant zero.
  3. Several reported analyses had not been executed as described. The spatial section contained no estimate (spreg was absent; fallbacks ran and nothing was reported); "CatBoost" and "GAM" were sklearn fallbacks; SHAP was a permutation importance (no SHAP table or figure was ever produced); MAPE was computed on log prices (the "14.3 %" is meaningless).
  4. The decomposition table was arithmetically impossible (mean predicted log price 3.99 vs actual 5.87, intercept 0, location and text components identically 0, residual mean 1.16 for an OLS with intercept): the feature-group keys did not match the model's blocks.
  5. The design matrix contained exact duplicates (is_superhost = superhost_flag, is_guest_favorite = guest_favorite_flag, log_beds = log_bedrooms) and an exhaustive set of "room-type" dummies plus a constant; the quantile table's three "room-type" coefficients of ≈ 1.0 are pseudo-inverse artefacts. A K-means cluster label was used as a continuous regressor ("Spatial cluster −1.3 %"). The M8/M9 sample (N = 1,906) was selected on having a priced neighbour within 500 m.
  6. The data source was misattributed (Inside Airbnb with amenity lists, host profiles, descriptions, calendars) and the text referred to "seasons" in a single cross-section.

The paper has been rebuilt from the data up: the price-regime problem is modelled explicitly (two-regime mixture of hedonic regressions, EM), the structured card title is parsed to recover the rating, bathrooms, studios and title category, a parsimonious hedonic specification with city fixed effects is estimated with HC3 and clustered inference, quantile, SAR/SEM/SDM (with LeSage–Pace impacts) and five learners under random and spatially blocked cross-validation are run for real, and every number in the text is produced by scripts/10_revision_reanalysis.py. The revised paper is an honest, internally consistent hedonic study of a sparse scrape; its contribution is the Quebec evidence plus the measurement lesson.

# 2. Section-by-section diagnosis (v1.0 → v1.1)

Section Strengths (v1.0) Weaknesses / errors found Action
Abstract Clear structure Claims SHAP, CatBoost, spatial models and "amenity indices" that were not estimated/not real; R² 0.052–0.274 on a contaminated variable; "comprehensive" Rewritten around the regime diagnosis and the verified results
1 Introduction Rosen–Lancaster framing; four research questions Literature thin and partly misattributed (Gibbs amenity result cited to the dynamic-pricing paper; Chen & Xie dated 2020; Chattopadhyay & Machemehl 2006 unverifiable; Dogru & Pekin grey literature); "49 features"/"50 parameters"/60 rows in appendix; Quebec gap not established (Deboosere et al. 2019 Montreal absent) Rewritten; literature enriched (32 verified additions, 3 removals); contribution reframed as evidence + measurement
2 Data Cleaning steps listed; summary tables Source misdescribed; bimodality not noticed although mean $1,115 vs median $219 and P75 $1,139 were printed; "0–100 → 0–5 rating conversion" false; "entire home 48.1 %" false; amenity indices fabricated; 810 missing ratings treated as if all in the priced sample; text embeddings of a templated title New §2: scrape content, title parsing, price-field diagnosis (mixture + regime table + figure), analysis sample, descriptives, data limits
3 Methodology Equations for OLS, QR, SAR/SEM/SDM, Moran's I No equation for FE or for the premium correction; reputation score formula ad hoc; Haversine/BallTree detail without purpose; "M9 identical to M8"; random train/test split; MAPE on logs; no impacts New §3: hedonic equation with FE, Kennedy correction, inference, QR with bootstrap, W on projected km, SAR/SEM/SDM + LR test + impacts, random vs blocked CV, SHAP, mixture model
4 Results — Every table affected by items 1–5 above; decomposition impossible; spatial section without numbers; quantile table collinear; "11.1 % per 0.1 rating point" from a coefficient of 1.05 on a 0–5 scale under the contaminated sample Entirely regenerated: 7 tables, 4 figures, all from one script
5 Robustness Several dimensions considered Property-type subsamples labelled "room type"; price-segment regressions condition on the dependent variable; "Ultra-Luxury (> $1,000)" is the stay regime; adj. R² 0.08–0.10 on a different spec than the main model; "stable" claims without a table New §5: regime cut-offs, price-rule samples, weighting, hotel exclusion, Montreal/outside, trimming, 60-cell FE, alternative W
6 Conclusion Lists limitations Repeats the contaminated magnitudes; admits fallbacks only in passing ("CatBoost, pygam, SHAP, PySAL were unavailable") Rewritten
Appendix Full coefficient table 60 rows for "50 covariates", duplicates, pinv artefacts Variable definitions, regime logit, VIF

# 3. Methodology verdicts (master prompt §3)

Point Verdict
Specification justified v1.0: no — 60 regressors incl. duplicates, noise indices, cluster label as continuous. v1.1: parsimonious semi-log with capacity in logs, title category, presentation, reputation, two location variables, city/cell FE; blocks justified in §3.1.
Estimation assumptions explicit v1.1 states the semi-log form, the conditional-association reading, HC3 and clustering, the mixture model's assumptions (common slopes, regime-specific variance, logistic concomitant).
Variables correctly defined v1.0: no (see §1). v1.1: Appendix A lists each variable and its source (field vs title).
Fixed effects appropriate v1.0: none (K-means label as continuous). v1.1: city FE (cities ≥ 15 listings) + 25 cells for the scattered remainder; 60-cell FE as robustness; FE share of SHAP importance reported.
Spatial/temporal dependence v1.0: spatial models not estimated. v1.1: Moran's I on M4/M5 residuals (k = 5, 10), SAR/SEM/SDM by ML on projected-km KNN W, LR test SDM vs SAR, direct/indirect/total impacts with simulated SEs. Temporal: none possible (single cross-section), stated.
Standard errors v1.0: HC3 only. v1.1: HC3 + clustered by FE group (and by 60 cells in the JSON), kernel SEs for QR, bootstrap for inter-quantile differences, simulated SEs for impacts.
Sample construction transparent v1.1: 5,000 → 3,456 priced → mixture classification → 2,480; every step counted; 465 bathroom and 46 bedroom repairs, 456 unrated, 37 truncated ratings documented.
Robustness addresses genuine threats v1.1: the regime classification (cut-offs 0.25/0.75, $600/$1,000 rules, weighting, full sample), composition (hotels, Montreal), outliers (trimming), FE granularity, W choice.
Coefficient interpretation v1.1: elasticities for logs, Kennedy-corrected premia for dummies, rating per 0.1 point, impacts for spatial models, SHAP as attribution not effect.
Statistical vs economic significance v1.1 distinguishes precisely estimated small premia (badges) from large ones (capacity, shared bath).
Causal claims None; §3.1 and §6 state the conditional-association reading explicitly.

# 4. Literature

Removed (unverifiable or inappropriate): Chattopadhyay & Machemehl (2006, Transportation) — no Crossref record for the cited article; Dogru & Pekin (2017, Boston Hospitality Review) — grey literature, no DOI; Apley & Zhu (2020) — not used.

Corrected: Chen & Xie — 2017 (not 2020), IJCHM 29(9); Magno, Cassia & Ugolini (2018) — third author was wrong; Gibbs et al. — the amenity/hedonic result is Gibbs, Guttentag, Gretzel, Morton & Goodwill (2018), JTTM 35(1), DOI 10.1080/10548408.2017.1308292, not the dynamic-pricing paper (kept separately as Gibbs2018dynamic); Pérez-Sánchez given name (V. Raúl); Zhang first author (Zhihua).

Added (32, all Crossref-verified with DOI unless noted): Malpezzi 2003 (10.1002/9780470690680.ch5); Sirmans, Macpherson & Zietz 2005 (10.1080/10835547.2005.12090154); Kuminoff, Parmeter & Pope 2010 (10.1016/j.jeem.2010.06.001); Bishop et al. 2020 (10.1093/reep/reaa001); Teubner, Hawlitschek & Dann 2017 (10.22381/JSME5420173); Ert, Fleischer & Magen 2016 (10.1016/j.tourman.2016.01.013); Zervas, Proserpio & Byers 2017 (10.1509/jmr.15.0204) and 2021 (10.1007/s11002-020-09546-4); Gyódi & Nawaro 2021 (10.1016/j.tourman.2021.104319); Tong & Gunter 2022 (10.1080/13683500.2020.1718619); Cai et al. 2019 (10.3727/108354219X15525055915554); Sainaghi, Abrate & Mauri 2021 (10.1016/j.ijhm.2020.102709); Voltes-Dorta & Sánchez-Medina 2020 (10.1016/j.jhtm.2020.08.015); Lorde, Jacob & Weekes 2019 (10.1016/j.tmp.2019.03.006); Dudás et al. 2017 (10.15196/RS07108); Kakar et al. 2018 (10.1016/j.jhe.2017.08.001); Ikkala & Lampinen 2015 (10.1145/2675133.2675274); Guttentag 2015 (10.1080/13683500.2013.827159); Farronato & Fradkin 2022 (10.1257/aer.20180260); Deboosere et al. 2019 (10.1080/21681376.2019.1592699); Combs, Kerrigan & Wachsmuth 2020 (10.36939/cjur/vol29no1/art274); Wachsmuth & Weisler 2018 (10.1177/0308518X18778038); Barron, Kung & Proserpio 2021 (10.1287/mksc.2020.1227); Halvorsen & Palmquist 1980 and Kennedy 1981 (AER; verified via RePEc records, no DOI); MacKinnon & White 1985 (10.1016/0304-4076(85)90158-7); Cameron & Miller 2015 (10.3368/jhr.50.2.317); Koenker & Hallock 2001 (10.1257/jep.15.4.143); Elhorst 2010 (10.1080/17421770903541772); Lundberg et al. 2020 (10.1038/s42256-019-0138-9); Roberts et al. 2017 (10.1111/ecog.02881).

Retained and re-verified (18, including the corrected Chen & Xie 2017): Rosen 1974; Lancaster 1966; Wang & Nicolau 2017; Gibbs et al. 2018 (dynamic); Pérez-Sánchez et al. 2018; Zhang et al. 2017; Gunter & Önder 2018; Benítez-Aurioles 2018; Magno et al. 2018; Koenker & Bassett 1978; LeSage & Pace 2009; Anselin 1988; Lundberg & Lee 2017; Breiman 2001; Friedman 2001; Chen & Guestrin 2016; Zou & Hastie 2005.

References: 21 (v1.0, 2 unverifiable) → 50 (v1.1, all verified).

# 5. Results: inconsistencies found in v1.0 and what replaces them

  • Abstract/text/README/tables agreed on N = 5,000 / 3,412 / 1,906 and R² 0.052–0.274 but disagreed on the number of regressors (49 features, 50 parameters, 60 appendix rows); the appendix contained duplicated regressors with split pseudo-inverse coefficients (is_superhost −0.065 vs superhost_flag +0.060).
  • "Has reviews" β = 9.511 (premium "> 1,000 %") arose because the M4+ samples required a non-missing rating, making the indicator almost collinear with the constant; the "review component" of the decomposition (mean 6.40) was this artefact.
  • The quantile table's "Is entire home / private room / shared room" coefficients of ≈ 1.0 at every τ were the equal split of the constant across an exhaustive dummy set.
  • Spatial section: text claimed "coefficients qualitatively similar … mild spatial bias" without a single number.
  • ML: MAPE 14.3 % was |Δ ln p| / ln p; "CatBoost" and "GAM" were sklearn fallbacks; the test set (382) came from one random split.
  • Robustness: "adjusted R² 0.083–0.098" referred to a 9-regressor spec, not the 50-regressor main model; price-segment regressions conditioned on the dependent variable.

Replaced by (all verified, rev_key_numbers.json): nightly-regime sample N = 2,480; M1–M5 R² 0.443/0.454/0.461/0.479/0.509; M5 elasticities guests 0.331 (0.037), ln(1+bathrooms) 0.437 (0.070), bedrooms 0.160 (0.042); shared bath −0.385 (−32 % Kennedy); studio +0.147; chalet +0.099 (10.3 %), house +0.079 (8.1 %); ln photos 0.087; ln amenities 0.094; rating 0.337/point; Superhost 0.023 n.s.; Guest Favourite −0.035 n.s.; ln reviews 0.015 n.s.; ln density 0.064; ln distance −0.035 (10 %). Clustered SEs (51 groups) 20–60 % larger for capacity/location. VIF max 4.2. FE-only R² 0.13. Quantiles: pseudo-R² 0.278→0.405; bedrooms 0.014→0.187 (Δ = 0.17, p = 0.08); bathrooms 0.241→0.551; guests 0.374→0.307; ln reviews +0.042→−0.042 (Δ p < 0.001); Superhost +0.081 at τ = 0.10 only. Moran's I: ln p 0.244, M4 residuals 0.126 (z = 10.8), M5 residuals 0.072 (z = 6.2). SAR ρ̂ = 0.200 (0.022), SEM λ̂ = 0.284 (0.028), SDM ρ̂ = 0.261 (0.028); LR SDM vs SAR χ²(20) = 52.8; SAR multiplier 1.25; direct/coefficient ratio 1.006. CV (random | blocked): OLS-M5 0.473 | 0.407; XGBoost 0.559 | 0.483; MdAPE 26–30 %. SHAP shares: guests 20.9 %, bedrooms 9.8 %, density 8.9 %, FE 8.8 %, bathrooms 8.8 %, reviews 8.6 %, rating 6.6 %.

# 6. Verified results vs proposed analyses

Everything reported in v1.1 was executed (scripts/10_revision_reanalysis.py, 172 s plus a 6-minute bootstrap cached in rev_iq_bootstrap.json). Recommended but not executed: (i) Hartigan dip test of unimodality (package not installed; the mixture and the median-ratio table make the point); (ii) a concomitant-variable mixture with city fixed effects in the regime equation; (iii) Conley HAC standard errors (the FE-cluster and 60-cell-cluster SEs are reported instead; KEY.ols.M5_cluster_cell60 is in the JSON but not in a table); (iv) a GWR / spatially varying-coefficient model for the Montreal vs resort heterogeneity; (v) hyper-parameter tuning of the learners by nested CV (fixed, documented settings were used); (vi) SHAP interaction values; (vii) a hedonic model on the stay-regime listings with the implied stay length as an offset (not identified without stay dates).

# 7. Remaining limitations

Asking prices on one day; cleaning fee, room type, host ID, amenity list, minimum stay unobserved; no stay length for the 28 % stay-regime cards (dropped, not corrected); single cross-section (no seasonality despite the v1.0 wording); scrape coverage; city FE for 54 % of listings only (the rest in 25 cells); the ≤ $31 winsorisation floor inherited from the WP 5 cleaning affects 35 listings; Montreal sub-sample small (N = 506).

# 8. Continuity with the research programme

Terminology aligned with WP 1/9/11 ("hedonic price function", "implicit price", "neighbourhood fixed effects", "out-of-sample", MdAPE); the WP 5 price-field diagnosis is cited as the companion paper (UQO WP 5) and extended (mixture of regressions instead of a $1,000 rule, with the rule shown to bias the capacity elasticity to zero). No paragraph is reused from WP 5.

# 9. Maturity for publication

  • Target journals: Journal of Housing Economics (short paper), Tourism Economics, International Journal of Hospitality Management, Journal of Real Estate Research, Current Issues in Tourism; Regional Science and Urban Economics only if the spatial heterogeneity (Montreal vs resort) is developed further.
  • Risks of rejection: (i) data sparseness (no room type / host ID / amenity list) — a referee may ask for a re-scrape with these fields; (ii) the stay-price contamination, now modelled, will still invite the question "why not re-scrape with dates?"; (iii) a single cross-section of asking prices limits the contribution to descriptive hedonics; (iv) the ML section is a benchmark rather than a method contribution.
  • Verdict: publishable as a careful descriptive hedonic working paper with a genuine methodological lesson on scraped prices; before journal submission, a re-scrape recording search dates, stay length, room type and host ID is strongly recommended, after which the mixture model becomes a validation exercise rather than a necessity. Not yet SSRN-posted; v1.1 is suitable for posting.