révision scientifique complète (editorial board, 2026-10-17)
v1.1 → v1.2 (October 2026). Audit des données (variables scolaires imputées à 93 %, ln(lot)=0 pour 16,5 %, valeurs aberrantes), inférence groupée ZIP3/État, estimation État par État, bootstrap apparié des tests inter-quantiles, validation géographique étendue (courbe d'arbres, split apparié, GroupKFold, leave-one-state-out, R² within-state), OLS hors État corrigé (0,539), 23 références vérifiées ajoutées + 28 DOI, sections réécrites, docs/REVIEW-REPORT.md et docs/CHANGELOG-REVISION.md, scripts 05–08, 82 pages. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
60 changed files +4,379 −1,085
modified
README.md
+85 −44
@@ -3,7 +3,7 @@ | ||
| 3 | 3 | |
| 4 | 4 | **UQO Working Paper No. 3** — *A Multi-Method Comparison of Parametric, Quantile, and Machine Learning Approaches* |
| 5 | 5 | |
| 6 | −[-b31b1b?logo=latex&logoColor=white)](paper/main.pdf) | |
| 6 | +[-b31b1b?logo=latex&logoColor=white)](paper/main.pdf) | |
| 7 | 7 | [](requirements.txt) |
| 8 | 8 | [](#-data) |
| 9 | 9 | [](src/wp3/) |
@@ -12,11 +12,16 @@ | ||
| 12 | 12 | [](mailto:simon-pierre.boucher@uqo.ca) |
| 13 | 13 | |
| 14 | 14 | > **TL;DR** — Three hedonic frameworks are compared on **788,842 active Zillow listings** covering all 50 U.S. states and |
| 15 | −> DC. Semi-log OLS with 62 regressors gives R² = 0.634 (0.725 with 886 ZIP3 fixed effects; Moran's *I* = 0.27 on | |
| 16 | −> residuals). Quantile regression rejects coefficient equality between τ = 0.10 and 0.90 for **11 of 13** key variables. | |
| 17 | −> XGBoost reaches R² = 0.833 under a random split but only **0.425–0.547** when ten entire states are held out, and | |
| 18 | −> *removing* geographic features improves geographic-holdout R² to 0.519 — random validation flatters machine learning | |
| 19 | −> through spatial leakage. | |
| 15 | +> DC. Semi-log OLS with 62 regressors gives R² = 0.634 (0.725 out of sample with 885 ZIP3 fixed effects; Moran's *I* = 0.27 | |
| 16 | +> on residuals); cluster-robust standard errors are 8–12× the HC3 errors and leave **33 of 63** coefficients significant. | |
| 17 | +> State-by-state estimation shows living-area elasticities from 0.06 to 1.15; a fully interacted model gains +6.1 pp over | |
| 18 | +> state fixed effects. Paired cluster-bootstrap Wald tests reject coefficient equality between τ = 0.10 and 0.90 for | |
| 19 | +> **10 of 13** key variables. XGBoost reaches R² = 0.833 under a random split but **0.425** when ten states are held | |
| 20 | +> out (median **0.653** across 51 leave-one-state-out models); once 0.6 % of corrupt records are removed, **OLS is as | |
| 21 | +> accurate out of state (0.539)** as the best tree ensemble. The gap is traced to memorised state price levels (within-state | |
| 22 | +> R² = 0.62), to "neighbourhood" variables that are state-median imputations for **93 %** of listings, and to boosting | |
| 23 | +> capacity (held-out R² peaks at 75 rounds). A coding error (ln lot = 0 for 16.5 % of listings) is corrected: lot | |
| 24 | +> elasticity 0.095, not 0.018. | |
| 20 | 25 | |
| 21 | 26 | --- |
| 22 | 27 | |
@@ -24,7 +29,7 @@ | ||
| 24 | 29 | |
| 25 | 30 | | Item | Value | |
| 26 | 31 | |---|---| |
| 27 | −| Version | 1.1 (May 2026) — cover page harmonised to the UQO WP standard, October 2026 | | |
| 32 | +| Version | **1.2 (October 2026)** — revised 2026-10-17 by the editorial-board review (`docs/REVIEW-REPORT.md`, `docs/CHANGELOG-REVISION.md`); v1.1 (May 2026) frozen as git tag `pre-revision-20261017` and `docs/main_pre-revision-20261017.pdf` | | |
| 28 | 33 | | SSRN | not yet submitted | |
| 29 | 34 | | Journal | not yet submitted | |
| 30 | 35 | | Code & data | figures and tables reproducible from stored artifacts; raw Zillow extract (3.2 GB) available on request | |
@@ -35,9 +40,9 @@ The paper compares three frameworks for hedonic housing valuation on a single la | ||
| 35 | 40 | |
| 36 | 41 | | Framework | Question it answers | Headline result | |
| 37 | 42 | |---|---|---| |
| 38 | −| **Semi-log OLS** (62 regressors, HC3 SE) | Average conditional association between an attribute and log listing price | R² = 0.634; price-to-area elasticity 0.63 | | |
| 39 | −| **Quantile regression** (τ ∈ {0.10, 0.25, 0.50, 0.75, 0.90}) | How attribute gradients vary across the price distribution | Equality rejected for 11 of 13 variables | | |
| 40 | −| **Gradient boosting + SHAP** (XGBoost, LightGBM) | How well prices can be predicted, and which features drive predictions | R² = 0.833 (random) vs. 0.425–0.547 (geographic holdout) | | |
| 43 | +| **Semi-log OLS** (62 regressors; HC3, ZIP3- and state-clustered SE; state-by-state) | Average conditional association between an attribute and log listing price, and how much it hides | R² = 0.634; area elasticity 0.63 (0.06–1.15 across states); lot elasticity 0.095 (recoded) | | |
| 44 | +| **Quantile regression** (τ ∈ {0.10, 0.25, 0.50, 0.75, 0.90}; paired cluster bootstrap) | How attribute gradients vary across the price distribution | Equality rejected for 10 of 13 variables (11 under the independence test) | | |
| 45 | +| **Gradient boosting + SHAP** (XGBoost, LightGBM; random / 10-state / GroupKFold / LOSO) | How well prices can be predicted, in seen and unseen markets, and which features drive predictions | R² = 0.833 (random) vs. 0.425 (10 states) vs. 0.653 (LOSO median); within-state 0.62 | | |
| 41 | 46 | |
| 42 | 47 | ``` |
| 43 | 48 | ln P_i = α + x_i'β + μ_g(i) + ε_i g = Census region → state → ZIP3 |
@@ -45,33 +50,42 @@ ln P_i = α + x_i'β + μ_g(i) + ε_i g = Census region → state → ZIP3 | ||
| 45 | 50 | |
| 46 | 51 | The core methodological contribution is a systematic study of **spatial leakage** in hedonic model evaluation: random |
| 47 | 52 | train/test splits let geographically proximate listings appear on both sides of the split, inflating performance |
| 48 | −metrics. Three designs quantify the damage — a 10-state geographic holdout, a 6-stage feature-ablation cascade, and a | |
| 49 | −latitude/longitude augmentation experiment. All estimates are *listing-price* gradients (asking prices), not causal | |
| 50 | −willingness-to-pay parameters. | |
| 53 | +metrics. The revision quantifies the damage with a 10-state holdout, grouped 5-fold CV by state, leave-one-state-out, | |
| 54 | +a size-matched random split and a within-state R², and identifies its mechanics: region dummies, state-median-imputed | |
| 55 | +"neighbourhood" variables (93 % of school ratings) and boosting capacity (held-out R² peaks at 75 rounds, falls to 0.425 | |
| 56 | +at 1,000). All estimates are *listing-price* gradients (asking prices), not causal willingness-to-pay parameters. | |
| 51 | 57 | |
| 52 | 58 | ## 🏆 Headline results |
| 53 | 59 | |
| 54 | −| Model | Random R² | Geo-holdout R² | RMSE (random) | | |
| 55 | −|---|---:|---:|---:| | |
| 56 | −| OLS (62 regressors) | 0.630 | < 0 | 0.491 | | |
| 57 | −| OLS + State FE | 0.678 | — | 0.459 | | |
| 58 | −| OLS + ZIP3 FE | 0.725 | — | 0.423 | | |
| 59 | −| Random Forest | 0.784 | 0.542 | 0.375 | | |
| 60 | −| LightGBM | 0.809 | — | 0.353 | | |
| 61 | −| **XGBoost** | **0.833** | **0.547** | **0.330** | | |
| 62 | −| XGBoost, no geographic features | 0.830 | **0.519** | — | | |
| 63 | −| XGBoost + lat/lon | 0.870 | 0.464 | — | | |
| 64 | − | |
| 65 | −- **Geography does the heavy lifting in OLS**: region dummies → state FE → 886 ZIP3 FE raises out-of-sample R² from | |
| 66 | − 0.630 → 0.678 → 0.725. | |
| 67 | −- **Residual spatial autocorrelation**: Moran's *I* = 0.2745 (SD 0.0076) across three 5,000-listing subsamples, all | |
| 68 | − *p* < 0.001. | |
| 69 | −- **Distributional heterogeneity**: the garage gradient is 10× larger at τ = 0.10 than at τ = 0.90 (*z* = 28.9); the pool | |
| 70 | − premium only emerges above the median. | |
| 60 | +| Model | Random R² | 10-state holdout R² | Within-state R² (10 states) | RMSE (random) | | |
| 61 | +|---|---:|---:|---:|---:| | |
| 62 | +| OLS (62 regressors) | 0.630 | **0.539** (implausible records removed; −2×10⁶ with them) | 0.560 | 0.491 | | |
| 63 | +| OLS + State FE | 0.678 | — | — | 0.459 | | |
| 64 | +| OLS + ZIP3 FE | 0.725 | — | — | 0.423 | | |
| 65 | +| OLS, state-by-state (fully interacted) | 0.751 | — | — | — | | |
| 66 | +| Random Forest | 0.784 | 0.542 | — | 0.375 | | |
| 67 | +| LightGBM | 0.809 | — | — | 0.353 | | |
| 68 | +| **XGBoost, 1,000 rounds** | **0.833** | **0.425** | **0.618** | **0.330** | | |
| 69 | +| XGBoost, 75–100 rounds | 0.75–0.77 | 0.544–0.550 | — | — | | |
| 70 | +| XGBoost, no region dummies | 0.830 | 0.519 | 0.621 | — | | |
| 71 | +| XGBoost, no school variables | 0.817 | 0.377 | 0.596 | — | | |
| 72 | +| XGBoost + 6 missingness indicators | 0.835 | 0.446 | 0.623 | — | | |
| 73 | +| XGBoost + lat/lon | 0.870 | 0.464 | — | — | | |
| 74 | +| XGBoost, grouped 5-fold by state (pooled) | — | 0.620 | 0.657 | — | | |
| 75 | +| XGBoost, leave-one-state-out (51 models) | — | median 0.653 | — | — | | |
| 76 | + | |
| 77 | +- **Geography does the heavy lifting in OLS**: region dummies → state FE → 885 ZIP3 FE raises out-of-sample R² from | |
| 78 | + 0.630 → 0.678 → 0.725; residual Moran's *I* = 0.2745 (SD 0.0076); tree-ensemble test residuals: 0.079 (XGBoost). | |
| 79 | +- **Inference**: ZIP3- and state-clustered SEs are 7.6× and 11.6× HC3 (medians); significant coefficients 57 → 35 → 33 of 63. | |
| 80 | +- **One market or 51?** State-by-state living-area elasticity 0.06–1.15; bedroom, pool, luxury and HOA coefficients change | |
| 81 | + sign in 19–23 states; fully interacted OLS: +6.1 pp over state FE. | |
| 82 | +- **Distributional heterogeneity**: the garage gradient is 10× larger at τ = 0.10 than at τ = 0.90; the pool premium | |
| 83 | + only emerges above the median; 10 of 13 inter-quantile differences survive a paired ZIP3-cluster bootstrap. | |
| 71 | 84 | - **Ablation cascade (XGBoost)**: structural 0.498 → +lot 0.546 → +amenities 0.638 → +neighbourhood **0.814** → +market |
| 72 | − 0.824 → full 0.833. | |
| 73 | −- **SHAP rankings are model-stable** (Spearman ρ = 0.89–0.99 across XGBoost / LightGBM / RF) but not structural. | |
| 74 | −- **Imputation matters**: the lot-size gradient triples (0.018 → 0.059) when state-median-imputed lot sizes are dropped. | |
| 85 | + 0.824 → full 0.833 — but the neighbourhood block is mostly a state encoding (school variables imputed for 93 %). | |
| 86 | +- **Boosting rounds**: held-out-state R² 0.550 at 75 rounds → 0.425 at 1,000 while within-training R² keeps rising. | |
| 87 | +- **SHAP rankings are model-stable** (Spearman ρ = 0.89–0.99) but not structural: the 3rd-ranked feature is a state identifier. | |
| 88 | +- **Lot-size coding**: ln(lot) was 0 for 16.5 % of listings; recoded elasticity 0.095 (not 0.018 / 0.059). | |
| 75 | 89 | |
| 76 | 90 | ## 🗂 Repository layout |
| 77 | 91 | |
@@ -79,7 +93,7 @@ willingness-to-pay parameters. | ||
| 79 | 93 | wp3_uqo/ |
| 80 | 94 | ├── README.md |
| 81 | 95 | ├── requirements.txt # pinned dependencies (validated 2026-08-05) |
| 82 | −├── docs/ # AUDIT.md · CHANGES.md · PAPER_REVIEW.md · UPGRADE_REPORT.md | |
| 96 | +├── docs/ # REVIEW-REPORT.md · CHANGELOG-REVISION.md (2026-10-17) · AUDIT.md · CHANGES.md · PAPER_REVIEW.md · UPGRADE_REPORT.md | |
| 83 | 97 | ├── data/ # NOT tracked (3.2 GB) |
| 84 | 98 | │ ├── raw/us_housing.duckdb # raw Zillow extract (839,313 × 116 + 4 aux tables) |
| 85 | 99 | │ └── processed/ # analytical_sample.pkl · model_data.pkl · shap_data.pkl |
@@ -91,13 +105,18 @@ wp3_uqo/ | ||
| 91 | 105 | ├── scripts/ # the pipeline, in order |
| 92 | 106 | │ ├── 01_spatial_robustness.py # ZIP3 FE OLS · Moran's I · XGB ± geography · ablation |
| 93 | 107 | │ ├── 02_qr_imputation.py # QR stability · inter-quantile Wald · imputation · winsorisation |
| 94 | −│ ├── 03_make_figures.py # all 11 figures + verification stats | |
| 95 | −│ └── 04_export_tables.py # paper tables → results/tables/*.csv | |
| 108 | +│ ├── 03_make_figures.py # figures 1–11 + verification stats | |
| 109 | +│ ├── 04_export_tables.py # paper tables → results/tables/*.csv | |
| 110 | +│ ├── 05_revision_geo_validation.py # trees curve · size-matched split · variants · OLS geo · GroupKFold · LOSO (~25 min) | |
| 111 | +│ ├── 06_revision_inference.py # missingness audit · clustered SE · lot recoding · state-by-state · R² bootstrap · Moran (~6 min) | |
| 112 | +│ ├── 07_revision_qr_bootstrap.py # paired (obs. + ZIP3-cluster) bootstrap for inter-quantile Wald tests (~25 min) | |
| 113 | +│ └── 08_revision_tables_figures.py # paper/tables/*.tex fragments + figures 12–14 | |
| 96 | 114 | ├── results/ |
| 97 | 115 | │ ├── *.pkl # NOT tracked (up to 437 MB) |
| 98 | −│ └── tables/ # 13 CSVs mirroring the paper's tables | |
| 99 | −├── figures/ # 11 paper figures (PNG, 300 dpi) | |
| 100 | −└── paper/ # main.tex + sections/ + appendix/ + references.bib → main.pdf | |
| 116 | +│ ├── tables/ # 13 CSVs mirroring the v1.1 tables | |
| 117 | +│ └── revision/ # 18 CSVs feeding the v1.2 tables (scripts 05–07) | |
| 118 | +├── figures/ # 14 paper figures (PNG, 300 dpi) | |
| 119 | +└── paper/ # main.tex + sections/ + appendix/ + tables/ (generated) + references.bib → main.pdf | |
| 101 | 120 | ``` |
| 102 | 121 | |
| 103 | 122 | ## 🚀 Quick start |
@@ -110,10 +129,14 @@ export WP3_ROOT=/path/to/artifacts # optional, defaults to the repo roo | ||
| 110 | 129 | |
| 111 | 130 | python scripts/01_spatial_robustness.py # ~1–2 h (16 XGBoost models) |
| 112 | 131 | python scripts/02_qr_imputation.py # ~1–3 h (12 quantile regressions on 150k obs) |
| 113 | −python scripts/03_make_figures.py # ~5 min, all 11 figures (--figs fig2 fig4 for a subset) | |
| 132 | +python scripts/03_make_figures.py # ~5 min, figures 1–11 (--figs fig2 fig4 for a subset) | |
| 114 | 133 | python scripts/04_export_tables.py # ~2 min, 13 CSV tables |
| 134 | +python scripts/05_revision_geo_validation.py # ~25 min (104 XGBoost fits) | |
| 135 | +python scripts/06_revision_inference.py # ~6 min | |
| 136 | +python scripts/07_revision_qr_bootstrap.py # ~25 min on 8 workers (--draws 200) | |
| 137 | +python scripts/08_revision_tables_figures.py # <1 min, paper/tables/*.tex + figures 12–14 | |
| 115 | 138 | |
| 116 | −cd paper && make # latexmk → main.pdf (60 pages) | |
| 139 | +cd paper && make # latexmk → main.pdf (82 pages) | |
| 117 | 140 | ``` |
| 118 | 141 | |
| 119 | 142 | Apple Silicon, 32 GB RAM; scripts use all cores. Every script prints verification statistics comparing recomputed values |
@@ -147,6 +170,10 @@ with the numbers reported in the paper. | ||
| 147 | 170 | 5. **Ablation** — 6 nested feature sets: structural → +lot → +amenities → +neighbourhood → +market → full. |
| 148 | 171 | 6. **Interpretation** — TreeSHAP on 10,000 test obs; cross-model Spearman stability. |
| 149 | 172 | 7. **Sensitivity** — state-median-imputation drop-out, lot-size winsorisation (p99.5), Bike Score cap. |
| 173 | +8. **Revision (v1.2)** — cluster-robust SE (ZIP3, state); state-by-state OLS and fully interacted prediction; paired | |
| 174 | + cluster-bootstrap inter-quantile tests; size-matched split, within-state R², boosting-round curve, GroupKFold by state, | |
| 175 | + leave-one-state-out; feature variants (no region, no school, missingness indicators); OLS geographic holdout on trimmed | |
| 176 | + data; lot-size recoding; Moran's *I* on tree residuals; bootstrap CIs for R² (`scripts/05`–`08`). | |
| 150 | 177 | |
| 151 | 178 | ## 🖼 Figures & tables inventory |
| 152 | 179 | |
@@ -163,15 +190,23 @@ with the numbers reported in the paper. | ||
| 163 | 190 | | `fig9_marginal_effects` | Bivariate scatters + binned means (6 attributes) | |
| 164 | 191 | | `fig10_shap_dependence` | SHAP dependence, 8 key features | |
| 165 | 192 | | `fig11_shap_interactions` | SHAP for interaction terms (waterfront × sqft, pool × South) | |
| 193 | +| `fig12_geo_trees_curve` | Out-of-sample R² vs boosting rounds (random / early-stopping / 10 held-out states) | | |
| 194 | +| `fig13_loso_by_state` | Leave-one-state-out R² by held-out state | | |
| 195 | +| `fig14_state_heterogeneity` | State-by-state living-area elasticity and garage coefficient | | |
| 166 | 196 | |
| 167 | 197 | Tables (`results/tables/*.csv`, 13 files): OLS coefficients, QR paths, inter-quantile Wald tests, stability CVs, |
| 168 | 198 | Moran's *I*, imputation/winsorisation sensitivity, SHAP importance and cross-model correlations, ZIP3 FE, ablation. |
| 199 | +Revision tables (`results/revision/*.csv`, 18 files → `paper/tables/*.tex`): missingness audit, implausible values, | |
| 200 | +list/Zestimate ratio, clustered SE, lot recoding, state heterogeneity, pooled vs interacted, R² bootstrap, Moran by model, | |
| 201 | +designs, trees curve, variants, OLS geo holdout, grouped CV, LOSO, inter-quantile bootstrap. | |
| 169 | 202 | |
| 170 | 203 | ## ⚠️ Limitations |
| 171 | 204 | |
| 172 | 205 | - Listing (asking) prices, not transactions; gradients are conditional associations, not willingness to pay. |
| 173 | 206 | - A single 2025–2026 snapshot: no time dimension, no repeat-sales control. |
| 174 | −- Lot size is state-median-imputed for part of the sample; the gradient is sensitive to that choice. | |
| 207 | +- School variables are state medians for 93 % of listings; ln(lot) was coded 0 for 16.5 % (corrected for OLS in v1.2, not | |
| 208 | + for QR/ablation/SHAP); 0.6 % of records carry corrupt secondary attributes. | |
| 209 | +- Inference is cluster-robust but rests on 51 unequal state clusters; no spatial econometric model is estimated. | |
| 175 | 210 | - The upstream sample-construction and primary-estimation scripts are lost; those stages are reproducible only from the |
| 176 | 211 | stored artifacts. |
| 177 | 212 | |
@@ -186,7 +221,8 @@ Moran's *I*, imputation/winsorisation sensitivity, SHAP importance and cross-mod | ||
| 186 | 221 | type = {Working Paper}, |
| 187 | 222 | number = {3}, |
| 188 | 223 | year = {2026}, |
| 189 | − month = {May} | |
| 224 | + month = {October}, | |
| 225 | + note = {Version 1.2} | |
| 190 | 226 | } |
| 191 | 227 | ``` |
| 192 | 228 | |
@@ -204,4 +240,9 @@ Université du Québec en Outaouais (UQO), Gatineau, QC. | ||
| 204 | 240 | `Recherche-UQO/_archives/versions-mai-2026/hedonic-models-united-states--immo-wp3-20260519/`; `docs/CHANGES.md` lists |
| 205 | 241 | the six manuscript inconsistencies corrected on 2026-08-05 (no scientific result altered). |
| 206 | 242 | - GitHub mirror: `spboucher-ai/wp3-hedonic-housing-us` (remote `github`); canonical remote is spbgit `wp3_uqo.git`. |
| 207 | −- Build verified 2026-10-17: 0 errors, 0 undefined references, 70 references rendered. | |
| 243 | +- Scientific revision 2026-10-17 (v1.2): see `docs/REVIEW-REPORT.md` (editorial-board report) and | |
| 244 | + `docs/CHANGELOG-REVISION.md` (audit trail of every correction, references added with DOIs, reanalyses run). The pre-revision | |
| 245 | + state is tag `pre-revision-20261017` and `docs/main_pre-revision-20261017.pdf`. | |
| 246 | +- Build verified 2026-10-17: 0 errors, 0 undefined references, 93 references rendered, 82 pages. | |
| 247 | +- Table fragments in `paper/tables/` are generated by `scripts/08_revision_tables_figures.py`; their last row carries no `\\` | |
| 248 | + (supplied after `\input` in the section files) to avoid a `Misplaced \noalign` error. | |
added
docs/CHANGELOG-REVISION.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +# CHANGELOG — Révision scientifique complète (editorial board, 2026-10-17) | |
| 2 | + | |
| 3 | +Papier : **UQO WP 3 — Hedonic Housing Price Models for the United States** (v1.1, mai 2026 → **v1.2, octobre 2026**). | |
| 4 | +État avant révision figé par le tag `pre-revision-20261017` et `docs/main_pre-revision-20261017.pdf` (60 pages). | |
| 5 | +Rapport de l'editorial board : `docs/REVIEW-REPORT.md`. Aucun fichier original n'a été supprimé ; les anciens | |
| 6 | +documents d'audit (`AUDIT.md`, `CHANGES.md`, `PAPER_REVIEW.md`, `UPGRADE_REPORT.md`) sont conservés tels quels. | |
| 7 | + | |
| 8 | +## 1. Corrections majeures (où · avant · après · pourquoi · preuve) | |
| 9 | + | |
| 10 | +| # | Où | Avant (v1.1) | Après (v1.2) | Pourquoi | Preuve | | |
| 11 | +|---|---|---|---|---|---| | |
| 12 | +| 1 | Data §3.6 (Table « Missing data »), Results §5.1.3, §5.7, §5.8, §5.9, Discussion, Abstract | Table des manquants : year built 19,4 %, lot 16,3 %, walk 3,1 %, bike 6,1 %, transit 70,1 %, garage 35,1 %. Les variables scolaires n'y figuraient pas ; « school rating » interprété comme qualité scolaire (coefficient négatif discuté via Black 1999 / Bayer 2007 ; 3e rang SHAP). | **avg_school_rating, school_count, nearest_school_distance manquants pour 93,0 % des annonces, imputés par la médiane de l'État** (school_count = 3 partout). Réinterprétation : identifiant d'État pour 93 % de l'échantillon ; coefficient OLS, bloc « neighbourhood » de l'ablation (+17,6 pp) et rang SHAP relus comme encodage de la géographie. | Lecture directe de `data/raw/us_housing.duckdb` (NULL) croisée avec `analytical_sample.pkl` (17 valeurs distinctes parmi les imputés = médianes d'État). | `results/revision/missingness_full.csv`, `variants_two_designs.csv` (sans variables scolaires : R² aléatoire 0,833 → 0,817 ; géo 0,425 → 0,377) | | |
| 13 | +| 2 | Data §3.6, Robustness §6.1–6.3, Results Table OLS unstd, Abstract, Intro, Conclusion | « Lot size imputée par médiane d'État » ; β ln(lot) = 0,018 ; « triple à 0,059 quand on retire les imputés » ; interprété comme atténuation par imputation. | **ln(lot) = 0 pour 130 271 annonces (16,5 %)** (lot manquant ou nul ; la colonne lot_size_sqft est bien imputée mais le régresseur ln_lot a été calculé avant imputation). Recodage ln(médiane d'État) : **β = 0,095** (SE HC3 0,0007), R² 0,648 ; cas complets 0,095 ; indicateur de manquant −2,2 %. Le « triplement » est un artefact de codage, pas une atténuation par imputation ; la winsorisation publiée (0,058) était en fait un recodage partiel. | `exp(ln_lot)` = 1 pour tous les imputés dans `analytical_sample.pkl` ; code de winsorisation de `02_qr_imputation.py` recalcule ln_lot depuis le champ imputé. | `results/revision/lot_recoding.csv` | | |
| 14 | +| 3 | Results §5.6.1 (Table geo holdout), Discussion, Conclusion, Abstract, README | « OLS fails catastrophically (R² < 0) because held-out states span all four regions » ; valeur stockée R² = −1 955 902. | **OLS R² = 0,539 (within-state 0,560, MdAPE 27,9 %)** sur le holdout de 10 États une fois retirés 4 970 enregistrements aberrants (parking > 20, étages > 10, lot > 1 mi², âge = 200) ; XGBoost sur le même jeu test : 0,544 (100 arbres) / 0,426 (1 000 arbres). L'OLS semi-log est aussi précis que le meilleur ensemble hors échantillon géographique. | La MdAPE des prédictions OLS publiées est 27,9 % : l'effondrement du R² vient de 204 annonces test à valeurs corrompues (parking max 1,1 × 10¹¹) sur lesquelles le modèle linéaire extrapole. | `results/revision/ols_geo_holdout.csv`, `xgb_geo_trimmed.csv`, `implausible_values.csv` | | |
| 15 | +| 4 | Results §5.6.2 (nouvelle), Robustness matrix, Discussion | Deux valeurs géo pour le même modèle XGBoost (0,547 et 0,425) attribuées à « differences in training-set composition ». | **Courbe R² hors État vs nombre d'arbres** : pic 0,550 à 75 arbres, 0,425 à 1 000 ; R² sur l'ensemble d'arrêt précoce (États d'entraînement) monte de 0,77 à 0,83. 0,547 = modèle arrêté près du pic ; 0,425 = modèle complet. L'arrêt précoce sur un sous-ensemble aléatoire ne détecte pas le surapprentissage spatial. | Reproduction exacte de 0,4250 avec `src/wp3/models.py` ; `iteration_range` sur le même modèle. | `results/revision/geo_trees_curve.csv`, `figures/fig12_geo_trees_curve.png` | | |
| 16 | +| 5 | Methodology §4.2, Results §5.1.5 (nouvelle Table cluster SE), toutes les étoiles | SE HC3 uniquement ; 57/63 coefficients significatifs à 5 %. | **SE groupées ZIP3 (885) et État (51)** : ratio médian 7,6 et 11,6 ; **35/63 et 33/63** significatifs. Non significatifs sous groupement État : age, pool, waterfront, walk, school rating, tax rate, condo, région Sud… | Moulton (1990) : régresseurs agrégés (État/ZIP) + résidus spatialement corrélés (Moran 0,27). | `results/revision/cluster_se.csv` | | |
| 17 | +| 6 | Methodology §4.3, Results §5.4.2 (Table inter-quantile) | Équation avec terme −2 Cov ; note « computed from the joint covariance matrix » ; **le code (`02_qr_imputation.py`) met Cov = 0** (z = diff / √(se₁₀² + se₉₀²)). 11/13 rejets. | Bootstrap apparié (200 tirages, obs. et grappes ZIP3) sur le même sous-échantillon de 150 000 ; la table rapporte z indépendant, z bootstrap obs., z bootstrap ZIP3 et IC 95 %. **10/13 rejets** sous bootstrap ZIP3. | Lecture du code ; le texte v1.1 décrivait une covariance jointe jamais calculée. | `results/revision/iqr_wald_bootstrap.csv` | | |
| 18 | +| 7 | Results §5.3 (nouvelle), Discussion, Intro | Une seule fonction hédonique nationale ; pas de discussion du marché unique de Rosen. | **Estimation État par État** (51 régressions, unités naturelles) : élasticité surface 0,06–1,15 (p10–p90 0,32–0,72) ; signe inversé dans 19 (chambres), 22 (piscine), 22 (luxe), 23 (HOA) États. R² test aléatoire : pooled 0,619 → + EF État 0,690 → **interagi par État 0,751** (+6,1 pp dus aux pentes). | Kuminoff–Parmeter–Pope 2010, Bishop et al. 2020, Bourassa et al. 2003, Goodman–Thibodeau 2003. | `results/revision/state_heterogeneity*.csv`, `pooled_vs_interacted.csv`, `figures/fig14_state_heterogeneity.png` | | |
| 19 | +| 8 | Results §5.6.3 (nouvelle), Appendix C | Un seul découpage géographique (10 États = 55,6 % des données). | **Validation croisée groupée 5 plis par État** (R² poolé 0,620, plis 0,50–0,72, within 0,657) et **leave-one-state-out** (51 modèles ; médiane 0.653) ; **split aléatoire de taille appariée** (350 527 obs. : R² 0,829 → la taille n'explique que 0,4 pp) ; **R² within-state** (0,618) séparant erreur de niveau et structure intra-marché. | Roberts et al. 2017, Meyer & Pebesma 2021/2022, Schratz et al. 2019. | `grouped_cv_by_state.csv`, `loso_by_state.csv`, `size_matched_split.csv`, `figures/fig13_loso_by_state.png` | | |
| 20 | +| 9 | Robustness §6.4 | Instabilité du coefficient d'âge (CV 78,6 %) attribuée à « geographic heterogeneity across subsamples ». | Les 10 sous-échantillons sont des tirages aléatoires nationaux (même composition géographique) : explication fausse. Cause réelle : imprécision (SE HC3 0,014, 10× les autres) par quasi-colinéarité age / age² / sqft×age / age×luxe + 19 % d'âges imputés. | Table OLS v1.1 elle-même. | — | | |
| 21 | +| 10 | Results §5.2 (Table Moran OLS vs arbres) | Moran's I sur résidus OLS seulement. | I sur résidus test (split aléatoire) : OLS 0,263, LightGBM 0,110, **XGBoost 0,079** — les arbres absorbent ~70 % de l'autocorrélation spatiale sans coordonnées. | Pace & Hayunga 2020. | `moran_xgb_vs_ols.csv` | | |
| 22 | +| 11 | Results §5.5 (Table bootstrap R²) | Aucune incertitude sur les R² test. | IC bootstrap (1 000 tirages, obs. et grappes ZIP3) : XGB − OLS = 0,203, IC ZIP3 [0,193 ; 0,213] ; test apparié des pertes quadratiques. | Diebold–Mariano 1995. | `r2_bootstrap.csv` | | |
| 23 | +| 12 | Data §3.2 (Table list/Zestimate) | Écart prix affiché / transaction discuté sans mesure. | Ratio prix affiché / Zestimate (55 % des annonces) : médiane 1,020, IQR 1,008–1,037, 91,4 % > 1 ; Sud 1,023. Borne descriptive, avec mise en garde. | — | `list_to_zestimate.csv` | | |
| 24 | +| 13 | Data §3.7 (Table valeurs aberrantes) | « Bike Score > 100 pour 38 obs. ; some lot sizes implausibly large ». | Dénombrement complet : parking > 20 (1 133), > 1 000 (67, max 1,1 × 10¹¹), étages > 10 (1 607), lot > 1 mi² (422), year_built > 2026 (121 → âge 0), < 1826 (1 838 → âge 200), ln(lot) = 0 (130 271). | — | `implausible_values.csv` | | |
| 25 | +| 14 | Methodology §4.2 | Interprétation des dummies 100(e^β − 1) sans référence. | Équation Halvorsen–Palmquist (1980) + correction de Kennedy (1981) ; vérification que la correction < 0,1 pp ici. | — | — | | |
| 26 | +| 15 | Results §5.1.4 | « the gap between ZIP3 OLS (0.725) and XGBoost (0.833) suggests non-linear attribute effects contribute 10.8 pp » | Retiré : XGBoost n'observe pas les ZIP ; la comparaison ne décompose pas forme fonctionnelle vs information. | — | — | | |
| 27 | +| 16 | Discussion §7.3 | « squarely within the 15–25 % error-reduction range (bourassa2010, park2015, **chen2016xgboost**) » | Chen & Guestrin (2016) n'est pas une étude de valorisation immobilière ; remplacé par Mayer et al. 2019, Pérez-Rave et al. 2019, Ho et al. 2021. | — | — | | |
| 28 | +| 17 | Intro, Results §5.1.4 | Mélange R² in-sample (0,634) et out-of-sample (0,725) dans la progression des EF ; « +4.7 and +4.7 pp ». | Progression hors échantillon cohérente 0,630 → 0,678 → 0,725 (+4,8, +4,7). | — | — | | |
| 29 | +| 18 | Data (ZIP3) | « 886 unique ZIP3 » | 885 ZIP3 observés + 1 code pour ZIP manquant (= 886 niveaux d'EF). | `address_zipcode.str[:3].nunique()` = 885 | — | | |
| 30 | +| 19 | Results §5.7 | « Structural features alone explain 35 % of geographic variation » | Reformulé : R² = 0,348 dans les États exclus (ce n'est pas une « variance géographique »). | — | — | | |
| 31 | +| 20 | Limitations | Liste à puces de 14 items. | Prose en 4 groupes (variable dépendante, régresseurs, inférence, validation) intégrant les nouvelles limites (51 grappes, bootstrap 200 tirages, comtés manquants à 97 %, QR/SHAP avec l'ancien codage du lot). | Protocole : pas de listes à puces dans le corps. | — | | |
| 32 | + | |
| 33 | +Aucun chiffre existant n'a été modifié sans recalcul ; toutes les valeurs v1.1 conservées (OLS, QR, ML aléatoire, ablation, SHAP, | |
| 34 | +Moran OLS, imputation, winsorisation, stabilité QR) ont été revérifiées contre les pickles (`results/*.pkl`) et sont inchangées. | |
| 35 | + | |
| 36 | +## 2. Références | |
| 37 | + | |
| 38 | +**Avant : 70 entrées (toutes citées). Après : 93 entrées** (toutes citées, toutes vérifiées ; 28 DOI ajoutés aux entrées | |
| 39 | +existantes ; 23 nouvelles). Vérification : API Crossref (`api.crossref.org/works?query.title=…&query.author=…`, pool poli) | |
| 40 | +le 2026-10-17 ; Halvorsen–Palmquist 1980 et Kennedy 1981 (AER, absents de Crossref) vérifiés via RePEc / listes de références | |
| 41 | +(WebSearch) ; Koenker 2005 et Diebold–Mariano 1995 vérifiés par résolution directe du DOI. | |
| 42 | + | |
| 43 | +Nouvelles (clé — source — DOI — rôle) : | |
| 44 | +- `halvorsen1980interpretation` — AER 70(3) 474–475 — interprétation des dummies (§4.2). | |
| 45 | +- `kennedy1981estimation` — AER 71(4) 801 — correction de biais (§4.2). | |
| 46 | +- `mayer2019estimation` — J. Eur. Real Estate Res. 12(1) — 10.1108/JERER-08-2018-0035 — comparaison GBM/hédonique dans le temps. | |
| 47 | +- `hu2019monitoring` — Land Use Policy 82 — 10.1016/j.landusepol.2018.12.030 — ML + hédonique (loyers). | |
| 48 | +- `bogin2020appraisal` — JREFE 60(1–2) — 10.1007/s11146-019-09712-0 — précision AVM en zones rurales. | |
| 49 | +- `lorenz2023interpretable` — Real Estate Economics 51(5) — 10.1111/1540-6229.12397 — ML interprétable (SHAP) en immobilier (en ligne 2022, imprimé 2023 : cité 2023 comme Waltl). | |
| 50 | +- `antipov2012mass` — ESWA 39(2) — 10.1016/j.eswa.2011.08.077 — random forest en évaluation de masse. | |
| 51 | +- `meyer2022machine` — Nature Communications 13:2208 — 10.1038/s41467-022-29838-9 — évaluation des cartes ML globales. | |
| 52 | +- `bourassa2007spatial` — JREFE 35(2) — 10.1007/s11146-007-9036-8 — sous-marchés et prédiction. | |
| 53 | +- `bourassa2003submarkets` — J. Housing Econ. 12(1) — 10.1016/S1051-1377(03)00003-2 — sous-marchés. | |
| 54 | +- `goodman2003segmentation` — J. Housing Econ. 12(3) — 10.1016/S1051-1377(03)00031-7 — segmentation et précision hédonique. | |
| 55 | +- `koenker2005quantile` — Cambridge UP — 10.1017/CBO9780511754098 — covariance jointe des quantiles. | |
| 56 | +- `koenker1999goodness` — JASA 94(448) — 10.1080/01621459.1999.10473882 — pseudo-R². | |
| 57 | +- `cameron2015practitioner` — J. Human Resources 50(2) — 10.3368/jhr.50.2.317 — inférence groupée. | |
| 58 | +- `moulton1990illustration` — REStat 72(2) — 10.2307/2109724 — problème de Moulton. | |
| 59 | +- `conley1999gmm` — J. Econometrics 92(1) — 10.1016/S0304-4076(98)00084-0 — HAC spatial. | |
| 60 | +- `epple1987hedonic` — JPE 95(1) — 10.1086/261441 — identification hédonique. | |
| 61 | +- `jones1996indicator` — JASA 91(433) — 10.1080/01621459.1996.10476680 — méthode de l'indicateur de manquant. | |
| 62 | +- `schratz2019hyperparameter` — Ecological Modelling 406 — 10.1016/j.ecolmodel.2019.06.002 — réglage d'hyperparamètres spatial. | |
| 63 | +- `ho2021predicting` — J. Property Research 38(1) — 10.1080/09599916.2020.1832558 — ML vs hédonique. | |
| 64 | +- `perezrave2019machine` — J. Property Research 36(1) — 10.1080/09599916.2019.1587489 — ML pour inférence et prédiction. | |
| 65 | +- `diebold1995comparing` — JBES 13(3) — 10.1080/07350015.1995.10524599 — comparaison de précision prédictive. | |
| 66 | +- `palmquist2005property` — Handbook of Environmental Economics 2 — 10.1016/S1574-0099(05)02016-4 — revue des modèles hédoniques. | |
| 67 | + | |
| 68 | +Corrections d'entrées existantes : `sirmans2005composition` pages 3–43 → **1–44** (Crossref). DOI ajoutés à 28 entrées | |
| 69 | +(anglin1996, anselin2010, baldauf2020, campbell2011, can1992, chen2016, cropper1988, ekeland2004, goodman1998, halvorsen1981, | |
| 70 | +hill2013, knight2002, koenker1978, kok2017, lancaster1966, lesage2009, liao2012, lundberg2020, mackinnon1985, malpezzi2003, | |
| 71 | +mullainathan2017, oates1969, roberts2013, roberts2017, rosen1974, sirmans2005, white1980, zietz2008). Références demandées mais | |
| 72 | +non ajoutées : « Meyer & Roberts » (référence introuvable sous ce nom ; la littérature visée est couverte par Roberts et al. 2017 | |
| 73 | +et Meyer & Pebesma 2021/2022) ; Hastie et al. (manuel, non nécessaire). | |
| 74 | + | |
| 75 | +## 3. Réanalyses exécutées (script · durée · sortie) | |
| 76 | + | |
| 77 | +Toutes depuis les artefacts stockés (`data/processed/*.pkl`, `results/*.pkl`, `data/raw/us_housing.duckdb`), sur ce Mac | |
| 78 | +(18 cœurs, 48 Go) ; XGBoost 1 000 arbres ≈ 7 s par ajustement. | |
| 79 | + | |
| 80 | +| Script | Contenu | Durée | Sorties (`results/revision/`) | | |
| 81 | +|---|---|---|---| | |
| 82 | +| `scripts/05_revision_geo_validation.py` | courbe R² vs arbres (random / early-stopping / 10 États) ; split aléatoire de taille appariée ; 5 variantes de features × 2 designs (+ R² within-state, R² à 100 arbres) ; OLS holdout géo (brut, sans aberrants, sans région) ; GroupKFold 5 plis × 2 variantes ; **leave-one-state-out 51 × 2 variantes** | ≈ 25 min (en concurrence avec 07) | `geo_trees_curve.csv`, `size_matched_split.csv`, `variants_two_designs.csv`, `ols_geo_holdout.csv`, `grouped_cv_by_state.csv`, `loso_by_state.csv` | | |
| 83 | +| `scripts/06_revision_inference.py` | manquants réels par régresseur + valeurs aberrantes + ratio list/Zestimate ; SE groupées ZIP3/État ; 5 codages du lot ; 51 OLS par État + pooled vs EF vs interagi ; XGB sur jeu test géo élagué ; bootstrap R² (1 000 × 2 schémas) ; Moran OLS vs LGB vs XGB | ≈ 6 min | `missingness_full.csv`, `implausible_values.csv`, `list_to_zestimate.csv`, `cluster_se.csv`, `lot_recoding.csv`, `state_heterogeneity*.csv`, `pooled_vs_interacted.csv`, `xgb_geo_trimmed.csv`, `r2_bootstrap.csv`, `moran_xgb_vs_ols.csv` | | |
| 84 | +| `scripts/07_revision_qr_bootstrap.py` | QR τ = 0,10 et 0,90 sur le sous-échantillon seed 42 ; 200 tirages bootstrap appariés obs. + 200 grappes ZIP3 (8 workers) | ≈ 25 min | `iqr_wald_bootstrap.csv` | | |
| 85 | +| `scripts/08_revision_tables_figures.py` | fragments LaTeX `paper/tables/*.tex` (19) + `figures/fig12–fig14` | < 1 min | — | | |
| 86 | + | |
| 87 | +Vérification de reproductibilité : la valeur publiée R² géo = 0,4250 (ablation, modèle complet) est reproduite exactement | |
| 88 | +(0,42501500587502516) par `src/wp3/models.py`, et R² aléatoire 0,8327 également. | |
| 89 | + | |
| 90 | +## 4. Non modifié faute de données / hors périmètre (< 30 min) | |
| 91 | + | |
| 92 | +- Les résultats QR (5 quantiles), l'ablation, les SHAP et la comparaison ML aléatoire conservent le codage publié de ln(lot) = 0 | |
| 93 | + (ré-estimation complète du pipeline perdu : pas disponible ; XGBoost insensible au codage, QR du lot sous-estimée — signalé). | |
| 94 | +- Pas de modèle spatial (SAR/SEM/GWR), pas de HAC spatial (Conley), pas de wild cluster bootstrap. | |
| 95 | +- Pas de blocage comté/MSA (county_fips manquant à 97 %). | |
| 96 | +- Pas de réglage d'hyperparamètres (nested CV spatial) ; pas de CatBoost ; pas de réplication sur prix de transaction ; pas de | |
| 97 | + données climatiques. | |
| 98 | +- `main_anon.tex` n'existe pas (pas de soumission anonyme en cours) : rien à recompiler. | |
| 99 | + | |
| 100 | +## 5. Forme | |
| 101 | + | |
| 102 | +- `\WPversion` 1.1 → 1.2 ; `\WPdate` May 2026 → October 2026 ; abstract et mots-clés réécrits (vocabulaire commun du programme : | |
| 103 | + « hedonic price function », « out-of-sample », « MdAPE », « automated valuation model »). | |
| 104 | +- Listes à puces du corps converties en prose (introduction, méthodologie, limitations, résultats) ; énumérations conservées | |
| 105 | + uniquement dans l'annexe « Robustness Agenda ». | |
| 106 | +- Nouvelles figures : `fig12_geo_trees_curve.png`, `fig13_loso_by_state.png`, `fig14_state_heterogeneity.png` (palette du papier : | |
| 107 | + bleu/brique/gris avec marqueurs et styles de ligne comme encodage secondaire ; fig9 déplacée en annexe). | |
| 108 | +- Fragments de tables générés (`paper/tables/`, `\input` dans les sections ; dernière ligne sans `\\` — gotcha « Misplaced \noalign » | |
| 109 | + avec `\input` en fin de ligne de tabular). | |
| 110 | +- Compilation : `cd paper && make` → 0 erreur, 0 citation/référence indéfinie, pas d'Overfull > 10 pt ; PDF 82 pages | |
| 111 | + (60 avant révision). | |
added
docs/REVIEW-REPORT.md
+160 −0
@@ -0,0 +1,160 @@ | ||
| 1 | +# REVIEW REPORT — Editorial board, révision scientifique complète (2026-10-17) | |
| 2 | + | |
| 3 | +**Papier** : UQO Working Paper No. 3 — *Hedonic Housing Price Models for the United States: A Multi-Method Comparison of | |
| 4 | +Parametric, Quantile, and Machine Learning Approaches* (Simon-Pierre Boucher). Version révisée : **1.2, October 2026** | |
| 5 | +(avant : 1.1, May 2026, 60 pages, 70 références ; après : 82 pages, 93 références, toutes vérifiées). | |
| 6 | +Journal d'audit détaillé : `docs/CHANGELOG-REVISION.md`. | |
| 7 | + | |
| 8 | +Board : économie immobilière et marchés du logement ; économétrie appliquée et inférence ; économétrie spatiale ; prix hédoniques | |
| 9 | +et évaluation ; apprentissage automatique et économie computationnelle ; méthodologie scientifique. Lecture intégrale du | |
| 10 | +manuscrit, du code (`src/`, `scripts/01–04`), des artefacts (`data/`, `results/`), des documents d'audit antérieurs et de la | |
| 11 | +bibliographie ; réanalyses sur les artefacts stockés (données locales présentes, 2,8 Go ; chaque réanalyse < 30 min). | |
| 12 | + | |
| 13 | +--- | |
| 14 | + | |
| 15 | +## 1. Verdict d'ensemble | |
| 16 | + | |
| 17 | +Le papier pose une question importante et bien formulée — la précision des modèles ML hédoniques mesurée par validation | |
| 18 | +aléatoire survit-elle à l'extrapolation vers des marchés non observés ? — sur un jeu de données d'une ampleur rare (788 842 | |
| 19 | +annonces, 51 juridictions), avec une discipline d'interprétation (gradients de prix affichés, non WTP) exemplaire. La version 1.1 | |
| 20 | +était toutefois fragilisée par **quatre défauts que la révision a identifiés et corrigés**, dont trois sont des défauts de | |
| 21 | +documentation des données qui changeaient des conclusions substantielles : | |
| 22 | + | |
| 23 | +1. **Les trois variables scolaires sont imputées (médiane d'État) pour 93 % des annonces** et n'apparaissaient pas dans la table | |
| 24 | + des manquants. Le « school rating », 3e variable SHAP, pilier du bloc « neighbourhood » (+17,6 pp), est un identifiant d'État. | |
| 25 | +2. **Le régresseur ln(lot) valait 0 pour 16,5 % des annonces** (codage avant imputation). L'élasticité publiée (0,018, « triplée » | |
| 26 | + en retirant les imputés) est un artefact ; la valeur correcte est **0,095**. | |
| 27 | +3. **L'« effondrement catastrophique » de l'OLS en holdout géographique (R² = −2 × 10⁶)** venait de 204 annonces test aux | |
| 28 | + valeurs corrompues (places de stationnement jusqu'à 1,1 × 10¹¹). Sans ces 0,6 % d'enregistrements, **OLS atteint 0,539 hors | |
| 29 | + État — autant que le meilleur XGBoost (0,544 à 100 arbres) et plus que le modèle complet (0,426)**. | |
| 30 | +4. **L'inférence HC3 surestimait la précision d'un ordre de grandeur** (ratios médians des SE groupées : 7,6 par ZIP3, 11,6 par | |
| 31 | + État ; 57 → 33 coefficients significatifs). Le test inter-quantile « à covariance jointe » décrit dans le texte n'était pas | |
| 32 | + celui du code (covariance mise à zéro). | |
| 33 | + | |
| 34 | +Ces corrections **renforcent** la contribution méthodologique plutôt qu'elles ne l'affaiblissent : la révision montre *par quels | |
| 35 | +canaux* la fuite spatiale opère (niveaux de prix d'État mémorisés via les dummies régionales, les imputations d'État et la capacité | |
| 36 | +de boosting), sépare l'erreur de niveau de la structure intra-marché (R² within-state 0,62 stable), et établit que la régression | |
| 37 | +semi-log est compétitive hors marché. Le message « random splits overstate ML » devient « random splits overstate ML, *and here | |
| 38 | +is the anatomy* », avec des résultats nouveaux (courbe d'arbres, LOSO 51 États, hétérogénéité par État) qui n'existaient pas. | |
| 39 | + | |
| 40 | +--- | |
| 41 | + | |
| 42 | +## 2. Diagnostic par section | |
| 43 | + | |
| 44 | +### Introduction | |
| 45 | +- Forces : enjeux (AVM, évaluation foncière), trois tensions, contribution « spatial leakage » bien mise en avant, discipline | |
| 46 | + d'interprétation. — Faiblesses (v1.1) : contributions énumérées en liste ; mélange R² in-sample/out-of-sample (0,634 → 0,725) ; | |
| 47 | + chiffres géo 0,425–0,547 non expliqués. — Révisé : prose, 5 contributions + 1 « data finding », nombres cohérents, OLS hors État | |
| 48 | + corrigé, mécanismes annoncés. | |
| 49 | + | |
| 50 | +### Revue de littérature | |
| 51 | +- Forces : 10 thèmes, verdict Wadoux et al. bien intégré, identification (Bartik, Ekeland et al., Kuminoff et al., Bishop et al.). | |
| 52 | +- Faiblesses : rien sur le marché unique de Rosen / sous-marchés ; rien sur l'inférence groupée ni l'interprétation des dummies ; | |
| 53 | + littérature AVM/ML mince (Mayer et al., Bogin–Shui, Lorenz et al., Antipov–Pokryshevskaya, Pérez-Rave, Ho et al. absents) ; | |
| 54 | + Meyer–Pebesma 2022 et Schratz et al. 2019 absents côté validation spatiale ; `chen2016xgboost` cité comme étude de valorisation. | |
| 55 | +- Révisé : 23 références ajoutées (toutes vérifiées, DOI), paragraphe sous-marchés, paragraphe inférence/dummies, thème AVM étoffé, | |
| 56 | + « gap » reformulé. | |
| 57 | + | |
| 58 | +### Données | |
| 59 | +- Forces : filtres documentés, caveat prix affichés bien ancré. | |
| 60 | +- Faiblesses graves : table des manquants incomplète (variables scolaires 93 %, parking 24 %, étages 26 %, HOA fee 63 %, matériaux | |
| 61 | + 31 % absents) ; règle du lot décrite ≠ codage réel ; valeurs aberrantes non dénombrées ; part des manquants exprimée sur les | |
| 62 | + données brutes et non sur l'échantillon analytique. | |
| 63 | +- Révisé : table complète générée depuis la base brute (`tables/missingness.tex`), table des aberrants, sous-section « Data | |
| 64 | + Quality », ratio prix affiché / Zestimate (médiane 1,020 ; 91 % > 1) comme borne descriptive de l'écart liste/valeur. | |
| 65 | + | |
| 66 | +### Méthodologie | |
| 67 | +- Forces : équations OLS/QR/XGB/SHAP/Moran présentes. | |
| 68 | +- Faiblesses : interprétation des dummies sans Halvorsen–Palmquist/Kennedy ; SE HC3 seules malgré Moran 0,27 et régresseurs | |
| 69 | + agrégés ; équation inter-quantile avec −2Cov non appliquée ; définitions de validation vagues (un seul pli ; 56 % des données | |
| 70 | + retirées ; confusion taille/extrapolation) ; pas de métrique within-market ; hyperparamètres fixes sans discussion. | |
| 71 | +- Révisé : Eq. Halvorsen–Palmquist/Kennedy, Eq. cluster-robust (ZIP3/État) + Moulton/Conley, bootstrap apparié (obs. et grappes) | |
| 72 | + pour la covariance inter-quantile, pseudo-R² de Koenker–Machado, MdAPE (Steurer et al.), 4 designs de validation définis | |
| 73 | + (aléatoire, 10 États, GroupKFold 5, LOSO), Eq. R² within-state, variantes de features, discussion de la capacité. | |
| 74 | + | |
| 75 | +### Résultats | |
| 76 | +- Incohérences trouvées : 0,547 vs 0,425 (« training-set composition ») — en réalité **nombre d'arbres** (pic 0,550 à 75, 0,425 | |
| 77 | + à 1 000) ; « OLS fails catastrophically because held-out states span all four regions » — faux (valeurs corrompues) ; « ZIP3 → | |
| 78 | + XGB gap = non-linéarité 10,8 pp » — non fondé (XGB n'observe pas les ZIP) ; « structural features explain 35 % of geographic | |
| 79 | + variation » — formulation erronée ; « 886 ZIP3 » — 885 + code manquant ; gains EF « +4,7/+4,7 » — +4,8/+4,7 hors échantillon ; | |
| 80 | + instabilité de l'âge attribuée à l'hétérogénéité géographique de sous-échantillons **aléatoires** — impossible. | |
| 81 | +- Nouveaux résultats : Table SE groupées ; Moran OLS 0,263 vs XGB 0,079 (test set) ; hétérogénéité par État (élasticité surface | |
| 82 | + 0,06–1,15 ; pooled 0,619 → EF 0,690 → interagi 0,751) ; bootstrap R² (XGB − OLS = 0,203, IC ZIP3 [0,193 ; 0,213]) ; designs | |
| 83 | + (taille appariée 0,829 ; within-state 0,618) ; OLS hors État 0,539 ; courbe d'arbres ; GroupKFold (0,620) ; LOSO (médiane | |
| 84 | + 0.653) ; variantes (sans région 0,519 ; sans école 0,377 ; indicateurs de manquants 0,446). | |
| 85 | + | |
| 86 | +### Robustesse | |
| 87 | +- Imputation/winsorisation : réinterprétées (artefact de codage) ; nouvelle sous-section « Lot-size coding » ; stabilité QR | |
| 88 | + réinterprétée ; matrice de robustesse réécrite (ancien/nouveau). | |
| 89 | + | |
| 90 | +### Discussion / Conclusion / Limites | |
| 91 | +- Réécrites autour de 5 messages (le 5e, « la documentation des données fait partie de la méthode », est nouveau) ; comparaisons | |
| 92 | + à la littérature conservées et étendues (Campbell et al. 27 % ; Sirmans et al. ; Bogin–Shui ; Schratz et al.) ; limites en prose, | |
| 93 | + 4 groupes, incluant les nouvelles (51 grappes, 200 tirages, comtés manquants, QR/SHAP avec l'ancien codage du lot). | |
| 94 | + | |
| 95 | +--- | |
| 96 | + | |
| 97 | +## 3. Méthodologie — verdict motivé sur chaque point du §3 du master prompt | |
| 98 | + | |
| 99 | +| Point | Verdict | Motif / action | | |
| 100 | +|---|---|---| | |
| 101 | +| Spécification justifiée | Oui, avec réserve | Semi-log justifié (Cropper et al.) ; mais une équation nationale unique agrège 51 marchés — désormais mesuré (§5.3). | | |
| 102 | +| Hypothèses d'estimation explicites | Partiellement avant → oui | Indépendance implicite derrière HC3 explicitée et levée (SE groupées) ; hypothèse d'un seul marché discutée. | | |
| 103 | +| Variables correctement définies | **Non** avant → oui | 93 % de scolaire imputé, ln(lot) = 0, parking/étages corrompus : désormais documentés (Tables missing / implausible). | | |
| 104 | +| Effets fixes appropriés | Oui | Région → État → ZIP3 ; comté/MSA impossibles (county_fips manquant 97 %). | | |
| 105 | +| Dépendance spatiale/temporelle défendable | Diagnostiquée, non modélisée | Moran 0,27 (OLS), 0,08 (XGB) ; pas de SAR/SEM — limite assumée. Pas de dimension temporelle. | | |
| 106 | +| Erreurs-types correctement spécifiées | **Non** avant → oui | HC3 → groupées ZIP3/État ; bootstrap apparié pour QR ; IC bootstrap pour R². | | |
| 107 | +| Construction de l'échantillon transparente | Oui pour les filtres ; **non** pour le codage | Scripts amont perdus ; la révision documente le codage **effectif** trouvé dans les artefacts. | | |
| 108 | +| Robustesse face aux vraies menaces | Partiellement avant → oui | Ajout : taille appariée, arbres, GroupKFold, LOSO, variantes école/région/indicateurs, recodage lot, OLS hors État élagué. | | |
| 109 | +| Interprétation des coefficients | Correcte (100(e^β−1)), désormais référencée | Halvorsen–Palmquist/Kennedy ; coefficient scolaire relu comme effet d'État. | | |
| 110 | +| Significativité statistique vs économique | Améliorée | Les étoiles HC3 relativisées ; discussion des grandeurs. | | |
| 111 | +| Allégations causales | Aucune | Discipline maintenue partout. | | |
| 112 | + | |
| 113 | +--- | |
| 114 | + | |
| 115 | +## 4. Littérature | |
| 116 | + | |
| 117 | +- **Vérifiées** : les 70 entrées existantes (OpenAlex en août 2026 ; recontrôle Crossref le 2026-10-17 pour les 35 sans DOI → | |
| 118 | + 28 DOI ajoutés ; pages Sirmans et al. corrigées 1–44). Aucune entrée douteuse restante ; `chen2016xgboost` conservée mais plus | |
| 119 | + citée comme étude de valorisation. | |
| 120 | +- **Ajoutées (23, toutes vérifiées, DOI dans le .bib)** : Halvorsen & Palmquist 1980 ; Kennedy 1981 ; Mayer, Bourassa, Hoesli & | |
| 121 | + Scognamiglio 2019 ; Hu et al. 2019 ; Bogin & Shui 2020 ; Lorenz, Willwersch, Cajias & Fuerst 2023 ; Antipov & Pokryshevskaya | |
| 122 | + 2012 ; Meyer & Pebesma 2022 ; Bourassa, Cantoni & Hoesli 2007 ; Bourassa, Hoesli & Peng 2003 ; Goodman & Thibodeau 2003 ; | |
| 123 | + Koenker 2005 ; Koenker & Machado 1999 ; Cameron & Miller 2015 ; Moulton 1990 ; Conley 1999 ; Epple 1987 ; Jones 1996 ; | |
| 124 | + Schratz et al. 2019 ; Ho, Tang & Wong 2021 ; Pérez-Rave et al. 2019 ; Diebold & Mariano 1995 ; Palmquist 2005. | |
| 125 | +- **Retirées** : aucune. **Non trouvée** : « Meyer & Roberts » (demande de l'orchestrateur) — pas de référence identifiable ; | |
| 126 | + couverte par Roberts et al. 2017 et Meyer & Pebesma 2021/2022. | |
| 127 | + | |
| 128 | +--- | |
| 129 | + | |
| 130 | +## 5. Limites restantes (après révision) | |
| 131 | + | |
| 132 | +1. Prix affichés, pas de transactions ; écart borné par le Zestimate mais covariance avec les attributs inconnue. | |
| 133 | +2. Scripts amont perdus : échantillon analytique reproductible seulement depuis les pickles ; les QR, l'ablation et les SHAP | |
| 134 | + gardent ln(lot) = 0 (inoffensif pour les arbres, sous-estime le gradient de lot dans les trajectoires quantiles). | |
| 135 | +3. 51 grappes d'État très inégales ; pas de HAC spatial ni de wild cluster bootstrap ; pas de modèle spatial. | |
| 136 | +4. Validation : LOSO et 10 États = extrapolation ; pas de blocage comté/MSA (identifiants manquants) ; hyperparamètres non réglés | |
| 137 | + (le réglage aléatoire n'aiderait pas, cf. courbe d'arbres). | |
| 138 | +5. Échantillon non représentatif (Sud 56,6 %), un seul instantané. | |
| 139 | + | |
| 140 | +## 6. Analyses recommandées non exécutées | |
| 141 | + | |
| 142 | +- Reconstruction complète du pipeline brut → échantillon avec codage correct du lot, puis ré-estimation QR/ablation/SHAP. | |
| 143 | +- HAC spatial (Conley) et wild cluster bootstrap par État ; SAR/SEM/GWR. | |
| 144 | +- Nested CV avec plis internes bloqués par État pour le nombre d'arbres et la profondeur (Schratz et al. 2019) ; CatBoost. | |
| 145 | +- Blocage comté/MSA (si identifiants obtenus) pour tracer le continuum interpolation–extrapolation. | |
| 146 | +- Réplication sur prix de vente ; intégration de risques climatiques ; mesure scolaire observée ; comparaison ACS/Census. | |
| 147 | +- GAM/splines pour décomposer non-linéarité vs partition spatiale ; calibration par décile de prix. | |
| 148 | + | |
| 149 | +## 7. Maturité pour publication | |
| 150 | + | |
| 151 | +- **Revues cibles** : *Journal of Housing Economics* ou *Journal of Real Estate Research* (contribution méthodologique + données | |
| 152 | + nationales) ; *Real Estate Economics* envisageable si la reconstruction du pipeline et une réplication sur transactions sont | |
| 153 | + ajoutées ; *Journal of Property Research* / *Journal of European Real Estate Research* comme cibles AVM. | |
| 154 | +- **Risques de rejet** : (i) prix affichés (objection standard — bien défendue mais rédhibitoire pour certains referees) ; | |
| 155 | + (ii) pipeline amont perdu et codage du lot découvert a posteriori (transparence totale désormais, mais un referee peut exiger la | |
| 156 | + reconstruction) ; (iii) 93 % de variables scolaires imputées — le papier les traite honnêtement comme identifiants d'État, mais | |
| 157 | + un referee pourrait demander de les retirer de la spécification principale ; (iv) absence de modèles spatiaux. | |
| 158 | +- **Évaluation** : passage de « working paper solide mais fragile sur les données » à « manuscrit soumissible après | |
| 159 | + reconstruction du pipeline » ; la contribution méthodologique (anatomie de la fuite spatiale, within-state R², courbe d'arbres, | |
| 160 | + LOSO, SE groupées) est désormais défendable devant un referee exigeant. | |
added
figures/fig12_geo_trees_curve.png
+0 −0
Binary file not shown.
added
figures/fig13_loso_by_state.png
+0 −0
Binary file not shown.
added
figures/fig14_state_heterogeneity.png
+0 −0
Binary file not shown.
modified
paper/appendix/appendix.tex
+104 −45
@@ -11,27 +11,42 @@ | ||
| 11 | 11 | \begin{figure}[H] |
| 12 | 12 | \centering |
| 13 | 13 | \includegraphics[width=0.85\textwidth]{figures/fig6_shap_importance.png} |
| 14 | − \caption{Feature Importance Bar Chart: Mean Absolute SHAP Values (XGBoost). These values reflect predictive contributions, not causal importance.} | |
| 14 | + \caption{Mean absolute SHAP values, XGBoost, top 20 features. These values are | |
| 15 | + predictive contributions, not causal effects; the school-rating variable is a state | |
| 16 | + median for 93\% of listings (Section~\ref{sec:missing}).} | |
| 15 | 17 | \label{fig:shap_bar} |
| 16 | 18 | \end{figure} |
| 17 | 19 | |
| 18 | 20 | \begin{figure}[H] |
| 19 | 21 | \centering |
| 20 | 22 | \includegraphics[width=\textwidth]{figures/fig11_shap_interactions.png} |
| 21 | − \caption{SHAP Values for Interaction Terms: (a) Waterfront $\times$ Log(Living Area); (b) Pool $\times$ South Region} | |
| 23 | + \caption{SHAP values for interaction terms: (a) waterfront $\times$ $\ln$(living | |
| 24 | + area); (b) pool $\times$ South region.} | |
| 22 | 25 | \label{fig:shap_interactions} |
| 23 | 26 | \end{figure} |
| 24 | 27 | |
| 28 | +\begin{figure}[H] | |
| 29 | + \centering | |
| 30 | + \includegraphics[width=\textwidth]{figures/fig9_marginal_effects.png} | |
| 31 | + \caption{Unconditional bivariate relationships between key attributes and log | |
| 32 | + listing price (raw scatter plots and binned means). They do not control for other | |
| 33 | + attributes and should not be read as conditional effects.} | |
| 34 | + \label{fig:marginal} | |
| 35 | +\end{figure} | |
| 25 | 36 | |
| 26 | 37 | \section{Full OLS Coefficient Table} |
| 27 | 38 | \label{app:ols_full} |
| 28 | 39 | |
| 29 | −Table~\ref{tab:ols_full} reports the complete set of standardized OLS coefficients, including all categorical controls. | |
| 40 | +Table~\ref{tab:ols_full} reports the complete set of standardised OLS coefficients, | |
| 41 | +including all categorical controls, with HC3 standard errors. Cluster-robust standard | |
| 42 | +errors for the main coefficients are in Table~\ref{tab:cluster_se}; across all 63 | |
| 43 | +coefficients, ZIP3-clustered standard errors are on median 7.6 times the HC3 values and | |
| 44 | +state-clustered standard errors 11.6 times. | |
| 30 | 45 | |
| 31 | 46 | \begin{landscape} |
| 32 | 47 | \begin{table}[H] |
| 33 | 48 | \centering |
| 34 | −\caption{Full OLS Regression Results Including All Categorical Controls (Standardized)} | |
| 49 | +\caption{Full OLS Regression Results Including All Categorical Controls (Standardised)} | |
| 35 | 50 | \label{tab:ols_full} |
| 36 | 51 | \begin{threeparttable} |
| 37 | 52 | \scriptsize |
@@ -49,7 +64,7 @@ Age$^{2\dagger}$ & 0.051 & 0.002 & *** & & Roof: Unknown & 0.004 & 0.008 & \\ | ||
| 49 | 64 | Stories$^\dagger$ & 0.000 & 0.000 & & & Constr: Concrete/Block & 0.269 & 0.003 & *** \\ |
| 50 | 65 | Bath/Bed Ratio$^\dagger$ & $-$0.021 & 0.002 & *** & & Constr: Stucco & 0.149 & 0.002 & *** \\ |
| 51 | 66 | Sqft/Bed$^\dagger$ & $-$0.002 & 0.002 & & & Constr: Stone & 0.145 & 0.005 & *** \\ |
| 52 | −$\ln$(Lot Size)$^\dagger$ & 0.070 & 0.001 & *** & & Constr: Wood/Frame & 0.103 & 0.002 & *** \\ | |
| 67 | +$\ln$(Lot Size)$^{\dagger\ddagger}$ & 0.070 & 0.001 & *** & & Constr: Wood/Frame & 0.103 & 0.002 & *** \\ | |
| 53 | 68 | Pool & 0.029 & 0.003 & *** & & Constr: Vinyl & 0.012 & 0.002 & *** \\ |
| 54 | 69 | Spa & 0.033 & 0.003 & *** & & Constr: Steel & 0.027 & 0.014 & * \\ |
| 55 | 70 | Basement & $-$0.042 & 0.002 & *** & & Constr: Other & 0.075 & 0.002 & *** \\ |
@@ -59,14 +74,14 @@ Waterfront & $-$0.135 & 0.032 & *** & & Found: Crawlspace & 0.181 & 0.006 & *** | ||
| 59 | 74 | Central Air & 0.069 & 0.001 & *** & & Found: Slab & 0.122 & 0.005 & *** \\ |
| 60 | 75 | Forced Air & $-$0.023 & 0.002 & *** & & Found: Pier/Raised & 0.161 & 0.006 & *** \\ |
| 61 | 76 | Hardwood & 0.125 & 0.001 & *** & & Found: Stone & 0.032 & 0.010 & ** \\ |
| 62 | −Parking$^\dagger$ & 0.000 & 0.099 & & & Found: Other & 0.144 & 0.006 & *** \\ | |
| 77 | +Parking$^{\dagger\S}$ & 0.000 & 0.099 & & & Found: Other & 0.144 & 0.006 & *** \\ | |
| 63 | 78 | Luxury$^\dagger$ & 0.044 & 0.002 & *** & & Found: Unknown & 0.174 & 0.005 & *** \\ |
| 64 | 79 | Walk$^\dagger$ & $-$0.011 & 0.001 & *** & & Northeast & 0.487 & 0.003 & *** \\ |
| 65 | 80 | Bike$^\dagger$ & 0.072 & 0.001 & *** & & South & 0.022 & 0.003 & *** \\ |
| 66 | 81 | Transit$^\dagger$ & 0.052 & 0.001 & *** & & West & 0.401 & 0.003 & *** \\ |
| 67 | −School Rating$^\dagger$ & $-$0.049 & 0.001 & *** & & sqft$\times$Age$^\dagger$ & $-$0.110 & 0.014 & *** \\ | |
| 68 | −School Count$^\dagger$ & $-$0.002 & 0.001 & *** & & Pool$\times$South & 0.008 & 0.001 & *** \\ | |
| 69 | −School Dist.$^\dagger$ & $-$0.016 & 0.001 & *** & & WF$\times$sqft$^\dagger$ & 0.137 & 0.009 & *** \\ | |
| 82 | +School Rating$^{\dagger\P}$ & $-$0.049 & 0.001 & *** & & sqft$\times$Age$^\dagger$ & $-$0.110 & 0.014 & *** \\ | |
| 83 | +School Count$^{\dagger\P}$ & $-$0.002 & 0.001 & *** & & Pool$\times$South & 0.008 & 0.001 & *** \\ | |
| 84 | +School Dist.$^{\dagger\P}$ & $-$0.016 & 0.001 & *** & & WF$\times$sqft$^\dagger$ & 0.137 & 0.009 & *** \\ | |
| 70 | 85 | Tax Rate$^\dagger$ & $-$0.029 & 0.001 & *** & & Base$\times$North & $-$0.025 & 0.001 & *** \\ |
| 71 | 86 | Condo & $-$0.037 & 0.004 & *** & & Condo$\times$Walk$^\dagger$ & 0.082 & 0.001 & *** \\ |
| 72 | 87 | HOA & $-$0.108 & 0.002 & *** & & Age$\times$Lux$^\dagger$ & 0.044 & 0.001 & *** \\ |
@@ -79,42 +94,83 @@ Foreclosure & $-$0.406 & 0.010 & *** & & & & & \\ | ||
| 79 | 94 | \end{tabular} |
| 80 | 95 | \begin{tablenotes} |
| 81 | 96 | \footnotesize |
| 82 | −\item \textit{Notes:} HC3 robust standard errors. $^\dagger$Standardized continuous variables. Reference categories: Roof = Flat; Construction = Brick; Foundation = Basement; Region = Midwest. *** $p<0.001$, ** $p<0.01$, * $p<0.05$. | |
| 97 | +\item \textit{Notes:} HC3 robust standard errors; significance stars refer to HC3 and | |
| 98 | +overstate precision (Section~\ref{sec:cluster_results}). $^\dagger$Standardised | |
| 99 | +continuous variables. $^\ddagger$Published coding, $\ln(\text{lot}) = 0$ for 16.5\% of | |
| 100 | +listings; see Table~\ref{tab:lot_recoding}. $^\S$Variance dominated by corrupt entries | |
| 101 | +(Table~\ref{tab:implausible}). $^\P$State median for 93\% of listings. Reference | |
| 102 | +categories: Roof = Flat; Construction = Brick; Foundation = Basement; Region = Midwest. | |
| 103 | +*** $p<0.001$, ** $p<0.01$, * $p<0.05$. | |
| 83 | 104 | \end{tablenotes} |
| 84 | 105 | \end{threeparttable} |
| 85 | 106 | \end{table} |
| 86 | 107 | \end{landscape} |
| 87 | 108 | |
| 109 | +\section{Leave-One-State-Out Results by State} | |
| 110 | +\label{app:loso} | |
| 111 | + | |
| 112 | +Table~\ref{tab:loso_states} reports, for each of the 51 jurisdictions, the accuracy of | |
| 113 | +the full XGBoost model trained on the other fifty (Section~\ref{sec:loso}). The mean | |
| 114 | +error is the average of predicted minus actual log price in the held-out state, i.e.\ the | |
| 115 | +level bias of the out-of-state prediction; a value of $+0.10$ means that the model | |
| 116 | +over-prices the state by about 10\%. | |
| 117 | + | |
| 118 | +\begin{table}[H] | |
| 119 | +\centering | |
| 120 | +\caption{Leave-One-State-Out Accuracy of the Full XGBoost Model, by Held-Out State} | |
| 121 | +\label{tab:loso_states} | |
| 122 | +\begin{threeparttable} | |
| 123 | +\scriptsize | |
| 124 | +\renewcommand{\arraystretch}{0.88} | |
| 125 | +\begin{tabular}{lrrrrr} | |
| 126 | +\toprule | |
| 127 | +State & $N$ & $R^2$ (1,000 rounds) & $R^2$ (100 rounds) & Mean error & MdAPE (\%) \\ | |
| 128 | +\midrule | |
| 129 | +\input{tables/loso_states} \\ | |
| 130 | +\bottomrule | |
| 131 | +\end{tabular} | |
| 132 | +\begin{tablenotes} | |
| 133 | +\footnotesize | |
| 134 | +\item \textit{Notes:} Each row is a separate model trained on all listings outside the | |
| 135 | +state. Sorted by $R^2$ at 1,000 rounds. Mean error in log points. Generated by | |
| 136 | +\texttt{scripts/05\_revision\_geo\_validation.py}. | |
| 137 | +\end{tablenotes} | |
| 138 | +\end{threeparttable} | |
| 139 | +\end{table} | |
| 88 | 140 | |
| 89 | 141 | \section{Robustness Agenda} |
| 90 | 142 | \label{app:robustness_agenda} |
| 91 | 143 | |
| 92 | −The following robustness checks and extensions are planned or completed. Items marked with $\checkmark$ have been completed in this version; unmarked items are left for future work. | |
| 144 | +The following checks and extensions have been completed ($\checkmark$) or remain open. | |
| 93 | 145 | |
| 94 | 146 | \begin{enumerate}[nosep] |
| 95 | 147 | \item[$\checkmark$] ZIP3-level fixed effects (Section~\ref{sec:progressive_fe}). |
| 96 | − \item County-level and MSA-level fixed effects. | |
| 97 | − \item Spatial lag and spatial error model estimation. | |
| 98 | − \item Spatial cross-validation (train on some regions, test on others) at finer geographic levels. | |
| 99 | − \item[$\checkmark$] Inter-quantile Wald tests for coefficient equality across quantiles (Section~\ref{sec:qr_results}). | |
| 100 | − \item[$\checkmark$] Re-estimation excluding imputed observations (Section~\ref{sec:imputation_sensitivity}). | |
| 148 | + \item[$\checkmark$] Cluster-robust inference by ZIP3 and by state (Section~\ref{sec:cluster_results}). | |
| 149 | + \item[$\checkmark$] State-by-state estimation and fully interacted prediction (Section~\ref{sec:state_heterogeneity}). | |
| 150 | + \item County-level and MSA-level fixed effects (county identifiers are missing for 97\% of listings in the extract). | |
| 151 | + \item Spatial lag, spatial error and spatial HAC estimation. | |
| 152 | + \item[$\checkmark$] Inter-quantile Wald tests with a paired cluster-bootstrap covariance (Section~\ref{sec:qr_results}). | |
| 153 | + \item[$\checkmark$] Re-estimation excluding imputed observations and with corrected lot-size coding (Sections~\ref{sec:imputation_sensitivity}--\ref{sec:lot_recoding}). | |
| 154 | + \item[$\checkmark$] Missingness indicators in the machine-learning model (Section~\ref{sec:variants}). | |
| 101 | 155 | \item CatBoost benchmark with native categorical handling. |
| 102 | − \item Nested cross-validation for hyperparameter tuning. | |
| 103 | − \item[$\checkmark$] SHAP stability comparison across XGBoost, LightGBM, and Random Forest (Section~\ref{sec:shap_results}). | |
| 104 | − \item Integration of climate risk data from First Street Foundation or FEMA flood maps. | |
| 105 | − \item Replication using transaction prices from recently sold listings. | |
| 106 | − \item GAM/spline models to decompose the ML gain into non-linearity versus spatial partitioning. | |
| 107 | − \item Comparison of sample distribution to ACS and Census benchmarks by state and price tier. | |
| 156 | + \item Nested cross-validation for hyperparameter tuning, with spatially blocked inner folds \citep{schratz2019hyperparameter}. | |
| 157 | + \item[$\checkmark$] SHAP stability across XGBoost, LightGBM and random forest (Section~\ref{sec:shap_results}). | |
| 158 | + \item Integration of climate-risk data (First Street Foundation or FEMA flood maps). | |
| 159 | + \item Replication on transaction prices. | |
| 160 | + \item GAM or spline models to decompose the machine-learning gain into non-linearity versus spatial partitioning. | |
| 161 | + \item Comparison of the sample distribution with ACS and Census benchmarks by state and price tier. | |
| 108 | 162 | \item Calibration plots by price decile for all models. |
| 109 | − \item[$\checkmark$] Winsorization sensitivity (Section~\ref{sec:winsorization}). | |
| 110 | − \item[$\checkmark$] Feature ablation analysis for XGBoost (Section~\ref{sec:ablation}). | |
| 111 | − \item[$\checkmark$] XGBoost with latitude/longitude coordinates (Section~\ref{sec:geo_features}). | |
| 112 | − \item[$\checkmark$] XGBoost without geographic features (Section~\ref{sec:geo_features}). | |
| 113 | − \item[$\checkmark$] Moran's $I$ subsample stability (Section~\ref{sec:spatial_autocorrelation}). | |
| 114 | − \item[$\checkmark$] Quantile regression stability across 10 subsamples (Section~\ref{sec:qr_stability}). | |
| 163 | + \item[$\checkmark$] Winsorisation sensitivity (Section~\ref{sec:winsorization}). | |
| 164 | + \item[$\checkmark$] Feature ablation for XGBoost (Section~\ref{sec:ablation}). | |
| 165 | + \item[$\checkmark$] XGBoost with and without geographic features and school variables (Section~\ref{sec:variants}). | |
| 166 | + \item[$\checkmark$] Boosting-round sensitivity under geographic holdout (Section~\ref{sec:trees}). | |
| 167 | + \item[$\checkmark$] Size-matched random split (Section~\ref{sec:ml_geo}). | |
| 168 | + \item[$\checkmark$] Grouped five-fold and leave-one-state-out cross-validation (Section~\ref{sec:loso}). | |
| 169 | + \item[$\checkmark$] Moran's $I$ subsample stability and comparison across estimators (Section~\ref{sec:spatial_autocorrelation}). | |
| 170 | + \item[$\checkmark$] Quantile-regression stability across ten subsamples (Section~\ref{sec:qr_stability}). | |
| 171 | + \item[$\checkmark$] Bootstrap confidence intervals for test-set $R^2$ differences (Section~\ref{sec:ml_random}). | |
| 115 | 172 | \end{enumerate} |
| 116 | 173 | |
| 117 | − | |
| 118 | 174 | \section{Reproducibility Checklist} |
| 119 | 175 | \label{app:reproducibility} |
| 120 | 176 | |
@@ -129,38 +185,41 @@ The following robustness checks and extensions are planned or completed. Items m | ||
| 129 | 185 | Item & Status & Notes \\ |
| 130 | 186 | \midrule |
| 131 | 187 | \multicolumn{3}{l}{\textit{Data}} \\ |
| 132 | −Data source identified & Yes & Zillow active listings \\ | |
| 188 | +Data source identified & Yes & Zillow active listings, 2025--2026 \\ | |
| 133 | 189 | Sample construction documented & Yes & Table~\ref{tab:attrition} \\ |
| 134 | −Missing data rates reported & Yes & Table~\ref{tab:missing} \\ | |
| 135 | −Imputation method documented & Yes & State-level medians \\ | |
| 136 | −Imputation sensitivity tested & Yes & Table~\ref{tab:imputation} \\ | |
| 190 | +Missing data rates reported & Yes & Table~\ref{tab:missing}, all regressor inputs \\ | |
| 191 | +Imputation rules documented & Yes & Table~\ref{tab:missing} \\ | |
| 192 | +Imputation sensitivity tested & Yes & Tables~\ref{tab:imputation}, \ref{tab:lot_recoding}, \ref{tab:variants} \\ | |
| 193 | +Implausible values documented & Yes & Table~\ref{tab:implausible} \\ | |
| 137 | 194 | \midrule |
| 138 | 195 | \multicolumn{3}{l}{\textit{Methodology}} \\ |
| 139 | −Model specifications documented & Yes & Eq.~\ref{eq:ols}--\ref{eq:moran} \\ | |
| 140 | −Hyperparameters reported & Yes & Section~\ref{sec:methodology} \\ | |
| 141 | −Random seeds reported & Yes & Seed = 42 \\ | |
| 142 | −Validation design documented & Yes & Section~\ref{sec:validation_designs} \\ | |
| 196 | +Model specifications documented & Yes & Eq.~\eqref{eq:ols}--\eqref{eq:moran} \\ | |
| 197 | +Hyperparameters reported & Yes & Section~\ref{sec:ml_method} \\ | |
| 198 | +Random seeds reported & Yes & Seed 42; QR stability seeds in \texttt{src/wp3/config.py} \\ | |
| 199 | +Validation designs documented & Yes & Section~\ref{sec:validation_designs} \\ | |
| 143 | 200 | \midrule |
| 144 | 201 | \multicolumn{3}{l}{\textit{Results}} \\ |
| 145 | 202 | Point estimates reported & Yes & Tables~\ref{tab:ols_results}--\ref{tab:shap_stability} \\ |
| 146 | −Standard errors / CIs reported & Yes (OLS, QR) & HC3 standard errors \\ | |
| 147 | −Multiple comparisons addressed & Partially & Inter-quantile tests \\ | |
| 203 | +Standard errors & Yes & HC3 and cluster-robust (Table~\ref{tab:cluster_se}) \\ | |
| 204 | +Bootstrap inference & Yes & Tables~\ref{tab:iqr_tests}, \ref{tab:r2_bootstrap} \\ | |
| 148 | 205 | Effect sizes in natural units & Yes & Table~\ref{tab:ols_unstd} \\ |
| 149 | 206 | \midrule |
| 150 | 207 | \multicolumn{3}{l}{\textit{Robustness}} \\ |
| 151 | −Sensitivity to data quality & Yes & Sections~\ref{sec:imputation_sensitivity}--\ref{sec:winsorization} \\ | |
| 208 | +Sensitivity to data quality & Yes & Sections~\ref{sec:imputation_sensitivity}--\ref{sec:lot_recoding} \\ | |
| 152 | 209 | Sensitivity to model choice & Yes & Table~\ref{tab:ml_comparison} \\ |
| 153 | −Sensitivity to validation design & Yes & Tables~\ref{tab:geo_holdout}--\ref{tab:geo_role} \\ | |
| 210 | +Sensitivity to validation design & Yes & Tables~\ref{tab:designs}--\ref{tab:grouped_cv} \\ | |
| 154 | 211 | Cross-model stability & Yes & Table~\ref{tab:shap_stability} \\ |
| 155 | 212 | \midrule |
| 156 | −\multicolumn{3}{l}{\textit{Code and Data Availability}} \\ | |
| 157 | −Code available & Yes & Replication package (\texttt{src/}, \texttt{scripts/}, pinned \texttt{requirements.txt}) \\ | |
| 158 | −Data available & On request & Subject to Zillow ToS \\ | |
| 213 | +\multicolumn{3}{l}{\textit{Code and data availability}} \\ | |
| 214 | +Code available & Yes & \texttt{src/}, \texttt{scripts/01}--\texttt{08}, pinned \texttt{requirements.txt} \\ | |
| 215 | +Upstream sample-construction code & No & Lost before the 2026-08-05 restructuring; stored artefacts are canonical \\ | |
| 216 | +Data available & On request & Subject to Zillow terms of service \\ | |
| 159 | 217 | \bottomrule |
| 160 | 218 | \end{tabular} |
| 161 | 219 | \begin{tablenotes} |
| 162 | 220 | \small |
| 163 | −\item \textit{Notes:} This checklist follows recommended practices for empirical reproducibility in applied economics. | |
| 221 | +\item \textit{Notes:} Scripts 05--08 were added in the October 2026 revision; every | |
| 222 | +table they feed is generated from a stored CSV in \texttt{results/revision/}. | |
| 164 | 223 | \end{tablenotes} |
| 165 | 224 | \end{threeparttable} |
| 166 | 225 | \end{table} |
modified
paper/main.pdf
+0 −0
Binary file not shown.
modified
paper/main.tex
+4 −4
@@ -148,12 +148,12 @@ | ||
| 148 | 148 | \newcommand{\WPnumber}{3} |
| 149 | 149 | \newcommand{\WPtitle}{Hedonic Housing Price Models for the United States: A Multi-Method Comparison of Parametric, Quantile, and Machine Learning Approaches} |
| 150 | 150 | \newcommand{\WPsubtitle}{} |
| 151 | −\newcommand{\WPdate}{May 2026} | |
| 152 | −\newcommand{\WPversion}{1.1} | |
| 151 | +\newcommand{\WPdate}{October 2026} | |
| 152 | +\newcommand{\WPversion}{1.2} | |
| 153 | 153 | \newcommand{\WPabstract}{% |
| 154 | −This paper compares econometric and machine-learning approaches to hedonic housing valuation using 788,842 active Zillow listings across all 50 U.S.\ states and the District of Columbia. A semi-log OLS model with 62 regressors ($R^2 = 0.634$) provides interpretable listing-price gradients; adding ZIP3 fixed effects raises $R^2$ to 0.725, and Moran's $I = 0.27$ confirms strong residual spatial autocorrelation. Quantile regression reveals distributional heterogeneity, with inter-quantile Wald tests rejecting coefficient equality between $\tau = 0.10$ and $\tau = 0.90$ for 11 of 13 key variables. XGBoost achieves $R^2 = 0.833$ under random validation but only 0.425 under state-level geographic holdout; ablation analysis traces the predictive gain primarily to neighborhood-quality features ($+17.6$ pp) and shows that removing geographic features \emph{improves} geographic holdout $R^2$ to 0.519, revealing spatial overfitting. SHAP importance rankings are stable across models (Spearman $\rho > 0.89$). Robustness checks confirm that the lot-size gradient triples when imputed observations are dropped, while other coefficients remain stable under winsorization and subsampling. Throughout, estimates are interpreted as conditional associations in listing prices, not causal willingness-to-pay parameters.% | |
| 154 | +This paper compares econometric and machine-learning approaches to hedonic housing valuation on 788,842 active Zillow listings covering all 50 U.S.\ states and the District of Columbia, and asks how much of the machine-learning advantage survives when models must price homes in markets they have not seen. A semi-log OLS model with 62 regressors ($R^2 = 0.634$) yields listing-price gradients consistent with the hedonic literature; ZIP3 fixed effects raise out-of-sample $R^2$ to 0.725 and residual Moran's $I = 0.27$ shows strong spatial dependence. Allowing for that dependence matters: cluster-robust standard errors are, on median, 8 (ZIP3) to 12 (state) times the HC3 errors, and only 33 of 63 coefficients remain significant under state clustering. State-by-state estimation shows that the pooled coefficients average markedly different local price functions (living-area elasticities from 0.06 to 1.15) and that a fully interacted model gains 6.1 points of out-of-sample $R^2$ over state fixed effects. Quantile regression reveals distributional heterogeneity, with paired cluster-bootstrap Wald tests rejecting equality of the 10th- and 90th-percentile coefficients for 10 of 13 key attributes. XGBoost reaches $R^2 = 0.833$ under random validation but 0.425 under a ten-state holdout and a median of 0.653 across 51 leave-one-state-out models; once 0.6\% of corrupt records are removed, OLS is as accurate out of state (0.539) as the best tree ensemble. The gap is traced to the prediction of market price levels rather than within-market structure (within-state $R^2 = 0.62$), to region dummies and to ``neighbourhood'' variables that are state-median imputations for 93\% of listings, and to boosting capacity: held-out-state accuracy peaks after 75 rounds and declines thereafter while within-training accuracy keeps rising. SHAP rankings are stable across ensembles ($\rho > 0.89$), and the third-ranked feature is a state identifier. A coding error that set $\ln(\text{lot})$ to zero for 16.5\% of listings is corrected (lot elasticity 0.095, not 0.018). Estimates are interpreted throughout as conditional associations in asking prices, not willingness-to-pay parameters.% | |
| 155 | 155 | } |
| 156 | −\newcommand{\WPkeywords}{hedonic pricing, housing markets, quantile regression, XGBoost, SHAP, spatial autocorrelation, geographic validation} | |
| 156 | +\newcommand{\WPkeywords}{hedonic price function, listing prices, quantile regression, gradient boosting, SHAP, spatial cross-validation, cluster-robust inference, automated valuation model} | |
| 157 | 157 | \newcommand{\WPjel}{R31, C21, C45, C52} |
| 158 | 158 | |
| 159 | 159 | % --- Author --- |
modified
paper/references.bib
+278 −1
@@ -12,6 +12,7 @@ at-sign cannot appear here. | ||
| 12 | 12 | volume = {11}, |
| 13 | 13 | number = {6}, |
| 14 | 14 | pages = {633--648}, |
| 15 | + doi = {10.1002/(SICI)1099-1255(199611)11:6<633::AID-JAE414>3.0.CO;2-T}, | |
| 15 | 16 | } |
| 16 | 17 | |
| 17 | 18 | @article{anselin2010thirty, |
@@ -22,6 +23,7 @@ at-sign cannot appear here. | ||
| 22 | 23 | volume = {89}, |
| 23 | 24 | number = {1}, |
| 24 | 25 | pages = {3--25}, |
| 26 | + doi = {10.1111/j.1435-5957.2010.00279.x}, | |
| 25 | 27 | } |
| 26 | 28 | |
| 27 | 29 | @article{baldauf2020does, |
@@ -32,6 +34,7 @@ at-sign cannot appear here. | ||
| 32 | 34 | volume = {33}, |
| 33 | 35 | number = {3}, |
| 34 | 36 | pages = {1256--1295}, |
| 37 | + doi = {10.1093/rfs/hhz073}, | |
| 35 | 38 | } |
| 36 | 39 | |
| 37 | 40 | @article{bourassa2010predicting, |
@@ -53,6 +56,7 @@ at-sign cannot appear here. | ||
| 53 | 56 | volume = {101}, |
| 54 | 57 | number = {5}, |
| 55 | 58 | pages = {2108--2131}, |
| 59 | + doi = {10.1257/aer.101.5.2108}, | |
| 56 | 60 | } |
| 57 | 61 | |
| 58 | 62 | @article{can1992specification, |
@@ -63,6 +67,7 @@ at-sign cannot appear here. | ||
| 63 | 67 | volume = {22}, |
| 64 | 68 | number = {3}, |
| 65 | 69 | pages = {453--474}, |
| 70 | + doi = {10.1016/0166-0462(92)90039-4}, | |
| 66 | 71 | } |
| 67 | 72 | |
| 68 | 73 | @inproceedings{chen2016xgboost, |
@@ -71,6 +76,7 @@ at-sign cannot appear here. | ||
| 71 | 76 | booktitle = {Proceedings of the 22nd {ACM} {SIGKDD}}, |
| 72 | 77 | year = {2016}, |
| 73 | 78 | pages = {785--794}, |
| 79 | + doi = {10.1145/2939672.2939785}, | |
| 74 | 80 | } |
| 75 | 81 | |
| 76 | 82 | @article{park2015using, |
@@ -101,6 +107,7 @@ at-sign cannot appear here. | ||
| 101 | 107 | volume = {70}, |
| 102 | 108 | number = {4}, |
| 103 | 109 | pages = {668--675}, |
| 110 | + doi = {10.2307/1935831}, | |
| 104 | 111 | } |
| 105 | 112 | |
| 106 | 113 | @article{ekeland2004identification, |
@@ -111,6 +118,7 @@ at-sign cannot appear here. | ||
| 111 | 118 | volume = {112}, |
| 112 | 119 | number = {S1}, |
| 113 | 120 | pages = {S60--S109}, |
| 121 | + doi = {10.1086/379947}, | |
| 114 | 122 | } |
| 115 | 123 | |
| 116 | 124 | @article{goodman1998andrew, |
@@ -121,6 +129,7 @@ at-sign cannot appear here. | ||
| 121 | 129 | volume = {7}, |
| 122 | 130 | number = {2}, |
| 123 | 131 | pages = {121--143}, |
| 132 | + doi = {10.1006/jhec.1998.0229}, | |
| 124 | 133 | } |
| 125 | 134 | |
| 126 | 135 | @incollection{griliches1961hedonic, |
@@ -140,6 +149,7 @@ at-sign cannot appear here. | ||
| 140 | 149 | volume = {10}, |
| 141 | 150 | number = {1}, |
| 142 | 151 | pages = {37--49}, |
| 152 | + doi = {10.1016/0094-1190(81)90021-8}, | |
| 143 | 153 | } |
| 144 | 154 | |
| 145 | 155 | @article{hill2013hedonic, |
@@ -150,6 +160,7 @@ at-sign cannot appear here. | ||
| 150 | 160 | volume = {27}, |
| 151 | 161 | number = {5}, |
| 152 | 162 | pages = {879--914}, |
| 163 | + doi = {10.1111/j.1467-6419.2012.00731.x}, | |
| 153 | 164 | } |
| 154 | 165 | |
| 155 | 166 | @inproceedings{ke2017lightgbm, |
@@ -168,6 +179,7 @@ at-sign cannot appear here. | ||
| 168 | 179 | volume = {30}, |
| 169 | 180 | number = {2}, |
| 170 | 181 | pages = {213--237}, |
| 182 | + doi = {10.1111/1540-6229.00038}, | |
| 171 | 183 | } |
| 172 | 184 | |
| 173 | 185 | @article{koenker1978regression, |
@@ -178,6 +190,7 @@ at-sign cannot appear here. | ||
| 178 | 190 | volume = {46}, |
| 179 | 191 | number = {1}, |
| 180 | 192 | pages = {33--50}, |
| 193 | + doi = {10.2307/1913643}, | |
| 181 | 194 | } |
| 182 | 195 | |
| 183 | 196 | @article{kok2017big, |
@@ -188,6 +201,7 @@ at-sign cannot appear here. | ||
| 188 | 201 | volume = {43}, |
| 189 | 202 | number = {6}, |
| 190 | 203 | pages = {202--211}, |
| 204 | + doi = {10.3905/jpm.2017.43.6.202}, | |
| 191 | 205 | } |
| 192 | 206 | |
| 193 | 207 | @article{lancaster1966new, |
@@ -198,6 +212,7 @@ at-sign cannot appear here. | ||
| 198 | 212 | volume = {74}, |
| 199 | 213 | number = {2}, |
| 200 | 214 | pages = {132--157}, |
| 215 | + doi = {10.1086/259131}, | |
| 201 | 216 | } |
| 202 | 217 | |
| 203 | 218 | @book{lesage2009introduction, |
@@ -205,6 +220,7 @@ at-sign cannot appear here. | ||
| 205 | 220 | title = {Introduction to Spatial Econometrics}, |
| 206 | 221 | publisher = {Chapman and Hall/CRC}, |
| 207 | 222 | year = {2009}, |
| 223 | + doi = {10.1201/9781420064254}, | |
| 208 | 224 | } |
| 209 | 225 | |
| 210 | 226 | @article{liao2012hedonic, |
@@ -215,6 +231,7 @@ at-sign cannot appear here. | ||
| 215 | 231 | volume = {21}, |
| 216 | 232 | number = {1}, |
| 217 | 233 | pages = {16--27}, |
| 234 | + doi = {10.1016/j.jhe.2011.11.001}, | |
| 218 | 235 | } |
| 219 | 236 | |
| 220 | 237 | @inproceedings{lundberg2017unified, |
@@ -233,6 +250,7 @@ at-sign cannot appear here. | ||
| 233 | 250 | volume = {2}, |
| 234 | 251 | number = {1}, |
| 235 | 252 | pages = {56--67}, |
| 253 | + doi = {10.1038/s42256-019-0138-9}, | |
| 236 | 254 | } |
| 237 | 255 | |
| 238 | 256 | @article{mackinnon1985some, |
@@ -243,6 +261,7 @@ at-sign cannot appear here. | ||
| 243 | 261 | volume = {29}, |
| 244 | 262 | number = {3}, |
| 245 | 263 | pages = {305--325}, |
| 264 | + doi = {10.1016/0304-4076(85)90158-7}, | |
| 246 | 265 | } |
| 247 | 266 | |
| 248 | 267 | @article{mak2010quantile, |
@@ -415,6 +434,7 @@ at-sign cannot appear here. | ||
| 415 | 434 | publisher = {Blackwell}, |
| 416 | 435 | year = {2003}, |
| 417 | 436 | pages = {67--89}, |
| 437 | + doi = {10.1002/9780470690680.ch5}, | |
| 418 | 438 | } |
| 419 | 439 | |
| 420 | 440 | @article{meyer2021predicting, |
@@ -436,6 +456,7 @@ at-sign cannot appear here. | ||
| 436 | 456 | volume = {31}, |
| 437 | 457 | number = {2}, |
| 438 | 458 | pages = {87--106}, |
| 459 | + doi = {10.1257/jep.31.2.87}, | |
| 439 | 460 | } |
| 440 | 461 | |
| 441 | 462 | @article{oates1969effects, |
@@ -446,6 +467,7 @@ at-sign cannot appear here. | ||
| 446 | 467 | volume = {77}, |
| 447 | 468 | number = {6}, |
| 448 | 469 | pages = {957--971}, |
| 470 | + doi = {10.1086/259584}, | |
| 449 | 471 | } |
| 450 | 472 | |
| 451 | 473 | @incollection{roberts2013endogeneity, |
@@ -457,6 +479,7 @@ at-sign cannot appear here. | ||
| 457 | 479 | year = {2013}, |
| 458 | 480 | volume = {2A}, |
| 459 | 481 | pages = {493--572}, |
| 482 | + doi = {10.1016/B978-0-44-453594-8.00007-0}, | |
| 460 | 483 | } |
| 461 | 484 | |
| 462 | 485 | @article{roberts2017cross, |
@@ -467,6 +490,7 @@ at-sign cannot appear here. | ||
| 467 | 490 | volume = {40}, |
| 468 | 491 | number = {8}, |
| 469 | 492 | pages = {913--929}, |
| 493 | + doi = {10.1111/ecog.02881}, | |
| 470 | 494 | } |
| 471 | 495 | |
| 472 | 496 | @article{rosen1974hedonic, |
@@ -477,6 +501,7 @@ at-sign cannot appear here. | ||
| 477 | 501 | volume = {82}, |
| 478 | 502 | number = {1}, |
| 479 | 503 | pages = {34--55}, |
| 504 | + doi = {10.1086/260169}, | |
| 480 | 505 | } |
| 481 | 506 | |
| 482 | 507 | @incollection{shapley1953value, |
@@ -496,7 +521,8 @@ at-sign cannot appear here. | ||
| 496 | 521 | year = {2005}, |
| 497 | 522 | volume = {13}, |
| 498 | 523 | number = {1}, |
| 499 | − pages = {3--43}, | |
| 524 | + pages = {1--44}, | |
| 525 | + doi = {10.1080/10835547.2005.12090154}, | |
| 500 | 526 | } |
| 501 | 527 | |
| 502 | 528 | @article{white1980heteroskedasticity, |
@@ -507,6 +533,7 @@ at-sign cannot appear here. | ||
| 507 | 533 | volume = {48}, |
| 508 | 534 | number = {4}, |
| 509 | 535 | pages = {817--838}, |
| 536 | + doi = {10.2307/1912934}, | |
| 510 | 537 | } |
| 511 | 538 | |
| 512 | 539 | @article{zietz2008determinants, |
@@ -517,6 +544,7 @@ at-sign cannot appear here. | ||
| 517 | 544 | volume = {37}, |
| 518 | 545 | number = {4}, |
| 519 | 546 | pages = {317--333}, |
| 547 | + doi = {10.1007/s11146-007-9053-7}, | |
| 520 | 548 | } |
| 521 | 549 | |
| 522 | 550 | @article{waugh1928quality, |
@@ -722,3 +750,252 @@ at-sign cannot appear here. | ||
| 722 | 750 | pages = {1135--1144}, |
| 723 | 751 | doi = {10.1145/2939672.2939778}, |
| 724 | 752 | } |
| 753 | + | |
| 754 | +@article{halvorsen1980interpretation, | |
| 755 | + author = {Halvorsen, Robert and Palmquist, Raymond}, | |
| 756 | + title = {The interpretation of dummy variables in semilogarithmic equations}, | |
| 757 | + journal = {American Economic Review}, | |
| 758 | + year = {1980}, | |
| 759 | + volume = {70}, | |
| 760 | + number = {3}, | |
| 761 | + pages = {474--475}, | |
| 762 | +} | |
| 763 | + | |
| 764 | +@article{kennedy1981estimation, | |
| 765 | + author = {Kennedy, Peter E.}, | |
| 766 | + title = {Estimation with correctly interpreted dummy variables in semilogarithmic equations}, | |
| 767 | + journal = {American Economic Review}, | |
| 768 | + year = {1981}, | |
| 769 | + volume = {71}, | |
| 770 | + number = {4}, | |
| 771 | + pages = {801}, | |
| 772 | +} | |
| 773 | + | |
| 774 | +@article{mayer2019estimation, | |
| 775 | + author = {Mayer, Michael and Bourassa, Steven C. and Hoesli, Martin and Scognamiglio, Donato}, | |
| 776 | + title = {Estimation and updating methods for hedonic valuation}, | |
| 777 | + journal = {Journal of European Real Estate Research}, | |
| 778 | + year = {2019}, | |
| 779 | + volume = {12}, | |
| 780 | + number = {1}, | |
| 781 | + pages = {134--150}, | |
| 782 | + doi = {10.1108/JERER-08-2018-0035}, | |
| 783 | +} | |
| 784 | + | |
| 785 | +@article{hu2019monitoring, | |
| 786 | + author = {Hu, Lirong and He, Shenjing and Han, Zixuan and Xiao, He and Su, Shiliang and Weng, Min and Cai, Zhongliang}, | |
| 787 | + title = {Monitoring housing rental prices based on social media: {A}n integrated approach of machine-learning algorithms and hedonic modeling to inform equitable housing policies}, | |
| 788 | + journal = {Land Use Policy}, | |
| 789 | + year = {2019}, | |
| 790 | + volume = {82}, | |
| 791 | + pages = {657--673}, | |
| 792 | + doi = {10.1016/j.landusepol.2018.12.030}, | |
| 793 | +} | |
| 794 | + | |
| 795 | +@article{bogin2020appraisal, | |
| 796 | + author = {Bogin, Alexander N. and Shui, Jessica}, | |
| 797 | + title = {Appraisal accuracy and automated valuation models in rural areas}, | |
| 798 | + journal = {Journal of Real Estate Finance and Economics}, | |
| 799 | + year = {2020}, | |
| 800 | + volume = {60}, | |
| 801 | + number = {1--2}, | |
| 802 | + pages = {40--52}, | |
| 803 | + doi = {10.1007/s11146-019-09712-0}, | |
| 804 | +} | |
| 805 | + | |
| 806 | +@article{lorenz2023interpretable, | |
| 807 | + author = {Lorenz, Felix and Willwersch, Jonas and Cajias, Marcelo and Fuerst, Franz}, | |
| 808 | + title = {Interpretable machine learning for real estate market analysis}, | |
| 809 | + journal = {Real Estate Economics}, | |
| 810 | + year = {2023}, | |
| 811 | + volume = {51}, | |
| 812 | + number = {5}, | |
| 813 | + pages = {1178--1208}, | |
| 814 | + doi = {10.1111/1540-6229.12397}, | |
| 815 | +} | |
| 816 | + | |
| 817 | +@article{antipov2012mass, | |
| 818 | + author = {Antipov, Evgeny A. and Pokryshevskaya, Elena B.}, | |
| 819 | + title = {Mass appraisal of residential apartments: {A}n application of {R}andom forest for valuation and a {CART}-based approach for model diagnostics}, | |
| 820 | + journal = {Expert Systems with Applications}, | |
| 821 | + year = {2012}, | |
| 822 | + volume = {39}, | |
| 823 | + number = {2}, | |
| 824 | + pages = {1772--1778}, | |
| 825 | + doi = {10.1016/j.eswa.2011.08.077}, | |
| 826 | +} | |
| 827 | + | |
| 828 | +@article{meyer2022machine, | |
| 829 | + author = {Meyer, Hanna and Pebesma, Edzer}, | |
| 830 | + title = {Machine learning-based global maps of ecological variables and the challenge of assessing them}, | |
| 831 | + journal = {Nature Communications}, | |
| 832 | + year = {2022}, | |
| 833 | + volume = {13}, | |
| 834 | + pages = {2208}, | |
| 835 | + doi = {10.1038/s41467-022-29838-9}, | |
| 836 | +} | |
| 837 | + | |
| 838 | +@article{bourassa2007spatial, | |
| 839 | + author = {Bourassa, Steven C. and Cantoni, Eva and Hoesli, Martin}, | |
| 840 | + title = {Spatial dependence, housing submarkets, and house price prediction}, | |
| 841 | + journal = {Journal of Real Estate Finance and Economics}, | |
| 842 | + year = {2007}, | |
| 843 | + volume = {35}, | |
| 844 | + number = {2}, | |
| 845 | + pages = {143--160}, | |
| 846 | + doi = {10.1007/s11146-007-9036-8}, | |
| 847 | +} | |
| 848 | + | |
| 849 | +@article{bourassa2003submarkets, | |
| 850 | + author = {Bourassa, Steven C. and Hoesli, Martin and Peng, Vincent S.}, | |
| 851 | + title = {Do housing submarkets really matter?}, | |
| 852 | + journal = {Journal of Housing Economics}, | |
| 853 | + year = {2003}, | |
| 854 | + volume = {12}, | |
| 855 | + number = {1}, | |
| 856 | + pages = {12--28}, | |
| 857 | + doi = {10.1016/S1051-1377(03)00003-2}, | |
| 858 | +} | |
| 859 | + | |
| 860 | +@article{goodman2003segmentation, | |
| 861 | + author = {Goodman, Allen C. and Thibodeau, Thomas G.}, | |
| 862 | + title = {Housing market segmentation and hedonic prediction accuracy}, | |
| 863 | + journal = {Journal of Housing Economics}, | |
| 864 | + year = {2003}, | |
| 865 | + volume = {12}, | |
| 866 | + number = {3}, | |
| 867 | + pages = {181--201}, | |
| 868 | + doi = {10.1016/S1051-1377(03)00031-7}, | |
| 869 | +} | |
| 870 | + | |
| 871 | +@book{koenker2005quantile, | |
| 872 | + author = {Koenker, Roger}, | |
| 873 | + title = {Quantile Regression}, | |
| 874 | + publisher = {Cambridge University Press}, | |
| 875 | + address = {Cambridge}, | |
| 876 | + year = {2005}, | |
| 877 | + series = {Econometric Society Monographs}, | |
| 878 | + doi = {10.1017/CBO9780511754098}, | |
| 879 | +} | |
| 880 | + | |
| 881 | +@article{koenker1999goodness, | |
| 882 | + author = {Koenker, Roger and Machado, Jos{\'e} A. F.}, | |
| 883 | + title = {Goodness of fit and related inference processes for quantile regression}, | |
| 884 | + journal = {Journal of the American Statistical Association}, | |
| 885 | + year = {1999}, | |
| 886 | + volume = {94}, | |
| 887 | + number = {448}, | |
| 888 | + pages = {1296--1310}, | |
| 889 | + doi = {10.1080/01621459.1999.10473882}, | |
| 890 | +} | |
| 891 | + | |
| 892 | +@article{cameron2015practitioner, | |
| 893 | + author = {Cameron, A. Colin and Miller, Douglas L.}, | |
| 894 | + title = {A practitioner's guide to cluster-robust inference}, | |
| 895 | + journal = {Journal of Human Resources}, | |
| 896 | + year = {2015}, | |
| 897 | + volume = {50}, | |
| 898 | + number = {2}, | |
| 899 | + pages = {317--372}, | |
| 900 | + doi = {10.3368/jhr.50.2.317}, | |
| 901 | +} | |
| 902 | + | |
| 903 | +@article{moulton1990illustration, | |
| 904 | + author = {Moulton, Brent R.}, | |
| 905 | + title = {An illustration of a pitfall in estimating the effects of aggregate variables on micro units}, | |
| 906 | + journal = {Review of Economics and Statistics}, | |
| 907 | + year = {1990}, | |
| 908 | + volume = {72}, | |
| 909 | + number = {2}, | |
| 910 | + pages = {334--338}, | |
| 911 | + doi = {10.2307/2109724}, | |
| 912 | +} | |
| 913 | + | |
| 914 | +@article{conley1999gmm, | |
| 915 | + author = {Conley, Timothy G.}, | |
| 916 | + title = {{GMM} estimation with cross sectional dependence}, | |
| 917 | + journal = {Journal of Econometrics}, | |
| 918 | + year = {1999}, | |
| 919 | + volume = {92}, | |
| 920 | + number = {1}, | |
| 921 | + pages = {1--45}, | |
| 922 | + doi = {10.1016/S0304-4076(98)00084-0}, | |
| 923 | +} | |
| 924 | + | |
| 925 | +@article{epple1987hedonic, | |
| 926 | + author = {Epple, Dennis}, | |
| 927 | + title = {Hedonic prices and implicit markets: {E}stimating demand and supply functions for differentiated products}, | |
| 928 | + journal = {Journal of Political Economy}, | |
| 929 | + year = {1987}, | |
| 930 | + volume = {95}, | |
| 931 | + number = {1}, | |
| 932 | + pages = {59--80}, | |
| 933 | + doi = {10.1086/261441}, | |
| 934 | +} | |
| 935 | + | |
| 936 | +@article{jones1996indicator, | |
| 937 | + author = {Jones, Michael P.}, | |
| 938 | + title = {Indicator and stratification methods for missing explanatory variables in multiple linear regression}, | |
| 939 | + journal = {Journal of the American Statistical Association}, | |
| 940 | + year = {1996}, | |
| 941 | + volume = {91}, | |
| 942 | + number = {433}, | |
| 943 | + pages = {222--230}, | |
| 944 | + doi = {10.1080/01621459.1996.10476680}, | |
| 945 | +} | |
| 946 | + | |
| 947 | +@article{schratz2019hyperparameter, | |
| 948 | + author = {Schratz, Patrick and Muenchow, Jannes and Iturritxa, Eugenia and Richter, Jakob and Brenning, Alexander}, | |
| 949 | + title = {Hyperparameter tuning and performance assessment of statistical and machine-learning algorithms using spatial data}, | |
| 950 | + journal = {Ecological Modelling}, | |
| 951 | + year = {2019}, | |
| 952 | + volume = {406}, | |
| 953 | + pages = {109--120}, | |
| 954 | + doi = {10.1016/j.ecolmodel.2019.06.002}, | |
| 955 | +} | |
| 956 | + | |
| 957 | +@article{ho2021predicting, | |
| 958 | + author = {Ho, Winky K. O. and Tang, Bo-Sin and Wong, Siu Wai}, | |
| 959 | + title = {Predicting property prices with machine learning algorithms}, | |
| 960 | + journal = {Journal of Property Research}, | |
| 961 | + year = {2021}, | |
| 962 | + volume = {38}, | |
| 963 | + number = {1}, | |
| 964 | + pages = {48--70}, | |
| 965 | + doi = {10.1080/09599916.2020.1832558}, | |
| 966 | +} | |
| 967 | + | |
| 968 | +@article{perezrave2019machine, | |
| 969 | + author = {P{\'e}rez-Rave, Jorge Iv{\'a}n and Correa-Morales, Juan Carlos and Gonz{\'a}lez-Echavarr{\'i}a, Favi{\'a}n}, | |
| 970 | + title = {A machine learning approach to big data regression analysis of real estate prices for inferential and predictive purposes}, | |
| 971 | + journal = {Journal of Property Research}, | |
| 972 | + year = {2019}, | |
| 973 | + volume = {36}, | |
| 974 | + number = {1}, | |
| 975 | + pages = {59--96}, | |
| 976 | + doi = {10.1080/09599916.2019.1587489}, | |
| 977 | +} | |
| 978 | + | |
| 979 | +@article{diebold1995comparing, | |
| 980 | + author = {Diebold, Francis X. and Mariano, Roberto S.}, | |
| 981 | + title = {Comparing predictive accuracy}, | |
| 982 | + journal = {Journal of Business \& Economic Statistics}, | |
| 983 | + year = {1995}, | |
| 984 | + volume = {13}, | |
| 985 | + number = {3}, | |
| 986 | + pages = {253--263}, | |
| 987 | + doi = {10.1080/07350015.1995.10524599}, | |
| 988 | +} | |
| 989 | + | |
| 990 | +@incollection{palmquist2005property, | |
| 991 | + author = {Palmquist, Raymond B.}, | |
| 992 | + title = {Property value models}, | |
| 993 | + booktitle = {Handbook of Environmental Economics}, | |
| 994 | + editor = {M{\"a}ler, Karl-G{\"o}ran and Vincent, Jeffrey R.}, | |
| 995 | + publisher = {Elsevier}, | |
| 996 | + address = {Amsterdam}, | |
| 997 | + year = {2005}, | |
| 998 | + volume = {2}, | |
| 999 | + pages = {763--819}, | |
| 1000 | + doi = {10.1016/S1574-0099(05)02016-4}, | |
| 1001 | +} | |
modified
paper/sections/conclusion.tex
+62 −67
@@ -6,76 +6,71 @@ | ||
| 6 | 6 | \section{Conclusion} |
| 7 | 7 | \label{sec:conclusion} |
| 8 | 8 | |
| 9 | −This paper has compared three approaches to hedonic housing price analysis---OLS, | |
| 10 | −quantile regression, and gradient-boosted machine learning with SHAP | |
| 11 | −interpretation---using a national sample of 788,842 U.S.\ Zillow listings. Each | |
| 12 | −framework answers a different question, and the robustness program documents the | |
| 13 | −boundaries of each framework's conclusions. | |
| 9 | +This paper has compared three approaches to hedonic housing-price analysis---semi-log OLS | |
| 10 | +with progressively finer spatial controls, quantile regression, and gradient-boosted | |
| 11 | +ensembles with SHAP interpretation---on a national sample of 788,842 U.S.\ Zillow listings, | |
| 12 | +and has subjected the comparison to the validation and inference standards that spatial | |
| 13 | +data require. Each framework answers a different question, and the revision documents the | |
| 14 | +boundaries of each answer more precisely than the previous version could. | |
| 14 | 15 | |
| 15 | −OLS provides interpretable conditional mean associations whose signs and | |
| 16 | −magnitudes align with the meta-analytic record of hedonic housing studies | |
| 17 | −\citep{sirmans2005composition}: a price-to-area elasticity of 0.63, a 22.6\% | |
| 18 | −bathroom listing-price gradient, a 33.4\% foreclosure discount, and regional | |
| 19 | −listing-price differentials of 49\%--63\% between coastal and interior markets. | |
| 20 | −The progression from region fixed effects ($R^2 = 0.634$) to ZIP3 fixed effects | |
| 21 | −($R^2 = 0.725$) demonstrates---in line with the specification advice of | |
| 22 | −\citet{kuminoff2010which}---that fine-grained geographic controls capture | |
| 23 | −substantial variation, while the imputation sensitivity analysis shows the | |
| 24 | −lot-size gradient is attenuated threefold by state-median imputation. | |
| 16 | +The semi-log regression yields average listing-price gradients that align with the | |
| 17 | +meta-analytic record---a living-area elasticity of 0.63, a lot-size elasticity of 0.095 | |
| 18 | +once a coding error is corrected, a 22.6\% bathroom premium and a 33.4\% foreclosure | |
| 19 | +discount---and the progression from region to ZIP3 fixed effects raises out-of-sample | |
| 20 | +$R^2$ from 0.630 to 0.725. Two qualifications are new. Cluster-robust standard errors | |
| 21 | +are an order of magnitude larger than the HC3 errors previously reported, and only 33 of | |
| 22 | +63 coefficients remain significant under state clustering; the casualties are the | |
| 23 | +spatially aggregated proxies and the rare, concentrated amenities. And the pooled | |
| 24 | +coefficients are averages of state price functions whose slopes differ enough that a | |
| 25 | +fully interacted model gains 6.1 points of out-of-sample $R^2$ over state fixed effects | |
| 26 | +and that four attributes change sign in about twenty states. | |
| 25 | 27 | |
| 26 | −Quantile regression reveals that mean effects mask substantial distributional | |
| 27 | −heterogeneity, formally confirmed by inter-quantile Wald tests that reject | |
| 28 | −coefficient equality for 11 of 13 variables. The garage listing-price gradient is | |
| 29 | −ten times larger at the 10th percentile than the 90th ($z = 28.92$); the pool | |
| 30 | −gradient is insignificant below the median but reaches 9.9\% at $\tau = 0.90$. | |
| 31 | −Subsample stability analysis identifies age as the one coefficient that is | |
| 32 | −genuinely unstable across geographic subsamples. | |
| 28 | +Quantile regression shows that the mean masks distributional heterogeneity: the garage | |
| 29 | +gradient is ten times larger at the 10th than at the 90th conditional percentile, the | |
| 30 | +pool gradient emerges only above the median, and the living-area gradient declines | |
| 31 | +across the distribution. Paired cluster-bootstrap Wald tests confirm these differences for 10 of 13 key attributes, with standard errors several times larger than the independence-based ones reported previously. | |
| 33 | 32 | |
| 34 | −XGBoost captures non-linearities and interactions that improve prediction from | |
| 35 | −$R^2 = 0.630$ (OLS) to $R^2 = 0.833$ under random validation. That figure, | |
| 36 | −however, substantially overstates generalization to new markets. The ablation | |
| 37 | −analysis attributes the largest predictive gain to neighborhood features | |
| 38 | −($+17.6$ pp) and shows that the full model with region dummies actively harms | |
| 39 | −geographic holdout performance ($-7.6$ pp); removing all geographic features | |
| 40 | −\emph{improves} geographic holdout $R^2$ from 0.425 to 0.519, while adding | |
| 41 | −latitude and longitude does the opposite ($+3.7$ pp random, $-5.5$ pp | |
| 42 | −geographic). Geographic features help the model memorize location-specific price | |
| 43 | −levels but do not improve---and can degrade---its ability to transfer | |
| 44 | −attribute-price relationships to unseen markets. | |
| 33 | +Gradient boosting improves prediction from $R^2 = 0.630$ to 0.833 under random | |
| 34 | +validation, a gain whose cluster-bootstrap interval excludes anything below 0.19. That | |
| 35 | +gain does not transfer to markets the model has not seen. Under the ten-state holdout the | |
| 36 | +fully grown model reaches 0.425, the median of 51 leave-one-state-out models is | |
| 37 | +0.653, and the semi-log regression, once 0.6\% of corrupt records are removed, | |
| 38 | +is as accurate out of state (0.539) as the best tree ensemble. The revision traces the | |
| 39 | +collapse to three mechanisms: memorisation of state price levels through region dummies, | |
| 40 | +through tax rates and, above all, through ``neighbourhood'' variables that are in fact | |
| 41 | +state-median imputations for 93\% of listings; a within-state accuracy of 0.62 that is | |
| 42 | +stable across specifications, so that the error is in levels rather than within-market | |
| 43 | +structure; and a capacity effect by which held-out-state accuracy peaks after 75 boosting | |
| 44 | +rounds and declines thereafter while within-training accuracy keeps rising, so that | |
| 45 | +standard early stopping selects an over-fitted model. SHAP rankings are stable across | |
| 46 | +three ensembles, and the third-ranked feature is a state identifier. | |
| 45 | 47 | |
| 46 | −SHAP values identify the features contributing most to predictions---living | |
| 47 | −area, bathrooms, school quality, lot size, region---and this ranking is stable | |
| 48 | −across three tree-based models (Spearman $\rho = 0.89$--$0.99$). These remain | |
| 49 | −predictive decompositions rather than implicit prices, a distinction the | |
| 50 | −explainability literature itself insists upon \citep{rudin2019stop}. Moran's | |
| 51 | −$I = 0.27$ on OLS residuals---stable across subsamples---confirms that regional | |
| 52 | −controls leave substantial spatial dependence unaddressed. | |
| 48 | +The central contribution is methodological. Model evaluation in spatially dependent | |
| 49 | +housing data hinges on validation design, and the random-versus-blocked distinction | |
| 50 | +developed in ecology \citep{roberts2017cross, ploton2020spatial, meyer2021predicting, | |
| 51 | +wadoux2021spatial} transfers to hedonic economics with three additions that this paper | |
| 52 | +makes concrete: out-of-market error should be decomposed into level and within-market | |
| 53 | +components; imputed and aggregated features should be audited for the geography they | |
| 54 | +encode; and model capacity should be tuned on spatially blocked, not random, evaluation | |
| 55 | +sets. Studies comparing machine learning to hedonic regression on random splits alone will | |
| 56 | +overstate the practical machine-learning advantage for any application involving new | |
| 57 | +markets, and studies reporting conventional robust standard errors on national scraped | |
| 58 | +data will overstate the precision of their gradients. | |
| 53 | 59 | |
| 54 | −The central contribution is methodological: model evaluation in spatially | |
| 55 | −dependent housing data hinges on validation design, and the random-versus-blocked | |
| 56 | −distinction developed in ecology \citep{roberts2017cross, ploton2020spatial, | |
| 57 | −meyer2021predicting, wadoux2021spatial} transfers directly---and consequentially | |
| 58 | −---to hedonic economics. Random splits answer the interpolation question; held-out | |
| 59 | −regions answer the extrapolation question; and the two rank both models and | |
| 60 | −feature sets differently. Studies comparing machine learning to hedonic | |
| 61 | −regression on random splits alone will systematically overstate the practical ML | |
| 62 | −advantage for any application involving new markets. | |
| 60 | +Several extensions follow. Spatial econometric estimation and spatial HAC or wild-cluster | |
| 61 | +inference would model the dependence we only diagnose; replication on transaction prices | |
| 62 | +would quantify the listing-price wedge; climate-risk variables are a first-order omission; | |
| 63 | +county or metropolitan blocking would map the continuum between interpolation and | |
| 64 | +extrapolation if location identifiers were complete; spatially blocked hyperparameter | |
| 65 | +tuning would establish how much of the extrapolation gap is recoverable; and an | |
| 66 | +observed, rather than imputed, school-quality measure would allow the capitalization | |
| 67 | +question to be asked at all. We regard leave-region-out validation, reported alongside | |
| 68 | +random validation and decomposed into level and within-region accuracy, as a reasonable | |
| 69 | +default for future comparisons of machine-learning and hedonic models. | |
| 63 | 70 | |
| 64 | −Several extensions follow naturally. Spatial econometric estimation | |
| 65 | −\citep{lesage2009introduction} would model the dependence we only diagnose; | |
| 66 | −replication on transaction prices would quantify the listing-price wedge that the | |
| 67 | −seller-behavior literature predicts \citep{genesove2001loss, han2016role}; | |
| 68 | −climate-risk variables \citep{bernstein2019disaster, murfin2020risk} are a | |
| 69 | −first-order omission our residual diagnostics likely reflect; generalized | |
| 70 | −additive models would decompose the ML gain into non-linearity versus spatial | |
| 71 | −partitioning; and finer geographic blocking would map the continuum between our | |
| 72 | −two validation extremes. We would regard geographic holdout validation, reported | |
| 73 | −alongside random validation, as a reasonable default for future ML-hedonic | |
| 74 | −comparisons. | |
| 75 | − | |
| 76 | −The broader lesson is not that machine learning replaces hedonic econometrics, | |
| 77 | −nor the reverse. Prediction, distributional heterogeneity, and economic | |
| 78 | −interpretation are different questions; each of the tools examined here is strong | |
| 79 | −on exactly one of them, and honest housing-market analysis will continue to | |
| 80 | −require all three---each validated against the question it is actually meant to | |
| 81 | −answer. | |
| 71 | +The broader lesson is not that machine learning replaces hedonic econometrics, nor the | |
| 72 | +reverse. Prediction within observed markets, prediction in new markets, distributional | |
| 73 | +heterogeneity and economic interpretation are different questions; each of the tools | |
| 74 | +examined here is strong on at most one of them, and housing-market analysis will continue | |
| 75 | +to require all of them---each validated against the question it is meant to answer, and | |
| 76 | +each read with the data's imputation rules in hand. | |
modified
paper/sections/data.tex
+233 −93
@@ -6,19 +6,86 @@ | ||
| 6 | 6 | \section{Data and Variable Construction} |
| 7 | 7 | \label{sec:data} |
| 8 | 8 | |
| 9 | −\subsection{Data Source} | |
| 10 | − | |
| 11 | −The dataset is sourced from Zillow, the largest online real estate marketplace in the United States. The raw data contain 839,313 residential properties with 116 variables, representing active for-sale listings as of 2025--2026. The data include listing prices, structural characteristics, geocoordinates, neighborhood quality scores, and tax/transaction histories. | |
| 12 | − | |
| 13 | −\textbf{Important limitations of the data source.} The sample comprises active Zillow listings, not the universe of U.S.\ residential properties. Several sources of non-representativeness should be noted: (i) Zillow coverage varies by region, with some MLS-linked markets better represented than others; (ii) active listings capture supply at a point in time, not the full housing stock; (iii) the sample excludes off-market properties, FSBOs not listed on Zillow, and recently transacted properties that are no longer listed; (iv) Southern states are overrepresented (56.6\% of the sample vs.\ approximately 38\% of U.S.\ housing units), likely reflecting higher listing volumes in fast-growing Sun Belt markets. We do not claim national representativeness and caution against interpreting our estimates as population parameters for the entire U.S.\ housing market. | |
| 9 | +\subsection{Data Source and Coverage} | |
| 10 | + | |
| 11 | +The data are an extract of active for-sale listings on Zillow, the largest online real | |
| 12 | +estate marketplace in the United States, collected in 2025--2026. The raw extract | |
| 13 | +contains 839,313 residential properties described by 116 variables: the asking price, | |
| 14 | +structural characteristics, geocoordinates, neighbourhood accessibility scores, school | |
| 15 | +information, tax records, and listing-status tags. Every observation carries the status | |
| 16 | +\texttt{FOR\_SALE}; 85.4\% are single-family homes and 14.6\% condominiums; 89.2\% are | |
| 17 | +listed by an agent, 6.5\% are new-construction listings or plans, and 1.7\% are | |
| 18 | +for-sale-by-owner listings. The median listing had been on Zillow for 72 days at the time | |
| 19 | +of extraction (interquartile range 35--134 days). | |
| 20 | + | |
| 21 | +The sample is a snapshot of the supply side of the market, not of the housing stock. | |
| 22 | +Four sources of non-representativeness deserve emphasis. First, Zillow coverage varies | |
| 23 | +across regions and depends on the completeness of local multiple-listing-service feeds. | |
| 24 | +Second, active listings over-represent segments with long marketing times and | |
| 25 | +under-represent segments that clear quickly. Third, off-market properties, unlisted | |
| 26 | +for-sale-by-owner homes and recently transacted properties are absent. Fourth, Southern | |
| 27 | +states account for 56.6\% of the sample against roughly 38\% of U.S.\ housing units, | |
| 28 | +reflecting the high listing volumes of Sun Belt markets. We therefore do not claim national | |
| 29 | +representativeness and interpret the estimates as parameters of the population of active | |
| 30 | +listings in the extraction window. | |
| 14 | 31 | |
| 15 | 32 | \subsection{Listing Prices versus Transaction Prices} |
| 33 | +\label{sec:listing_prices} | |
| 34 | + | |
| 35 | +The dependent variable is the asking price, not a transaction price. Asking prices are | |
| 36 | +strategic objects: they serve as commitment devices in seller search | |
| 37 | +\citep{horowitz1992role}, direct buyer attention \citep{han2016role}, respond to | |
| 38 | +loss aversion among sellers facing nominal losses \citep{genesove2001loss}, and | |
| 39 | +systematic overpricing lengthens time on market and lowers the eventual sale price | |
| 40 | +\citep{knight2002listing}. The wedge between asking and transaction prices therefore | |
| 41 | +varies with market conditions, property type and price tier, and it may be correlated | |
| 42 | +with the attributes whose gradients we estimate. Throughout the paper the estimated | |
| 43 | +coefficients are read as \emph{listing-price capitalization gradients}: conditional | |
| 44 | +associations between attributes and asking prices, not transaction-price implicit prices | |
| 45 | +in the sense of \citet{rosen1974hedonic}. | |
| 46 | + | |
| 47 | +The extract does not contain the eventual sale price of the listed homes, so the wedge | |
| 48 | +cannot be measured directly. It does contain Zillow's own automated valuation, the | |
| 49 | +Zestimate, for 55.0\% of the sample. Table~\ref{tab:zestimate} reports the distribution | |
| 50 | +of the ratio of the asking price to the Zestimate. The median listing is priced 2.0\% | |
| 51 | +above Zillow's valuation, 91.4\% of listings are priced above it, and the interquartile | |
| 52 | +range of the ratio is narrow (1.008--1.037). The premium is largest in the South | |
| 53 | +(median 1.023) and smallest in the West and Northeast (1.015--1.016). Because the | |
| 54 | +Zestimate is itself a model fitted partly to listing information, the ratio is a lower | |
| 55 | +bound on the information content of the wedge rather than a measure of it; it does, | |
| 56 | +however, indicate that asking prices in this sample sit systematically but modestly above | |
| 57 | +an independent valuation benchmark, and that the dispersion of the premium is small | |
| 58 | +relative to the dispersion of prices. | |
| 16 | 59 | |
| 17 | −A critical limitation is that our dependent variable is the \textit{listing} (asking) price, not the realized transaction price. Listing prices are strategic objects: theory models them as commitment devices in seller search \citep{horowitz1992role} and as instruments that direct buyer attention \citep{han2016role}, and empirically they embed seller behavior---overpricing lengthens time-on-market and lowers eventual sale prices \citep{knight2002listing}, while loss-averse sellers systematically set higher asking prices \citep{genesove2001loss}. List-to-sale price ratios therefore vary by market condition, property type, and price tier: luxury properties are more frequently overpriced, distressed properties may be strategically underpriced, and regional norms for overbidding versus negotiation differ substantially. Throughout this paper, we interpret the estimated coefficients as \textbf{listing-price capitalization gradients}---conditional associations between attributes and asking prices---rather than transaction-price implicit prices. If listing premiums correlate systematically with property attributes (e.g., if waterfront properties are more frequently overpriced), the estimated gradients will reflect this pricing behavior in addition to underlying valuation differences. | |
| 60 | +\begin{table}[H] | |
| 61 | +\centering | |
| 62 | +\caption{Ratio of Asking Price to Zestimate, by Census Region} | |
| 63 | +\label{tab:zestimate} | |
| 64 | +\begin{threeparttable} | |
| 65 | +\small | |
| 66 | +\begin{tabular}{lrrrrr} | |
| 67 | +\toprule | |
| 68 | +Quantile & All & Northeast & Midwest & South & West \\ | |
| 69 | +\midrule | |
| 70 | +\input{tables/zestimate} \\ | |
| 71 | +\bottomrule | |
| 72 | +\end{tabular} | |
| 73 | +\begin{tablenotes} | |
| 74 | +\small | |
| 75 | +\item \textit{Notes:} Listings with a non-missing Zestimate (55.0\% of the analytical | |
| 76 | +sample; ratios outside $[0.2, 5]$ excluded). The Zestimate is Zillow's automated valuation | |
| 77 | +at the time of extraction. Generated by \texttt{scripts/06\_revision\_inference.py}. | |
| 78 | +\end{tablenotes} | |
| 79 | +\end{threeparttable} | |
| 80 | +\end{table} | |
| 18 | 81 | |
| 19 | 82 | \subsection{Sample Construction} |
| 20 | 83 | |
| 21 | −Table~\ref{tab:attrition} documents the sample construction. | |
| 84 | +Table~\ref{tab:attrition} documents the sample construction. Five sequential filters | |
| 85 | +remove 6.0\% of the raw records, leaving 788,842 listings in 50 states and the District | |
| 86 | +of Columbia, 26,477 five-digit ZIP codes and 885 three-digit ZIP prefixes (ZIP3). The | |
| 87 | +price window of \$10,000--\$10,000,000 excludes land-only and placeholder listings at the | |
| 88 | +bottom and a small number of trophy properties at the top. | |
| 22 | 89 | |
| 23 | 90 | \begin{table}[H] |
| 24 | 91 | \centering |
@@ -33,104 +100,176 @@ Raw Zillow records & 839,313 & --- & --- \\ | ||
| 33 | 100 | Valid price & 817,473 & 21,840 & $\$10{,}000 < P < \$10{,}000{,}000$ \\ |
| 34 | 101 | Valid living area & 797,380 & 20,093 & $200 < \text{sqft} < 20{,}000$ \\ |
| 35 | 102 | Valid bedrooms/bathrooms & 790,799 & 6,581 & $1 \leq \text{bed} \leq 10$, $1 \leq \text{bath} \leq 10$ \\ |
| 36 | −Valid geocoordinates & 789,199 & 1,600 & Non-missing lat/lon \\ | |
| 37 | −U.S.\ states + DC only & 788,842 & 357 & Exclude PR, VI \\ | |
| 103 | +Valid geocoordinates & 789,199 & 1,600 & Non-missing latitude/longitude \\ | |
| 104 | +U.S.\ states and DC only & 788,842 & 357 & Exclude PR, VI \\ | |
| 38 | 105 | \midrule |
| 39 | 106 | \textbf{Final analytical sample} & \textbf{788,842} & \textbf{50,471} & \textbf{(6.0\% removed)} \\ |
| 40 | 107 | \bottomrule |
| 41 | 108 | \end{tabular} |
| 42 | 109 | \begin{tablenotes} |
| 43 | 110 | \small |
| 44 | −\item \textit{Notes:} Filters applied sequentially. The 6.0\% removal rate suggests the raw data are reasonably clean, though the retained sample may still contain measurement error in secondary variables. | |
| 111 | +\item \textit{Notes:} Filters applied sequentially. The filters act on price, living | |
| 112 | +area, room counts and location only; secondary attributes are not screened at this | |
| 113 | +stage (see Section~\ref{sec:data_quality}). | |
| 45 | 114 | \end{tablenotes} |
| 46 | 115 | \end{threeparttable} |
| 47 | 116 | \end{table} |
| 48 | 117 | |
| 49 | 118 | \subsection{Variable Description} |
| 50 | − | |
| 51 | −Our specification includes 62 regressors organized into six categories. | |
| 52 | − | |
| 53 | −\subsubsection{Structural Attributes (8 Variables)} | |
| 54 | − | |
| 55 | −The natural logarithm of living area ($\ln\text{sqft}$), number of bedrooms, number of bathrooms, property age ($2026 - \text{year\_built}$) and its square, number of stories, the bathroom-to-bedroom ratio, and square feet per bedroom. Living area enters in log form to accommodate the well-documented concavity of the size-price relationship. | |
| 56 | − | |
| 57 | −\subsubsection{Lot Characteristics (1 Variable)} | |
| 58 | − | |
| 59 | −The natural logarithm of lot size ($\ln\text{lot}$). Missing lot sizes (16.3\% of raw data) are imputed using state-level medians. | |
| 60 | − | |
| 61 | −\subsubsection{Amenity and Quality Indicators (11 Variables)} | |
| 62 | − | |
| 63 | −Binary indicators for swimming pool (39.8\% prevalence), spa (6.1\%), basement (24.3\%), fireplace (39.6\%), garage (67.2\%), waterfront location (8.9\%), central air conditioning (68.1\%), forced air heating (25.8\%), and hardwood flooring (26.7\%). The number of parking spaces and a composite luxury score (0--7) supplement these indicators. | |
| 64 | − | |
| 65 | −\subsubsection{Neighborhood and Location Variables (7 Variables)} | |
| 66 | − | |
| 67 | −Walk Score (0--100), Bike Score, Transit Score, average GreatSchools rating (1--10), school count, distance to nearest school, and local property tax rate. Walk Score is the accessibility measure for which a capitalization premium has been documented in the literature \citep{pivo2011walkability}; school ratings and tax rates proxy the local public goods whose capitalization into house prices is the subject of a large identification literature \citep{oates1969effects, black1999better, bayer2007unified}. | |
| 68 | − | |
| 69 | −\textbf{Data quality note.} Bike Score has a maximum value of 248 in our data, exceeding the expected 0--100 range. Only 38 observations (0.005\%) exceed 100, and these are retained without truncation. Results are robust to capping Bike Score at 100. | |
| 70 | − | |
| 71 | −\subsubsection{Market Status Variables (5 Variables)} | |
| 72 | − | |
| 73 | −Condominium indicator (14.6\%), HOA membership (37.1\%), log annualized HOA fees ($\ln(1 + \text{HOA}_\text{annual})$), new construction (5.9\%), and foreclosure status (0.5\%). | |
| 74 | − | |
| 75 | −\subsubsection{Interaction Terms (6 Variables)} | |
| 76 | − | |
| 77 | −\begin{itemize}[nosep] | |
| 78 | − \item $\ln(\text{sqft}) \times \text{age}$: depreciation-size interaction; | |
| 79 | − \item $\text{pool} \times \text{South}$: climate-dependent pool gradient; | |
| 80 | − \item $\text{waterfront} \times \ln(\text{sqft})$: size-dependent waterfront gradient; | |
| 81 | − \item $\text{basement} \times \text{North}$: region-dependent basement gradient; | |
| 82 | − \item $\text{condo} \times \text{walk\_score}$: walkability gradient for condominiums; | |
| 83 | − \item $\text{age} \times \text{luxury\_score}$: luxury mitigation of depreciation. | |
| 84 | −\end{itemize} | |
| 85 | − | |
| 86 | −\subsubsection{Categorical Controls (24 Dummy Variables)} | |
| 87 | − | |
| 88 | −Simplified indicators for roof type (6 dummies), construction material (8 dummies), foundation type (7 dummies), and Census region (3 dummies; Midwest reference). | |
| 89 | − | |
| 90 | −\subsection{Missing Data and Imputation} | |
| 91 | − | |
| 92 | −Table~\ref{tab:missing} reports missingness rates for key variables. | |
| 119 | +\label{sec:variables} | |
| 120 | + | |
| 121 | +The specification includes 62 regressors organised in six blocks. | |
| 122 | + | |
| 123 | +\textit{Structural attributes (8).} The natural logarithm of living area | |
| 124 | +($\ln\text{sqft}$), bedrooms, bathrooms, property age ($2026 - \text{year built}$) and its | |
| 125 | +square, stories, the bathroom-to-bedroom ratio and living area per bedroom. Living area | |
| 126 | +enters in logarithms to accommodate the concavity of the size--price relationship. | |
| 127 | + | |
| 128 | +\textit{Lot characteristics (1).} The natural logarithm of lot size ($\ln\text{lot}$); its | |
| 129 | +coding is discussed in Section~\ref{sec:missing}. | |
| 130 | + | |
| 131 | +\textit{Amenity and quality indicators (11).} Binary indicators for swimming pool (39.8\% | |
| 132 | +prevalence), spa (6.1\%), basement (24.3\%), fireplace (39.6\%), garage (67.2\%), waterfront | |
| 133 | +location (8.9\%), central air conditioning (68.1\%), forced-air heating (25.8\%) and | |
| 134 | +hardwood flooring (26.7\%); the number of parking spaces; and a composite luxury score | |
| 135 | +(0--7) counting premium features mentioned in the listing. | |
| 136 | + | |
| 137 | +\textit{Neighbourhood and location (7).} Walk Score (0--100), Bike Score, Transit Score, | |
| 138 | +the average GreatSchools rating of nearby schools (1--10), the number of nearby schools, | |
| 139 | +the distance to the nearest school, and the local effective property-tax rate. Walk Score | |
| 140 | +is the accessibility measure for which a capitalization premium has been documented | |
| 141 | +\citep{pivo2011walkability}; school ratings and tax rates proxy the local public goods | |
| 142 | +whose capitalization is the subject of a large identification literature | |
| 143 | +\citep{oates1969effects, black1999better, bayer2007unified}. As | |
| 144 | +Section~\ref{sec:missing} shows, the three school variables are observed for only 7\% of | |
| 145 | +listings, which fundamentally changes how they must be read. | |
| 146 | + | |
| 147 | +\textit{Market status (5).} Condominium indicator (14.6\%), homeowners'-association | |
| 148 | +membership (37.1\%), log annualised HOA fees ($\ln(1 + \text{HOA}_\text{annual})$), new | |
| 149 | +construction (5.9\%) and foreclosure status (0.5\%). | |
| 150 | + | |
| 151 | +\textit{Interaction terms (6) and categorical controls (24).} Six interactions | |
| 152 | +($\ln\text{sqft} \times \text{age}$, pool $\times$ South, waterfront $\times | |
| 153 | +\ln\text{sqft}$, basement $\times$ North, condominium $\times$ Walk Score, age $\times$ | |
| 154 | +luxury score) and dummy sets for roof type (6), construction material (8), foundation | |
| 155 | +type (7) and Census region (3, Midwest reference). Each categorical set includes an | |
| 156 | +``Unknown'' category that absorbs listings for which the attribute is not reported. | |
| 157 | + | |
| 158 | +\subsection{Missing Data, Imputation and Coding} | |
| 159 | +\label{sec:missing} | |
| 160 | + | |
| 161 | +Scraped listing data are incomplete in ways that are rarely random. Table~\ref{tab:missing} | |
| 162 | +reports, for every regressor input, the share of the analytical sample for which the raw | |
| 163 | +field is missing and the rule that the sample-construction stage applied. Three facts | |
| 164 | +emerge that earlier versions of this paper did not report and that condition the | |
| 165 | +interpretation of several results. | |
| 93 | 166 | |
| 94 | 167 | \begin{table}[H] |
| 95 | 168 | \centering |
| 96 | −\caption{Missing Data Rates and Imputation Methods} | |
| 169 | +\caption{Missing Raw Inputs and Imputation Rules (Analytical Sample, $N = 788{,}842$)} | |
| 97 | 170 | \label{tab:missing} |
| 98 | 171 | \begin{threeparttable} |
| 99 | −\small | |
| 100 | −\begin{tabular}{lrrl} | |
| 172 | +\footnotesize | |
| 173 | +\begin{tabular}{p{6.2cm}rp{5.6cm}} | |
| 101 | 174 | \toprule |
| 102 | −Variable & Missing (\%) & Method & Notes \\ | |
| 175 | +Regressor input (raw field) & Missing (\%) & Rule applied \\ | |
| 103 | 176 | \midrule |
| 104 | −Year built & 19.4 & State median & Affects age, age$^2$, interactions \\ | |
| 105 | −Lot size & 16.3 & State median & Large variation \\ | |
| 106 | −Walk Score & 3.1 & State median & \\ | |
| 107 | −Bike Score & 6.1 & State median & Max = 248 (38 obs.) \\ | |
| 108 | −Transit Score & 70.1 & Set to 0 & Suburban/rural properties \\ | |
| 109 | −Garage & 35.1 & Set to False & Conservative \\ | |
| 110 | −Climate risk factors & 100.0 & Excluded & Not available \\ | |
| 177 | +\input{tables/missingness} \\ | |
| 111 | 178 | \bottomrule |
| 112 | 179 | \end{tabular} |
| 113 | 180 | \begin{tablenotes} |
| 114 | 181 | \small |
| 115 | −\item \textit{Notes:} State-level median imputation is used to preserve geographic variation. The high Transit Score missingness (70.1\%) likely reflects properties in areas without public transit infrastructure, for which zero is a reasonable value. Climate risk factors (flood, fire, heat, wind, air) are entirely missing and excluded from the analysis. | |
| 182 | +\item \textit{Notes:} Missingness measured in the raw extract for the 788,842 retained | |
| 183 | +listings. ``State median'' denotes imputation by the median of observed values within the | |
| 184 | +listing's state. Climate-risk factors (flood, fire, heat, wind, air) are missing for every | |
| 185 | +record and excluded. Generated by \texttt{scripts/06\_revision\_inference.py}. | |
| 116 | 186 | \end{tablenotes} |
| 117 | 187 | \end{threeparttable} |
| 118 | 188 | \end{table} |
| 119 | 189 | |
| 120 | −\subsection{Data Quality Audit} | |
| 121 | −\label{sec:data_audit} | |
| 122 | − | |
| 123 | −We conduct three data quality checks to assess the sensitivity of key results to imputation and outliers. | |
| 124 | − | |
| 125 | −\textbf{Imputation prevalence.} Two variables---year built (19.4\% missing) and lot size (16.3\% missing)---account for the bulk of imputed values. To assess the consequences, we re-estimate the baseline OLS model on subsamples that exclude imputed observations (Section~\ref{sec:imputation_sensitivity}). The lot-size coefficient is the most sensitive: $\ln(\text{lot})$ triples from 0.018 to 0.059 when imputed lot sizes are dropped, suggesting that state-median imputation attenuates the lot-size gradient substantially. | |
| 190 | +First, the three school variables are missing for 93.0\% of listings and were imputed | |
| 191 | +with state medians. For 93\% of the sample, ``average school rating'' therefore takes one | |
| 192 | +of 51 values and identifies the state rather than the quality of nearby schools; the | |
| 193 | +imputed school count is three in every state. Any coefficient or importance measure | |
| 194 | +attached to these variables must be read as a state-level location effect, a point we | |
| 195 | +return to when interpreting the negative school-rating coefficient | |
| 196 | +(Section~\ref{sec:signs}) and the prominence of school rating in the SHAP rankings | |
| 197 | +(Section~\ref{sec:shap_results}). Second, year built is missing for 18.9\% of listings and | |
| 198 | +replaced by the state median, so that the age distribution contains a spike of imputed | |
| 199 | +values at the state-specific median age. Third, lot size is missing for 15.7\% of listings | |
| 200 | +and recorded as zero for a further 0.8\%; although the lot-size field itself was imputed | |
| 201 | +with state medians, the regressor actually entering the models, $\ln(\text{lot})$, was | |
| 202 | +computed before imputation and takes the value 0 for all 130,271 such listings (16.5\% of | |
| 203 | +the sample). The published lot-size results therefore reflect a de facto missing-value | |
| 204 | +code located eight log units below the mass of the data; Section~\ref{sec:lot_recoding} | |
| 205 | +re-estimates the model with a correct coding and shows that the baseline lot-size | |
| 206 | +gradient was understated by a factor of five. | |
| 207 | + | |
| 208 | +The remaining rules are conventional but not innocuous. Transit Score is set to zero when | |
| 209 | +missing (70.2\%), on the assumption that properties without a score lie outside | |
| 210 | +transit-served areas; the garage indicator is set to \emph{false} when the field is | |
| 211 | +missing (32.8\%), so that it partly measures the completeness of the listing; and the | |
| 212 | +central-air, forced-air and hardwood indicators are derived from free-text | |
| 213 | +cooling, heating and flooring fields that are missing for 8--30\% of listings. Setting | |
| 214 | +missing indicators to zero is a special case of the missing-indicator method whose bias | |
| 215 | +properties are analysed by \citet{jones1996indicator}: the coefficient on such a variable | |
| 216 | +mixes the attribute effect with the effect of reporting the attribute. We treat these | |
| 217 | +coefficients as descriptive and use missingness indicators as a robustness device in the | |
| 218 | +machine-learning section (Section~\ref{sec:variants}). | |
| 219 | + | |
| 220 | +\subsection{Data Quality} | |
| 221 | +\label{sec:data_quality} | |
| 222 | + | |
| 223 | +The sample filters screen price, size, room counts and location, but not secondary | |
| 224 | +attributes. Table~\ref{tab:implausible} counts the records whose secondary attributes are | |
| 225 | +implausible. The number of parking spaces exceeds 20 for 1,133 listings and 1,000 for 67 | |
| 226 | +(the maximum is $1.1\times 10^{11}$); stories exceed 10 for 1,607 listings; 422 lots exceed one | |
| 227 | +square mile; 121 listings report a year built after 2026 (age set to zero) and 1,838 a year | |
| 228 | +built before 1826 (age capped at 200). These records are few---4,970 listings, 0.6\% of | |
| 229 | +the sample, fail at least one of the four screens used below---but they matter for the | |
| 230 | +linear models: in the unstandardised OLS the parking-space coefficient is | |
| 231 | +$1.9 \times 10^{-12}$ with a standardised standard error of 0.099, i.e.\ the variable is | |
| 232 | +uninformative because its variance is dominated by a handful of corrupt entries. For the | |
| 233 | +geographic-holdout comparison of Section~\ref{sec:ml_geo} these records are decisive: the | |
| 234 | +catastrophic out-of-state failure of OLS reported in the previous version of this paper | |
| 235 | +($R^2 \approx -2\times 10^{6}$) is entirely attributable to linear extrapolation on | |
| 236 | +corrupt parking and story counts in the held-out states, not to the regional dummies. | |
| 237 | +Tree ensembles are unaffected because they split on ranks. Bike Score exceeds its nominal | |
| 238 | +maximum of 100 for 38 listings (maximum 248) and is retained; results are robust to capping | |
| 239 | +it at 100 (Section~\ref{sec:winsorization}). | |
| 126 | 240 | |
| 127 | −\textbf{Outlier prevalence.} We winsorize lot size at its 99.5th percentile and cap Bike Score at 100, then re-estimate OLS (Section~\ref{sec:winsorization}). The overall $R^2$ increases modestly from 0.634 to 0.640, and most coefficients are stable, with the exception of $\ln(\text{lot})$, which again increases substantially. | |
| 128 | − | |
| 129 | −\textbf{Geographic coverage.} The sample spans 886 unique three-digit ZIP code prefixes (ZIP3 codes) across 51 jurisdictions (50 states plus DC). Southern states account for 56.6\% of observations. We document the marginal explanatory power of progressively finer geographic controls in Section~\ref{sec:ols_fe}. | |
| 241 | +\begin{table}[H] | |
| 242 | +\centering | |
| 243 | +\caption{Implausible Attribute Values and Coding Artefacts in the Analytical Sample} | |
| 244 | +\label{tab:implausible} | |
| 245 | +\begin{threeparttable} | |
| 246 | +\small | |
| 247 | +\begin{tabular}{lrr} | |
| 248 | +\toprule | |
| 249 | +Check & Listings & Share (\%) \\ | |
| 250 | +\midrule | |
| 251 | +\input{tables/implausible} \\ | |
| 252 | +\bottomrule | |
| 253 | +\end{tabular} | |
| 254 | +\begin{tablenotes} | |
| 255 | +\small | |
| 256 | +\item \textit{Notes:} Counts in the analytical sample ($N = 788{,}842$). The four screens | |
| 257 | +used to define the trimmed samples of Sections~\ref{sec:ml_geo} and | |
| 258 | +\ref{sec:state_heterogeneity} are parking spaces $> 20$, stories $> 10$, lot size $> 640$ | |
| 259 | +acres and age $= 200$ (4,970 listings in total). Generated by | |
| 260 | +\texttt{scripts/06\_revision\_inference.py}. | |
| 261 | +\end{tablenotes} | |
| 262 | +\end{threeparttable} | |
| 263 | +\end{table} | |
| 130 | 264 | |
| 131 | 265 | \subsection{Descriptive Statistics} |
| 132 | 266 | |
| 133 | −Table~\ref{tab:descriptive} presents summary statistics. | |
| 267 | +Table~\ref{tab:descriptive} presents summary statistics. The median listing price is | |
| 268 | +\$399,900 and the mean \$621,737, a right skew that the logarithmic transformation largely | |
| 269 | +removes (Figure~\ref{fig:price_dist}). The median home has 1,820 square feet, three | |
| 270 | +bedrooms and two bathrooms, and is 36 years old. Walk and Transit Scores are low on | |
| 271 | +average (medians of 16 and 0), consistent with a listing stock dominated by suburban and | |
| 272 | +exurban single-family homes. | |
| 134 | 273 | |
| 135 | 274 | \begin{table}[H] |
| 136 | 275 | \centering |
@@ -138,37 +277,37 @@ Table~\ref{tab:descriptive} presents summary statistics. | ||
| 138 | 277 | \label{tab:descriptive} |
| 139 | 278 | \begin{threeparttable} |
| 140 | 279 | \small |
| 141 | −\begin{tabular}{lrrrrrr} | |
| 280 | +\begin{tabular}{lrrrrr} | |
| 142 | 281 | \toprule |
| 143 | 282 | Variable & Mean & Std.\ Dev. & Min & Median & Max \\ |
| 144 | 283 | \midrule |
| 145 | −\multicolumn{6}{l}{\textit{Continuous Variables}} \\ | |
| 146 | −Listing Price (\$) & 621,737 & 817,965 & 10,300 & 399,900 & 9,999,999 \\ | |
| 147 | −Living Area (sqft) & 2,093 & 1,181 & 208 & 1,820 & 19,600 \\ | |
| 284 | +\multicolumn{6}{l}{\textit{Continuous variables}} \\ | |
| 285 | +Listing price (\$) & 621,737 & 817,965 & 10,300 & 399,900 & 9,999,999 \\ | |
| 286 | +Living area (sqft) & 2,093 & 1,181 & 208 & 1,820 & 19,600 \\ | |
| 148 | 287 | Bedrooms & 3.25 & 1.09 & 1 & 3 & 10 \\ |
| 149 | 288 | Bathrooms & 2.52 & 1.16 & 1 & 2 & 10 \\ |
| 150 | −Property Age (years) & 42.2 & 31.5 & 0 & 36 & 200 \\ | |
| 289 | +Property age (years) & 42.2 & 31.5 & 0 & 36 & 200 \\ | |
| 151 | 290 | Walk Score (0--100) & 25.6 & 26.5 & 0 & 16 & 100 \\ |
| 152 | 291 | Bike Score & 34.9 & 18.1 & 1 & 31 & 248 \\ |
| 153 | 292 | Transit Score (0--100) & 8.9 & 18.3 & 0 & 0 & 100 \\ |
| 154 | −Avg.\ School Rating (1--10) & 6.02 & 0.90 & 1 & 6 & 10 \\ | |
| 155 | −Property Tax Rate (\%) & 1.10 & 0.53 & 0 & 1.0 & 4.0 \\ | |
| 156 | −Luxury Score (0--7) & 1.36 & 1.29 & 0 & 1 & 7 \\ | |
| 293 | +Avg.\ school rating (1--10) & 6.02 & 0.90 & 1 & 6 & 10 \\ | |
| 294 | +Property tax rate (\%) & 1.10 & 0.53 & 0 & 1.0 & 4.0 \\ | |
| 295 | +Luxury score (0--7) & 1.36 & 1.29 & 0 & 1 & 7 \\ | |
| 157 | 296 | \midrule |
| 158 | −\multicolumn{6}{l}{\textit{Binary Variables (prevalence)}} \\ | |
| 159 | −Swimming Pool & 39.8\% & & & & \\ | |
| 297 | +\multicolumn{6}{l}{\textit{Binary variables (prevalence)}} \\ | |
| 298 | +Swimming pool & 39.8\% & & & & \\ | |
| 160 | 299 | Garage & 67.2\% & & & & \\ |
| 161 | 300 | Fireplace & 39.6\% & & & & \\ |
| 162 | 301 | Basement & 24.3\% & & & & \\ |
| 163 | 302 | Waterfront & 8.9\% & & & & \\ |
| 164 | 303 | HOA & 37.1\% & & & & \\ |
| 165 | −Central Air & 68.1\% & & & & \\ | |
| 166 | −Hardwood Floors & 26.7\% & & & & \\ | |
| 304 | +Central air & 68.1\% & & & & \\ | |
| 305 | +Hardwood floors & 26.7\% & & & & \\ | |
| 167 | 306 | Condominium & 14.6\% & & & & \\ |
| 168 | −New Construction & 5.9\% & & & & \\ | |
| 307 | +New construction & 5.9\% & & & & \\ | |
| 169 | 308 | Foreclosure & 0.5\% & & & & \\ |
| 170 | 309 | \midrule |
| 171 | −\multicolumn{6}{l}{\textit{Regional Distribution}} \\ | |
| 310 | +\multicolumn{6}{l}{\textit{Regional distribution}} \\ | |
| 172 | 311 | South & 56.6\% & & & & \\ |
| 173 | 312 | West & 18.9\% & & & & \\ |
| 174 | 313 | Midwest & 16.1\% & & & & \\ |
@@ -177,16 +316,17 @@ Northeast & 8.4\% & & & & \\ | ||
| 177 | 316 | \end{tabular} |
| 178 | 317 | \begin{tablenotes} |
| 179 | 318 | \small |
| 180 | −\item \textit{Notes:} Listing prices, not transaction prices. Property age computed as $2026 - \text{year\_built}$, after imputation. Imputed values included in summary statistics. | |
| 319 | +\item \textit{Notes:} Listing prices, not transaction prices. Property age computed as | |
| 320 | +$2026 - \text{year built}$ after imputation; imputed values included. The school rating is | |
| 321 | +a state median for 93\% of listings (Table~\ref{tab:missing}). | |
| 181 | 322 | \end{tablenotes} |
| 182 | 323 | \end{threeparttable} |
| 183 | 324 | \end{table} |
| 184 | 325 | |
| 185 | −The median listing price is \$399,900, with substantial right-skewness (mean \$621,737). The log transformation substantially improves distributional symmetry (Figure~\ref{fig:price_dist}), supporting the semi-log specification. | |
| 186 | − | |
| 187 | 326 | \begin{figure}[H] |
| 188 | 327 | \centering |
| 189 | 328 | \includegraphics[width=\textwidth]{figures/fig1_price_distribution.png} |
| 190 | − \caption{Distribution of Listing Prices: (a) Levels; (b) Natural Logarithm. The log transformation reduces right skewness and approximates normality.} | |
| 329 | + \caption{Distribution of listing prices: (a) levels; (b) natural logarithm. The | |
| 330 | + logarithmic transformation reduces right skewness and approximates normality.} | |
| 191 | 331 | \label{fig:price_dist} |
| 192 | 332 | \end{figure} |
modified
paper/sections/discussion.tex
+161 −171
Large diff (342 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/introduction.tex
+108 −110
Large diff (229 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/limitations.tex
+53 −27
Large diff (87 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/literature.tex
+206 −190
Large diff (429 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/methodology.tex
+223 −85
Large diff (358 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/results.tex
+718 −193
Large diff (1,250 lines) is not loaded by default to keep the page fast.Load diff
modified
paper/sections/robustness.tex
+148 −55
Large diff (293 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/cluster_se.tex
+27 −0
Large diff (27 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/designs.tex
+3 −0
Large diff (3 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/grouped_cv_full.tex
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/grouped_cv_noschool.tex
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/implausible.tex
+12 −0
Large diff (12 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/iqr_bootstrap.tex
+13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/loso_states.tex
+51 −0
Large diff (51 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/loso_summary.tex
+2 −0
Large diff (2 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/lot_recoding.tex
+5 −0
Large diff (5 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/missingness.tex
+16 −0
Large diff (16 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/moran_models.tex
+3 −0
Large diff (3 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/ols_geo.tex
+5 −0
Large diff (5 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/pooled_vs_interacted.tex
+3 −0
Large diff (3 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/r2_bootstrap_obs.tex
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/r2_bootstrap_zip3.tex
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/state_heterogeneity.tex
+13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/trees_curve.tex
+9 −0
Large diff (9 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/variants.tex
+5 −0
Large diff (5 lines) is not loaded by default to keep the page fast.Load diff
added
paper/tables/zestimate.tex
+7 −0
Large diff (7 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/cluster_se.csv
+64 −0
Large diff (64 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/geo_trees_curve.csv
+15 −0
Large diff (15 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/grouped_cv_by_state.csv
+13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/implausible_values.csv
+13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/iqr_wald_bootstrap.csv
+14 −0
Large diff (14 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/list_to_zestimate.csv
+10 −0
Large diff (10 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/loso_by_state.csv
+103 −0
Large diff (103 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/lot_recoding.csv
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/missingness_full.csv
+19 −0
Large diff (19 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/moran_xgb_vs_ols.csv
+10 −0
Large diff (10 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/ols_geo_holdout.csv
+4 −0
Large diff (4 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/pooled_vs_interacted.csv
+4 −0
Large diff (4 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/r2_bootstrap.csv
+15 −0
Large diff (15 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/size_matched_split.csv
+4 −0
Large diff (4 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/state_heterogeneity.csv
+52 −0
Large diff (52 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/state_heterogeneity_summary.csv
+14 −0
Large diff (14 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/variants_two_designs.csv
+6 −0
Large diff (6 lines) is not loaded by default to keep the page fast.Load diff
added
results/revision/xgb_geo_trimmed.csv
+3 −0
Large diff (3 lines) is not loaded by default to keep the page fast.Load diff
added
scripts/05_revision_geo_validation.py
+251 −0
Large diff (251 lines) is not loaded by default to keep the page fast.Load diff
added
scripts/06_revision_inference.py
+395 −0
Large diff (395 lines) is not loaded by default to keep the page fast.Load diff
added
scripts/07_revision_qr_bootstrap.py
+125 −0
Large diff (125 lines) is not loaded by default to keep the page fast.Load diff
added
scripts/08_revision_tables_figures.py
+387 −0
Large diff (388 lines) is not loaded by default to keep the page fast.Load diff