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:
- 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.
- 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_dummywas a constant zero. - 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).
- 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.
- 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. - 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 vssuperhost_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.