SPB Git

spb/wp2_uqo

Public

UQO Working Paper No. 2 — Decoding Real Estate Descriptions: text-based hedonic analysis of housing listings.

révision scientifique complète (editorial board, 2026-10-17)

v1.1 → v1.2 : analyse de la langue des annonces (40 % anglais, η² = 0,86 sur la
similarité moyenne), effets fixes RTA/municipalité + erreurs groupées, terrain en m²,
sous-échantillon superficie, tests par domaine, validation croisée aléatoire et
spatiale, sensibilité au libellé des références, encodeur multilingue ; sections
réécrites, nouvelle section 7, 8 références vérifiées ajoutées (86 → 94),
docs/REVIEW-REPORT.md + docs/CHANGELOG-REVISION.md, README et data/README mis à jour.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Oct 18, 2026) parent 1391a04 Browse files

44 changed files +2,436 −351

44 changed files
Unified Split
modified README.md +123 −84
@@ -3,21 +3,23 @@
3 3
4 4 **UQO Working Paper No. 2** — *Semantic Embeddings and Hedonic Pricing of Residential Properties in Quebec*
5 5
6 −[![Paper](https://img.shields.io/badge/paper-PDF%20(53%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)
6 +[![Paper](https://img.shields.io/badge/paper-PDF%20(61%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)
7 7 [![Python](https://img.shields.io/badge/python-3.11%2B-3776AB?logo=python&logoColor=white)](requirements.txt)
8 8 [![Data](https://img.shields.io/badge/data-17%2C087%20houses%20·%20SQLite%20%2B%20parquet-4051b5)](data/README.md)
9 −[![Model](https://img.shields.io/badge/model-all--MiniLM--L6--v2%20·%20OLS%20HC3-4051b5)](src/)
9 +[![Model](https://img.shields.io/badge/model-MiniLM--L6%20%2B%20multilingual%20MiniLM--L12%20·%20OLS%20HC3%20%2F%20FSA--clustered-4051b5)](src/)
10 10 [![Reproducible](https://img.shields.io/badge/reproducible-end--to--end%20pipeline-2e7d32)](scripts/)
11 11 [![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca)
12 12 [![Author](https://img.shields.io/badge/author-Simon--Pierre%20Boucher-16365c)](mailto:simon-pierre.boucher@uqo.ca)
13 13
14 −> **TL;DR** — Listing descriptions written by real-estate agents contain price-relevant information that classic hedonic
15 −> variables miss. The free-text `PublicRemarks` of **17,087 Quebec single-family house listings** are embedded with a
16 −> sentence transformer, projected onto **20 researcher-defined semantic reference descriptions** (*Luxury*, *Needs
17 −> Renovation*, *Waterfront*, *Motivated Seller*, …) via cosine similarity, and the 20 interpretable scores are added to a
18 −> log-price hedonic OLS model. Adjusted R² rises from **0.452 to 0.511** (joint *F* = 99.53, *p* < 0.001); each semantic
19 −> dimension carries a named, signed, economically meaningful implicit price (Modern/Contemporary +16.4 %, Luxury +14.2 %,
20 −> Needs Renovation −7.9 %, Motivated Seller −8.5 % per SD).
14 +> **TL;DR** — The free-text `PublicRemarks` of **17,087 Quebec single-family listings** (snapshot of 7 January 2026) are
15 +> embedded with a sentence transformer, projected onto **20 researcher-defined reference descriptions** (*Luxury*, *Needs
16 +> Renovation*, *Waterfront*, *Motivated Seller*, …) by cosine similarity, and the 20 named scores enter a log-price hedonic
17 +> model. Adjusted R² rises from **0.452 to 0.511**, a gain confirmed out of sample (random and FSA-grouped folds). The
18 +> 2026-10-17 revision shows that **40 % of the listings are in English** and score lower against the French references:
19 +> language alone explains 86 % of the variance of the mean similarity and more than half of the apparent semantic gain.
20 +> Net of language and 415 FSA fixed effects, the block adds **2.0 pp of R²** (baseline encoder) or **3.9 pp** (multilingual
21 +> encoder) and stays jointly significant; only five dimensions (Luxury, Land & Nature, Family-Friendly, Quiet & Peaceful,
22 +> Needs Renovation) keep sign and significance across specifications and encoders.
21 23
22 24 ---
23 25
@@ -25,40 +27,43 @@
25 27
26 28 | Item | Value |
27 29 |---|---|
28 −| Version | 1.1 (May 2026) — cover page harmonised to the UQO WP standard, October 2026 |
29 −| SSRN | Abstract ID **7626640** (submitted 2026-10-17, preliminary upload) |
30 +| Version | **1.2 (October 2026)** — revised 2026-10-17 by the editorial-board review (see `docs/REVIEW-REPORT.md`); v1.1 (May 2026) = `pre-revision-20261017` tag + `docs/main_pre-revision-20261017.pdf` |
31 +| SSRN | Abstract ID **7626640** (v1.1 uploaded 2026-10-17; v1.2 to be uploaded) |
30 32 | Journal | not yet submitted |
31 −| Code & data | fully reproducible from `scripts/`; raw database not redistributed (see Data) |
33 +| Code & data | fully reproducible from `scripts/` (01–08); raw database not redistributed (see Data) |
32 34
33 35 ## 🎯 What this paper does
34 36
35 −Hedonic pricing models decompose a property's price into the implicit prices of its characteristics — bedrooms,
36 −bathrooms, lot size. But the *narrative* of a listing («cuisine gastronomique, comptoirs de quartz…» vs. «besoin de
37 −rénovation, vendu tel quel…») carries quality information that no structured field captures. Historically there has been
38 −a depth-vs-interpretability trade-off:
37 +Hedonic pricing models decompose a property's price into the implicit prices of its characteristics, but they can only price
38 +what the econometrician observes. Broker-written descriptions («cuisine gastronomique, comptoirs de quartz…» vs. «besoin
39 +de rénovation, vendu tel quel…») carry quality information that no structured field records. Existing text approaches trade
40 +depth for interpretability:
39 41
40 42 | Approach | Semantic depth | Economic interpretability |
41 43 |---|---|---|
42 −| Keyword counts / bag-of-words | ❌ shallow | ✅ high |
44 +| Keyword counts / dictionaries | ❌ shallow | ✅ high |
43 45 | Sentiment scores | ❌ one dimension | ✅ high |
44 46 | LDA topics | 🟡 moderate | ❌ unstable |
45 −| Raw transformer embeddings | ✅ deep | ❌ opaque (384–768 anonymous dims) |
46 −| **Reference-based cosine projection (this paper)** | ✅ **deep** | ✅ **high** |
47 +| Raw transformer embeddings / PCA | ✅ deep | ❌ opaque |
48 +| **Reference-based cosine projection (this paper)** | ✅ deep | ✅ named ex ante — **stable at block level, not coefficient by coefficient** |
47 49
48 −Instead of feeding 384 anonymous embedding dimensions into a regression, the paper defines 20 short *reference
49 −descriptions* — synthetic French paragraphs, each embodying one qualitative housing dimension — embeds them with the same
50 −model, and uses the **cosine similarity between each listing and each reference** as 20 named regressors:
50 +The paper defines 20 French reference descriptions, embeds them with the same model as the listings, and uses the cosine
51 +similarity between each listing and each reference as 20 named regressors:
51 52
52 53 ```
53 54 log(P_i) = α + β'X_i + δ·len_i + γ'S_i + ε_i S_i = E_i · Rᵀ (17,087 × 20)
55 +log(P_i) = α_FSA(i) + β'X_i + δ·len_i + λ'L_i + γ'S_i + ε_i (extended: language L_i, 415 FSA fixed effects, clustered SE)
54 56 ```
55 57
56 −Every coefficient then reads directly as «the implicit price of sounding more *luxury* / more *fixer-upper* / more
57 −*waterfront*», per standard deviation — analogous to factor-mimicking portfolios in asset pricing and to concept-bottleneck
58 −models in interpretable ML.
58 +Each γ_j reads as the change in log price for a one-standard-deviation increase in similarity to reference j
59 +(impact = (e^γ − 1) × 100 %). The revision asks three questions the first version did not: how much of the gain is the
60 +*language* of the listing rather than its content; whether the gain survives location fixed effects and holds out of sample;
61 +and whether the 20 individual coefficients are stable to the phrasing of the references and to the encoder.
59 62
60 63 ## 🏆 Headline results
61 64
65 +**Baseline (v1.1, reproduced exactly)**
66 +
62 67 | Model (n = 17,087) | Specification | Adj. R² | AIC | k |
63 68 |:---:|---|---:|---:|---:|
64 69 | A | Structural only | 0.4523 | 26,165 | 6 |
@@ -67,25 +72,37 @@ models in interpretable ML.
67 72 | **D** | **Full (B + C)** | **0.5115** | **24,232** | 27 |
68 73 | E | Parsimonious (16 significant dims) | 0.5111 | 24,239 | 23 |
69 74
70 −Joint significance of the 21 text variables (D vs. A): ***F* = 99.53, *p* < 0.001**. Variance decomposition of Model D:
71 −structural 88.3 %, text length 2.4 %, semantics 9.3 %.
75 +Joint test of the 21 text variables (D vs. A): *F*(21, 17,059) = 99.53, *p* < 0.001.
76 +
77 +**Revision 2026-10-17 (Section 7 of the paper)**
72 78
73 −| 📈 Positive (per +1 SD, HC3) | Impact | 📉 Negative | Impact |
74 −|---|---:|---|---:|
75 −| Modern/Contemporary | **+16.4 %*** | Family-Friendly | **−11.6 %*** |
76 −| Luxury | **+14.2 %*** | New Construction | **−10.5 %*** |
77 −| Land & Nature | **+13.0 %*** | Quiet & Peaceful | −9.5 %*** |
78 −| Entry-Level | +10.4 %*** | Bright & Spacious | −8.9 %*** |
79 −| Waterfront | +4.7 %*** | Motivated Seller | **−8.5 %*** |
80 −| Panoramic View | +3.0 %** | Needs Renovation | **−7.9 %*** |
79 +| Specification | n | R² | ΔR² of the 20 similarities | Block *F* | Sig. dims |
80 +|---|---:|---:|---:|---:|---:|
81 +| D (baseline, HC3) | 17,087 | 0.512 | 0.047 | 54.3 | 16/20 |
82 +| D-L: + English / mixed-language indicators | 17,087 | 0.518 | **0.017** | 22.6 | 16/20 |
83 +| D-L + 415 FSA fixed effects (clustered SE) | 17,087 | 0.667 | **0.020** | 31.4 | 18/20 |
84 +| D-L + FSA FE + unit-corrected lot area (m²) | 17,087 | 0.725 | 0.013 | 25.5 | 14/20 |
85 +| French listings only, D + FSA FE | 9,843 | 0.599 | 0.029 | 24.4 | 15/20 |
86 +| English listings only, D + FSA FE | 6,779 | 0.690 | 0.024 | 23.8 | 15/20 |
87 +| ML-D-L + FSA FE (multilingual encoder) | 17,087 | 0.687 | **0.039** | 70.6 | 15/20 |
81 88
82 −<sub>*** p < 0.001, ** p < 0.01. Negative coefficients on Family-Friendly / New Construction largely proxy suburban location (paper §6). Impact = (e^β − 1) × 100 %.</sub>
89 +| Out-of-sample (5-fold) | R²_oos random | R²_oos FSA-grouped | MdAPE |
90 +|---|---:|---:|---:|
91 +| B: structural + length | 0.489 | 0.484 | 27.1 % |
92 +| D: + 20 similarities | 0.528 | 0.522 | 26.9 % |
93 +| PCA-20 of embeddings + length | 0.544 | 0.537 | 26.5 % |
94 +| ML-D-L: multilingual similarities + language | **0.551** | **0.545** | **26.4 %** |
83 95
84 −- **Quantile regressions** (τ = 0.25 / 0.50 / 0.75): the Luxury premium rises monotonically from 9.7 % to 17.3 %; urgency
85 − and condition discounts attenuate at the top of the market.
86 −- **Bootstrap** (1,000 replications): SEs within 9 % of HC3. **Trimming** (1st/99th percentiles): no sign reversal.
87 −- **Multicollinearity disclosed**: similarity dimensions correlate at 0.66–0.97 (mean VIF 17.2); block inference unaffected.
88 −- **PCA benchmark**: 20 principal components fit better (ΔR² +0.070 vs. +0.044) but are economically unreadable.
96 +| Robust across all specifications and both encoders | Not robust |
97 +|---|---|
98 +| Luxury (+4 to +14 % per SD), Land & Nature (+4 to +22 %), Family-Friendly (−2 to −12 %), Quiet & Peaceful (−5 to −13 %), Needs Renovation (−4 to −8 %) | Motivated Seller (−8.5 % → n.s. once language is controlled), New Construction and Entry-Level (signs reverse with the multilingual encoder), Energy Efficient, Bright & Spacious, Waterfront, Modern/Contemporary (n.s. with the multilingual encoder) |
99 +
100 +- **Language**: 57.6 % French, 39.7 % English, 2.7 % mixed; mean similarity 0.434 (FR) vs 0.204 (EN) with MiniLM-L6,
101 + 0.395 vs 0.352 with the multilingual encoder; English listings are priced +19.5 % conditional on structure (+9.1 % within FSA).
102 +- **Reference phrasing**: perturbing the reference texts leaves the similarities almost unchanged (corr. 0.93–0.99) and the
103 + block ΔR² at 0.042–0.054, but the vector of 20 coefficients correlates only 0.02–0.81 with the baseline.
104 +- **Earlier robustness (v1.1)**: quantile regressions (Luxury 9.7 % → 17.3 % from τ = .25 to .75), 1,000-rep bootstrap
105 + (SE within 9 % of HC3), 1 %/99 % trimming (no sign reversal), VIF mean 17.2, Lasso keeps 4/20, PCA-20 ΔR² +0.070 vs +0.044.
89 106
90 107 ## 🗂 Repository layout
91 108
@@ -93,25 +110,30 @@ structural 88.3 %, text length 2.4 %, semantics 9.3 %.
93 110 wp2_uqo/
94 111 ├── README.md
95 112 ├── requirements.txt # pinned dependencies (Python 3.14, macOS arm64)
96 −├── docs/ # AUDIT.md · CHANGES.md · PAPER_REVIEW.md · UPGRADE_REPORT.md (restructuring history)
113 +├── docs/ # REVIEW-REPORT.md · CHANGELOG-REVISION.md (2026-10-17 revision)
114 +│ # AUDIT.md · CHANGES.md · PAPER_REVIEW.md · UPGRADE_REPORT.md (2026-08-05 restructuring)
115 +│ # main_pre-revision-20261017.pdf (v1.1 reference PDF)
97 116 ├── data/ # NOT tracked (see data/README.md)
98 117 │ ├── raw/louka.db # SQLite, 268 MB, 46,479 listings
99 −│ └── processed/ # parquet sample, embeddings cache, similarity matrix
118 +│ └── processed/ # parquet sample, embedding caches (2 models), similarity matrix, revision fields
100 119 ├── src/ # analysis package
101 120 │ ├── config.py # repo-relative paths, model name, seed, structural vars
102 121 │ ├── references.py # the 20 French reference descriptions + English labels
103 122 │ ├── data.py # SQLite → DataFrame extraction (n = 17,087)
104 123 │ ├── embeddings.py # encoding, caching, cosine-similarity features
105 −│ └── models.py # standardized-design OLS A–E, HC3
124 +│ ├── models.py # standardised-design OLS A–E, HC3
125 +│ └── extensions.py # language detection, FSA/municipality, lot & floor area (m²), FE/cluster OLS, OOS metrics
106 126 ├── scripts/ # the pipeline, in order
107 127 │ ├── 01_prepare_data.py # louka.db → data/processed/houses.parquet
108 128 │ ├── 02_similarities.py # embeddings (cached) + 20 similarity features
109 −│ ├── 03_models.py # models A–E → results/*.csv
110 −│ ├── 04_robustness.py # VIF · BP · quantile · winsor · bootstrap · Lasso/ENet
129 +│ ├── 03_models.py # hedonic models A–E → results/*.csv
130 +│ ├── 04_robustness.py # VIF · BP · quantile · trimming · bootstrap · Lasso/ENet
111 131 │ ├── 05_figures.py # fig1–fig11 (PDF + PNG)
112 −│ └── 06_tables.py # LaTeX tables generated from results
113 −├── results/ # model & robustness outputs (CSV)
114 −├── figures/ # 11 paper figures
132 +│ ├── 06_tables.py # LaTeX tables generated from results
133 +│ ├── 07_revision_extensions.py # language · FE · clustering · lot/floor area · block tests · OOS · reference sensitivity · multilingual
134 +│ └── 08_revision_tables.py # tables 10–15 + fig12 from results/revision_*.csv
135 +├── results/ # model, robustness and revision outputs (CSV)
136 +├── figures/ # 12 paper figures
115 137 └── paper/ # main.tex + preamble.tex + sections/ + tables/ + references.bib → main.pdf
116 138 ```
117 139
@@ -127,70 +149,81 @@ python3 scripts/03_models.py # hedonic models A–E
127 149 python3 scripts/04_robustness.py # robustness battery (~4 min, bootstrap)
128 150 python3 scripts/05_figures.py # 11 figures
129 151 python3 scripts/06_tables.py # LaTeX tables from results
152 +python3 scripts/07_revision_extensions.py # ~25 s (+ model downloads on first run)
153 +python3 scripts/08_revision_tables.py # revision tables + fig12
130 154
131 −cd paper && make # latexmk → main.pdf (53 pages)
155 +cd paper && make # latexmk → main.pdf (61 pages)
132 156 ```
133 157
134 158 Total runtime ≈ 8 minutes on an Apple-silicon laptop (embeddings cached after the first run). All stochastic steps are
135 −seeded (`seed = 42`). Expected checkpoints: step 3 prints `R² = 0.4525 / 0.4647 / 0.4962 / 0.5122 / 0.5118` and `F = 99.53`.
159 +seeded (`seed = 42`). Expected checkpoints: step 3 prints `R² = 0.4525 / 0.4647 / 0.4962 / 0.5122 / 0.5118` and
160 +`F = 99.53`; step 7 prints `dR2(sims)=0.0475` (D), `0.0174` (D-L), `0.0197` (D-L + FSA FE), `0.0392` (ML-D-L + FSA FE).
136 161
137 162 ## 🗃 Data
138 163
139 −A **SQLite database (`louka.db`, 268 MB)** of Quebec residential listings collected from Realtor.ca / Centris:
140 −46,479 listings across five categories — houses (17,089), condos (8,586), land (8,506), rentals (8,240), plexes (4,058).
141 −Each row carries structured fields plus the agent-written `PublicRemarks`.
164 +A **SQLite database (`louka.db`, 268 MB)** of Quebec residential listings collected from Realtor.ca / Centris in a single
165 +extraction completed on 7 January 2026: 46,479 listings across five categories — houses (17,089), condos (8,586), land
166 +(8,506), rentals (8,240), plexes (4,058). Each row carries structured fields, coordinates, postal code and the
167 +broker-written `PublicRemarks`.
142 168
143 −**Analysis sample**: single-family houses with a positive price and a description of ≥ 20 characters → **n = 17,087**.
144 −Median listing price $589,900 (mean $807,259). Descriptions average 510 characters, truncated at ~700 characters in the
145 −export (disclosed in the paper).
169 +**Analysis sample**: single-family houses with a positive asking price and a description of ≥ 20 characters → **n = 17,087**,
170 +415 forward sortation areas (FSA), 1,061 municipalities. Median asking price $589,900 (mean $807,259). Descriptions average
171 +510 characters, truncated at ~700 characters in the export. The lot-size field mixes units at the source (61 % m², 32 % sq. ft.,
172 +2 % acres/ha, 4 % missing) — used raw in the baseline for comparability with v1.1, converted to m² in the extended models.
173 +Interior floor area is reported for 6,228 listings (36 %).
146 174
147 175 `data/` is not tracked: the database exceeds 100 MB and listing texts are proprietary platform content. All derived,
148 −aggregate outputs (results CSVs, figures, tables, paper) are versioned, so every number in the paper is inspectable
149 −without the raw data. `data/README.md` explains how to place a copy of `louka.db`; the location can be overridden with
150 −`WP2_DB_PATH`.
176 +aggregate outputs (results CSVs, figures, tables, paper) are versioned, so every number in the paper is inspectable without
177 +the raw data. `data/README.md` explains how to place a copy of `louka.db`; the location can be overridden with `WP2_DB_PATH`.
151 178
152 179 ## 🔬 Methodology
153 180
154 −1. **Extraction** — houses only, price > 0, description ≥ 20 characters; minimal preprocessing (`src/data.py`).
155 −2. **Embedding** — `all-MiniLM-L6-v2` (22.7M params, 384-d, L2-normalised), batch 256 (`src/embeddings.py`).
156 −3. **Projection** — 20 French reference descriptions (146–257 chars, verbatim in paper Appendix A), designed for semantic
157 − saturation, dimensional specificity and linguistic consistency; one matrix product yields the 17,087 × 20 similarity
158 − matrix (`src/references.py`).
181 +1. **Extraction** — houses only, price > 0, description ≥ 20 characters; minimal preprocessing (`src/data.py`); language
182 + classified from French/English stop-word counts (`src/extensions.py`).
183 +2. **Embedding** — `all-MiniLM-L6-v2` (22.7M params, 384-d, L2-normalised) for the baseline;
184 + `paraphrase-multilingual-MiniLM-L12-v2` for the multilingual specifications (`src/embeddings.py`, `scripts/07_…`).
185 +3. **Projection** — 20 French reference descriptions (146–257 chars, verbatim in paper Appendix A); one matrix product yields
186 + the 17,087 × 20 similarity matrix (`src/references.py`).
159 187 4. **Estimation** — nested OLS models A–E on log price, standardised covariates, HC3 errors; joint F-tests; quantile
160 − regressions; bootstrap; winsorisation; VIF; Lasso/Elastic-Net selection; PCA benchmark (`src/models.py`,
161 − `scripts/04_robustness.py`).
162 −
163 −The 20 dimensions span six domains: Quality & Standing · Condition · Physical · Location & Setting · Style & Character ·
164 −Market Signals.
188 + regressions; bootstrap; trimming; VIF; Lasso/Elastic-Net; PCA benchmark (`src/models.py`, `scripts/04_…`).
189 +5. **Extended specifications (v1.2)** — language indicators; FSA and municipality fixed effects (within transformation) with
190 + standard errors clustered by area; unit-corrected lot area; floor-area subsample; language subsamples; domain-level Wald
191 + tests; 5-fold cross-validation with random and FSA-grouped folds (R²_oos, RMSE, MdAPE); reference-phrasing perturbations;
192 + multilingual encoder (`scripts/07_…`).
165 193
166 194 ## 🖼 Figures & tables inventory
167 195
168 196 | Figure | Content |
169 197 |---|---|
170 198 | `fig1_model_comparison` | R² / adj. R² across models A–E |
171 −| `fig2_coefficient_plot` | Forest plot of the 20 semantic implicit prices (Model D) |
199 +| `fig2_coefficient_plot` | Forest plot of the 20 semantic coefficients (Model D) |
172 200 | `fig3_similarity_distributions` | Box plots of the 20 cosine-similarity features |
173 201 | `fig4_quintile_heatmap` | Mean similarity by price quintile × dimension |
174 202 | `fig5_correlation_matrix` | Inter-dimension Pearson correlations (0.66–0.97) |
175 203 | `fig6_scatter_plots` | Four illustrative similarity–price scatters |
176 204 | `fig7_methodology` | Pipeline diagram |
177 −| `fig8_r2_decomposition` | Stacked decomposition of Model D's R² |
205 +| `fig8_r2_decomposition` | Sequential decomposition of Model D's R² |
178 206 | `fig9_price_distribution` | Price and log-price histograms |
179 207 | `fig10_structural_coefficients` | Structural coefficients with 95 % CIs |
180 208 | `fig11_residual_diagnostics` | Residuals vs. fitted + normal Q-Q |
209 +| `fig12_specification_stability` | Semantic coefficients: baseline vs. D-L + FSA FE vs. multilingual (new) |
181 210
182 −Tables (`paper/tables/*.tex`): descriptive statistics, similarity statistics, model comparison, full Model D results,
183 −parsimonious model, quantile regressions, robustness summary, reference texts, text comparison (7 machine-generated by
184 −`06_tables.py`, 3 hand-maintained).
211 +Tables (`paper/tables/*.tex`): descriptive statistics, language composition (new), similarity statistics, model comparison,
212 +full Model D, quantile regressions, text-representation comparison, robustness summary, spec summary (new), extended
213 +specifications (new), domain block tests (new), out-of-sample (new), reference sensitivity (new), reference categories,
214 +reference texts (appendix), parsimonious model (appendix). 13 are machine-generated by `06_tables.py` / `08_revision_tables.py`,
215 +3 are hand-maintained (`tab_references`, `tab_robustness_summary`, `tab_text_comparison`).
185 216
186 217 ## ⚠️ Limitations
187 218
188 −- Cross-sectional listing (asking) prices, not transaction prices; coefficients are conditional associations.
219 +- Asking prices from a single snapshot, not transaction prices; no dates → no forward-in-time holdout; coefficients are
220 + conditional associations (text is written after the price is set, by the same agent).
221 +- 40 % of the corpus is English while the references are French and the baseline encoder is English-trained; the paper
222 + controls for language, estimates within language and uses a multilingual encoder, but a French-specific encoder is untested.
223 +- Floor area available for 36 % of listings only; fixed effects absorb between-area location only.
224 +- The 20 references have overlapping vocabularies; individual coefficients are sensitive to phrasing and encoder
225 + (quantified in Section 7). Block- and domain-level conclusions are the robust object; VIF mean 17.2.
189 226 - Descriptions truncated at ~700 characters in the export.
190 −- Similarity dimensions are highly collinear (mean VIF 17.2): individual coefficients are partial associations within a
191 − correlated block; block-level inference is the robust object.
192 −- Reference texts embed the researcher's definitional choices; the PCA benchmark quantifies the fit cost of
193 − interpretability.
194 227
195 228 ## 📝 Citation
196 229
@@ -203,7 +236,8 @@ parsimonious model, quantile regressions, robustness summary, reference texts, t
203 236 type = {Working Paper},
204 237 number = {2},
205 238 year = {2026},
206 − month = {May}
239 + month = {October},
240 + note = {Version 1.2}
207 241 }
208 242 ```
209 243
@@ -216,8 +250,13 @@ Université du Québec en Outaouais (UQO), Gatineau, QC.
216 250 ## 🗒 Notes
217 251
218 252 - Format follows `Recherche-UQO/HARMONISATION.md` (2026-10-17): template title page, `natbib` + `aer` bibliography style,
219 − `docs/` for the restructuring reports.
253 + `docs/` for the audit documents.
254 +- **Revision 2026-10-17 (v1.1 → v1.2)**: editorial-board review report in `docs/REVIEW-REPORT.md` (diagnosis by section,
255 + methodological verdicts, literature, remaining limitations, recommended analyses not executed, publication maturity) and
256 + audit trail in `docs/CHANGELOG-REVISION.md` (every correction with before/after/evidence, 8 added references with DOIs,
257 + re-analyses executed). The v1.1 numbers are reproduced and kept as the baseline; the new Section 7 qualifies their
258 + interpretation. Pre-revision state: git tag `pre-revision-20261017`, `docs/main_pre-revision-20261017.pdf`.
220 259 - The original flat May 2026 project (`immo-wp2-spb-20260519`) is archived in
221 260 `Recherche-UQO/_archives/versions-mai-2026/decoding-real-estate-descriptions--immo-wp2-20260519/`; `docs/AUDIT.md` and
222 − `docs/CHANGES.md` document the 2026-08-05 restructuring and the numeric corrections it caught (old → new values).
223 −- Build verified 2026-10-17: 0 errors, 0 undefined references, 86 references rendered.
261 + `docs/CHANGES.md` document the 2026-08-05 restructuring and the numeric corrections it caught.
262 +- Build verified 2026-10-17: 0 errors, 0 undefined references, 94 references rendered, 61 pages.
modified data/README.md +8 −2
@@ -27,6 +27,8 @@ python3 scripts/03_models.py
27 27 python3 scripts/04_robustness.py
28 28 python3 scripts/05_figures.py
29 29 python3 scripts/06_tables.py
30 +python3 scripts/07_revision_extensions.py # 2026-10-17 revision: language, FE, OOS, sensitivity, multilingual encoder
31 +python3 scripts/08_revision_tables.py
30 32 ```
31 33
32 34 The pipeline recreates everything under `data/processed/`:
@@ -37,7 +39,11 @@ The pipeline recreates everything under `data/processed/`:
37 39 | `embeddings_maisons.npy` | 17,087 × 384 sentence embeddings (cache) |
38 40 | `sim_matrix_maisons.npy` | 17,087 × 20 cosine-similarity matrix |
39 41 | `hedonic_maison_results.csv` | analysis dataset used by all models/figures |
42 +| `embeddings_multilingual.npy` | 17,087 × 384 embeddings from paraphrase-multilingual-MiniLM-L12-v2 (cache, step 07) |
43 +| `revision_fields.csv` | language class, FSA, municipality, lot and floor area (m²) per listing (step 07) |
40 44 | `legacy/` | pre-refactor artifacts kept for byte-level comparison |
41 45
42 −Embeddings are deterministic for a given `all-MiniLM-L6-v2` model version, so a
43 −fresh run reproduces the committed results exactly (see `CHANGES.md` §3).
46 +Embeddings are deterministic for a given model version, so a fresh run reproduces the
47 +committed results exactly (see `docs/CHANGES.md` §3 and `docs/CHANGELOG-REVISION.md` §1). Both
48 +sentence-transformers models are downloaded from the Hugging Face hub on first use (about 90 MB
49 +and 470 MB).
added docs/CHANGELOG-REVISION.md +80 −0
@@ -0,0 +1,80 @@
1 +<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->
2 +# CHANGELOG — révision scientifique complète (editorial board, 2026-10-17)
3 +
4 +Papier : **UQO WP 2 — Decoding Real Estate Descriptions** (v1.1, mai 2026 → **v1.2, octobre 2026**).
5 +État de départ figé : tag git `pre-revision-20261017`, PDF `docs/main_pre-revision-20261017.pdf` (53 p., 86 réf.).
6 +Rapport de l'editorial board : `docs/REVIEW-REPORT.md`. Les audits antérieurs (restructuration du 2026-08-05) restent dans
7 +`docs/AUDIT.md`, `docs/CHANGES.md`, `docs/PAPER_REVIEW.md`, `docs/UPGRADE_REPORT.md`.
8 +
9 +Règle suivie : aucun nombre du texte n'a changé sans un résultat recalculé par un script versionné ; les chiffres de la
10 +v1.1 (modèles A–E, tables 2–8, figures 1–11) sont **reproduits à l'identique** et conservés comme « baseline ».
11 +
12 +## 1. Réanalyses exécutées (toutes locales, < 1 min hors téléchargement des modèles)
13 +
14 +| Script | Durée | Sorties | Contenu |
15 +|---|---|---|---|
16 +| `scripts/07_revision_extensions.py` (nouveau) + `src/extensions.py` (nouveau) | 25 s (encodage multilingue des 17 087 textes : 15 s) | `results/revision_language.csv`, `revision_language_by_dimension.csv`, `revision_specifications.csv`, `revision_spec_summary.csv`, `revision_block_tests.csv`, `revision_oos.csv`, `revision_reference_sensitivity{,_summary}.csv`, `revision_multilingual.csv` ; cache `data/processed/embeddings_multilingual.npy`, `revision_fields.csv` | (a) détection de la langue (stop-words FR/EN, règle 1,5) ; (b) 14 spécifications étendues : indicatrices de langue, EF RTA (415) et municipalité (1 061), erreurs groupées par RTA, taille de terrain convertie en m², sous-échantillon avec superficie habitable (6 228), sous-échantillons FR / EN, encodeur multilingue ; (c) tests de bloc par domaine ; (d) validation croisée 5 plis aléatoires et 5 plis groupés par RTA (R² OOS, RMSE, MdAPE) ; (e) sensibilité au libellé des références (3 perturbations) ; (f) ré-encodage avec `paraphrase-multilingual-MiniLM-L12-v2` |
17 +| `scripts/08_revision_tables.py` (nouveau) | 3 s | `paper/tables/tab_language.tex`, `tab_spec_summary.tex`, `tab_extended_specs.tex`, `tab_block_tests.tex`, `tab_oos.tex`, `tab_reference_sensitivity.tex` ; `figures/fig12_specification_stability.{pdf,png}` | tables et figure générées (jamais tapées) |
18 +| `scripts/06_tables.py` (modifié) | 1 s | `paper/tables/tab_descriptive.tex` | étiquette « Lot size (sq. ft.) » → « Lot size (raw field, mixed units) » + note sur les unités ; chiffres inchangés |
19 +
20 +Modèles téléchargés (HuggingFace, non versionnés) : `all-MiniLM-L6-v2` (~90 Mo, nécessaire à la sensibilité des références) et
21 +`paraphrase-multilingual-MiniLM-L12-v2` (~470 Mo). Les embeddings baseline étaient en cache (`embeddings_maisons.npy`) ; les
22 +embeddings multilingues sont mis en cache à leur tour.
23 +
24 +## 2. Corrections majeures (où / avant / après / pourquoi / preuve)
25 +
26 +| # | Où | Avant (v1.1) | Après (v1.2) | Pourquoi / preuve |
27 +|---|---|---|---|---|
28 +| 1 | Data §4.3, Intro, Résumé | « descriptions predominantly in French with occasional English phrases » | 57,6 % FR, 39,7 % EN, 2,7 % mixte ; prix médian EN 749 900 $ vs FR 499 900 $ | classification stop-words (`revision_language.csv`) ; vérifiée sur exemples |
29 +| 2 | Data §4.4, Results §5.5–5.6 | corrélations bivariées négatives et corrélations inter-références « driven primarily by description length » | cause principale = langue : η² = 0,862 de la similarité moyenne, corr(PC1, anglais) = −0,82 vs corr(PC1, longueur) = 0,20 | `revision_language.csv` ; calcul PC1 |
30 +| 3 | Résultats, Résumé, Intro | gain sémantique = ΔR² 0,047 (D vs B), « 9.3 % of explained variance » présenté sans réserve | ΔR² 0,017 avec indicatrices de langue ; 0,020 avec EF RTA ; 0,013 avec terrain m² ; 0,029 FR seul ; 0,024 EN seul ; multilingue 0,057/0,038/0,039/0,028 | `revision_spec_summary.csv` (Table « spec_summary ») |
31 +| 4 | Discussion (Motivated Seller −8,5 % vs Levitt–Syverson 3,7 %) | discount d'urgence robuste, comparé à la littérature | −2,9 % non significatif avec la langue ; −4,0 %* intra-RTA ; 0,4 % avec l'encodeur multilingue → comparaison retirée, dimension classée non robuste | `revision_specifications.csv` ; écart FR/EN de similarité le plus grand (0,385 vs 0,076) |
32 +| 5 | Discussion (New Construction) | « supported by the quantile regression results, which show a diminished negative effect at higher quantiles » | FAUX : coefficients −0,068 / −0,079 / −0,142 (τ = 0,25/0,50/0,75) → plus négatif en haut ; énoncé retiré ; signe positif (+7,2 %) avec l'encodeur multilingue | `results/robustness_results.csv` (déjà présent, non lu correctement en v1.1) |
33 +| 6 | Results §5.4 | signes contre-intuitifs (Entry-Level +10,4 %, Premium Location −6,1 %, Energy Efficient −7,8 %, Bright & Spacious −8,9 %) **non discutés** | discutés comme signature de la colinéarité (Entry-Level/Motivated Seller r = 0,97) ; inversions documentées avec l'autre encodeur | Table 5 + `tab_extended_specs` |
34 +| 7 | Intro, Results, Discussion | « semantic features … comparable to the gains from adding neighborhood controls (Sirmans et al. 2006 : 3–8 pp) » | retiré : affirmation non vérifiable dans Sirmans et al. (2006) ; nos propres EF RTA ajoutent ~15 pp vs 2 pp pour le texte | aucune statistique de ce type dans la méta-analyse citée |
35 +| 8 | Results §5.1 | R² de 45 % « consistent with the typical range … (Sirmans et al. 2005) » | reformulé : benchmark volontairement pauvre, sans localisation ; les EF RTA seules portent le R² à ~0,65 | Sirmans et al. (2005) ne rapportent pas de R² typique |
36 +| 9 | Data, Table 2 | « Lot size (sq. ft.) » | « Lot size (raw field, mixed units) » : 61 % m², 32 % pi², 2 % acres/ha, 4 % manquant ; variable conservée en baseline, remplacée par log(m²) + indicatrice en §7 | parsing de `Land.SizeTotal` ; hors échantillon le champ brut donne R² = −1,04 |
37 +| 10 | Methodology | interprétation « par écart-type » affirmée sans formule ; test F sans df | Éq. (impact) 100(e^γ−1) par σ_s, équivalent γ/σ par unité de cosinus ; F(21, 17 059) ; Wald robustes/groupés | — |
38 +| 11 | Methodology §3.7, Identification | trois canaux ; pas de mention de la séquence prix → texte | ajout : texte rédigé après fixation du prix par le même agent → prix et texte conjointement déterminés ; prix affichés = comportement vendeur/courtier | — |
39 +| 12 | Methodology §3.4 | « dimensional specificity » revendiquée | reconnue imparfaite : chevauchements Land & Nature/Waterfront, Modern/New Construction/Energy Efficient, Premium Location/Family-Friendly (Annexe A) | lecture des textes de référence |
40 +| 13 | Robustness §6.3 | Modern/Contemporary « remarkably stable across quantiles » | « larger at both tails than at the median » (0,148/0,121/0,155), cohérent avec la Table 6 | `robustness_results.csv` |
41 +| 14 | Robustness §6.5 | bootstrap présenté comme validation complète de l'inférence | ajout : bootstrap par paires ignore la dépendance intra-RTA ; clustering en §7 (SE +50 % en moyenne, 22–107 %) | `revision_specifications.csv` |
42 +| 15 | Résumé | « I show » / corps en « we » ; chiffres sans qualification | résumé réécrit (« we »), 3 qualifications (langue, sensibilité, associations) | — |
43 +| 16 | Orthographe | mélange américain/britannique (neighborhood/neighbourhood, standardized…) | britannique/canadien partout dans les sections (clés de citation et .bib intacts) | — |
44 +| 17 | Page titre | `\WPdate` May 2026, `\WPversion` 1.1 | October 2026, 1.2 ; mots-clés : + « text as data », « listing descriptions » (7) | protocole |
45 +
46 +Sections réécrites intégralement : introduction, méthodologie, données, résultats, robustesse, discussion, conclusion ;
47 +section **7 « Extended Specifications and Validation »** ajoutée (`paper/sections/extended.tex`) ; littérature enrichie
48 +(voir §3) ; annexe inchangée (tables A1–A2) ; tables manuelles `tab_robustness_summary` (10 lignes ajoutées) et
49 +`tab_text_comparison` (ligne multilingue +0,069) mises à jour.
50 +
51 +## 3. Références
52 +
53 +- **Avant** : 86 entrées (toutes vérifiées lors de l'audit du 2026-08-05 via OpenAlex). **Après** : 94 entrées.
54 +- **Vérifications 2026-10-17** (Crossref `api.crossref.org/works?query.bibliographic=` puis résolution DOI
55 + `doi.org` en content negotiation) des références clés citées dans le mandat : Nowak & Smith 2017 JAE 32(4) 896–918
56 + (10.1002/jae.2550) ✓ ; Shen & Ross 2021 JUE 121, 103299 ✓ ; Goodwin–Waller–Weeks 2014 JHR 23(2) ✓ et 2018 JHR 27(2) ✓ ;
57 + Pryce & Oates 2008 Housing Studies 23(2) ✓ ; Gentzkow–Kelly–Taddy 2019 JEL 57(3) ✓ ; Reimers & Gurevych 2019 ✓ ;
58 + Levitt & Syverson 2008 REStat 90(4) ✓ ; Zietz–Zietz–Sirmans 2007 JREFE 37(4) ✓ ; Ethayarajh 2019 ✓ ; Loughran–McDonald
59 + 2011/2016 (déjà avec DOI).
60 +- **Ajoutées (8, toutes avec DOI résolu)** :
61 + `nowak2021dictionaries` (Nowak, Price & Smith, JREFE 62(1), 10.1007/s11146-019-09740-w) ;
62 + `reimers2020multilingual` (EMNLP 2020, 10.18653/v1/2020.emnlp-main.365) ;
63 + `cameron2015practitioner` (JHR 50(2), 10.3368/jhr.50.2.317) ;
64 + `abadie2023when` (QJE 138(1), 10.1093/qje/qjac038) ;
65 + `roberts2017cross` (Ecography 40(8), 10.1111/ecog.02881) ;
66 + `hastie2009elements` (Springer, 10.1007/978-0-387-84858-7) ;
67 + `garcia2023colour` (JFE 147(3), 10.1016/j.jfineco.2022.11.006) ;
68 + `kelly2021measuring` (AER: Insights 3(3), 10.1257/aeri.20190499).
69 +- **Retirées** : aucune. « Hausman–Taddy » (demandé à vérifier) : aucune publication conjointe trouvée sur Crossref → non ajoutée.
70 + « Garcia et al. » interprété comme García, Hu & Rohrer (2023), vérifié et ajouté.
71 +- Citation de Sirmans et al. (2005, 2006) à l'appui de chiffres qu'ils ne contiennent pas : citations conservées pour ce
72 + qu'elles montrent (composition des modèles, méta-analyse), affirmations chiffrées retirées (corrections 7–8).
73 +
74 +## 4. Éléments non modifiés / non exécutés
75 +
76 +- Prix de transaction, panel temporel, variation intra-propriété, expériences A/B : données absentes → décrits comme non exécutés.
77 +- Encodeur français dédié (CamemBERT/FlauBERT, non distillés pour la similarité) et références orthogonalisées : non exécutés (hors périmètre < 30 min ; recommandé).
78 +- Superficie habitable disponible pour 36 % seulement : analyse sur sous-échantillon, pas d'imputation.
79 +- Tables 2–8 et figures 1–11 : régénérées à l'identique ; aucune valeur changée (hormis l'étiquette de la ligne « Lot size »).
80 +- `data/raw/louka.db` : toujours non versionné ; table `users` toujours présente (recommandation de la purger maintenue).
added docs/REVIEW-REPORT.md +172 −0
@@ -0,0 +1,172 @@
1 +<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->
2 +# REVIEW REPORT — editorial board, révision scientifique complète (2026-10-17)
3 +
4 +**Papier** : UQO Working Paper No. 2, *Decoding Real Estate Descriptions: Semantic Embeddings and Hedonic Pricing of
5 +Residential Properties in Quebec* (S.-P. Boucher). Version examinée : 1.1 (mai 2026, 53 p., 86 réf., SSRN 7626640).
6 +Version produite : 1.2 (octobre 2026). Journal d'audit : `docs/CHANGELOG-REVISION.md`.
7 +
8 +**Verdict global.** Le papier pose une question réelle (le texte des annonces contient-il de l'information de prix que les
9 +variables hédoniques structurées omettent, et peut-on l'extraire sous une forme interprétable ?) et y répond avec un
10 +pipeline reproductible. La v1.1 souffrait toutefois de trois faiblesses de fond, non détectées par les audits antérieurs :
11 +(i) un **confondant de langue** majeur et non contrôlé — 40 % du corpus est en anglais, les références sont en français,
12 +l'encodeur est anglophone ; (ii) une **lecture sur-confiante des coefficients individuels** dans un bloc de 20
13 +régresseurs corrélés à 0,66–0,97 (signes contre-intuitifs non discutés, et un énoncé de la discussion contredit par la
14 +table des quantiles) ; (iii) l'**absence de toute validation hors échantillon et de tout contrôle de localisation** alors
15 +que les coordonnées et codes postaux sont dans les données. La révision corrige les trois points à partir de réanalyses
16 +exécutées localement, conserve les chiffres de la v1.1 comme baseline, et réécrit l'argument autour de ce qui est robuste
17 +(information au niveau du bloc et de cinq dimensions) et de ce qui ne l'est pas.
18 +
19 +---
20 +
21 +## 1. Diagnostic par section
22 +
23 +### Résumé / Introduction
24 +- *Forces* : positionnement clair à l'intersection hédonique / text-as-data / ML interprétable ; contribution en trois points.
25 +- *Faiblesses* : résumé en « I » vs corps en « we » ; « predominantly in French » (faux : 40 % anglais) ; « comparable to the
26 + gains from adding neighborhood controls (Sirmans et al. 2006) » — affirmation chiffrée (3–8 pp) absente de la source ;
27 + chiffres annoncés sans aucune qualification ; aucune validation hors échantillon annoncée.
28 +- *Corrigé* : résumé et introduction réécrits ; contributions reformulées (information confirmée OOS ; part de la langue ;
29 + évaluation de l'interprétabilité) ; paragraphe explicite sur ce qui change par rapport à la v1.1.
30 +
31 +### Revue de littérature
32 +- *Forces* : couverture large et vérifiée (86 réf.) après l'audit d'août 2026 ; arc dictionnaire → topic → embedding.
33 +- *Faiblesses* : rien sur la dépendance contextuelle des dictionnaires (Nowak, Price & Smith 2021 absent) ; rien sur
34 + l'inférence groupée ni la validation spatiale ; encodeurs multilingues absents ; « resolves the depth-interpretability
35 + tension » trop fort.
36 +- *Corrigé* : 8 références ajoutées et intégrées à l'argument (voir §3) ; « resolves » → « addresses » ; phrase sur la
37 + distinction entre « features nommées » et « coefficients stables ».
38 +
39 +### Méthodologie
40 +- *Forces* : pipeline clair ; Éq. des modèles A–E ; identification en trois canaux déjà prudente.
41 +- *Faiblesses* : interprétation « par écart-type » sans formule ni retransformation explicite ; test F sans degrés de liberté
42 + et sous homoscédasticité alors que BP rejette ; « dimensional specificity » revendiquée mais violée par les textes de
43 + référence eux-mêmes (chevauchements lisibles en Annexe A) ; aucune équation pour les EF, le clustering, la validation OOS ;
44 + le canal « persuasion » ignorait que le texte est écrit **après** la fixation du prix par le même agent (endogénéité
45 + structurelle du texte).
46 +- *Corrigé* : Éq. (impact) 100(e^γ−1) par σ_s et γ/σ_s par unité de cosinus ; F(21, 17 059) + Wald robustes/groupés ;
47 + nouvelle §3.7 (modèle à EF, clustering, R² OOS, MdAPE) ; identification réécrite (prix → texte, prix affichés =
48 + comportement du vendeur) ; chevauchements des références reconnus.
49 +
50 +### Données
51 +- *Faiblesses* : date d'extraction absente (7 janvier 2026) ; langue non décrite ; « Lot size (sq. ft.) » alors que 61 %
52 + des valeurs sont en m² (champ à unités mixtes, max 7,2×10⁸) ; superficie habitable (36 % des annonces) ignorée ;
53 + neuf prix < 50 000 $ non signalés ; les corrélations bivariées négatives attribuées à la longueur (corr 0,20) alors que
54 + la langue en explique 86 %.
55 +- *Corrigé* : §4.1 (snapshot, RTA, municipalités), §4.2 (unités, prix extrêmes, superficie), nouvelle §4.3 Langue +
56 + Table « language », §4.4 réinterprétée.
57 +
58 +### Résultats (baseline)
59 +- *Forces* : tables générées par le pipeline ; chiffres reproduits à l'identique.
60 +- *Faiblesses* : décomposition du R² (88,3/2,4/9,3 %) présentée sans dire qu'elle est séquentielle ; 4 signes
61 + contre-intuitifs (Entry-Level +, Premium Location −, Energy Efficient −, Bright & Spacious −) passés sous silence ;
62 + gradient par quintile attribué à la longueur.
63 +- *Corrigé* : ordre de la décomposition explicité ; anomalies discutées (colinéarité, r = 0,97 Entry-Level/Motivated) et
64 + renvoyées aux inversions de signe de §7 ; renvoi systématique vers les spécifications étendues.
65 +
66 +### Robustesse (v1.1)
67 +- *Forces* : batterie honnête depuis l'audit d'août (VIF, Lasso, PCA).
68 +- *Faiblesses* : « Modern remarkably stable across quantiles » contredit la Table 6 (« high at both tails ») ; bootstrap par
69 + paires présenté comme validation complète (ignore la dépendance spatiale) ; pas de clustering.
70 +- *Corrigé* : textes alignés sur les tables ; limites du bootstrap énoncées ; retrait de l'énoncé faux sur New Construction.
71 +
72 +### Nouvelle §7 Extended Specifications and Validation (ajoutée)
73 +Langue ; EF RTA/municipalité + erreurs groupées ; terrain en m² et superficie habitable ; tests par domaine ; validation
74 +croisée aléatoire et spatiale ; sensibilité au libellé des références ; encodeur multilingue. 6 tables + 1 figure générées.
75 +
76 +### Discussion / Conclusion
77 +- *Faiblesses* : comparaison Motivated Seller (−8,5 %) vs Levitt–Syverson (3,7 %) bâtie sur un coefficient non robuste ;
78 + New Construction « soutenu par les quantiles » (faux) ; Sirmans 3–8 pp (non vérifiable) ; liste à puces dans la conclusion.
79 +- *Corrigé* : discussion réécrite en « ce qui est établi / ce qui ne l'est pas / la langue comme confondant / relation à la
80 + littérature / implications / limites » ; conclusion en prose, message recalibré.
81 +
82 +---
83 +
84 +## 2. Méthodologie — verdict sur chaque point du §3 du master prompt
85 +
86 +| Point | Verdict | Motif |
87 +|---|---|---|
88 +| Spécification justifiée | Partiellement (v1.1) → oui (v1.2) | semi-log justifié ; absence de localisation et de superficie non justifiée en v1.1 ; EF + superficie ajoutés |
89 +| Hypothèses d'estimation explicites | Non → oui | hétéroscédasticité (HC3) OK, mais indépendance intra-zone supposée tacitement ; clustering RTA ajouté |
90 +| Variables correctement définies | Non → oui | « Lot size (sq. ft.) » faux (unités mixtes) ; langue non définie ; corrigé |
91 +| Effets fixes appropriés | Absents → RTA (415) et municipalité (1 061) | identifiants disponibles dans les données brutes |
92 +| Dépendance spatiale/temporelle | Non traitée → EF + clustering + CV spatiale | pas de dimension temporelle (snapshot) |
93 +| Erreurs-types | HC3 seul → HC3 + cluster RTA | SE sémantiques +50 % en moyenne sous clustering |
94 +| Construction de l'échantillon | Transparente | 17 087 reproduits ; date ajoutée |
95 +| Robustesse contre menaces réelles | Non (menaces = langue, localisation, mesure) → oui | §7 |
96 +| Interprétation des coefficients | Formule absente → Éq. (impact) ; signes anomaux ignorés → discutés | — |
97 +| Significativité statistique vs économique | Mélangées → distinguées | gain OOS en MdAPE < 1 pt ; localisation ≫ texte |
98 +| Affirmations causales | Texte prudent mais « urgency discount », « penalizes prices », « command premiums » ; « comparable to neighborhood controls » | reformulé en associations ; séquence prix → texte explicitée |
99 +
100 +---
101 +
102 +## 3. Littérature
103 +
104 +- 86 → **94 références**, toutes vérifiées (86 par l'audit OpenAlex d'août 2026 ; les 8 nouvelles + 10 références clés
105 + re-vérifiées le 2026-10-17 via Crossref et résolution DOI, détails dans le changelog §3).
106 +- Ajoutées : Nowak–Price–Smith 2021 (dictionnaires immobiliers variant dans l'espace/temps) ; Reimers–Gurevych 2020
107 + (encodeurs multilingues par distillation) ; Cameron–Miller 2015 et Abadie et al. 2023 (clustering) ; Roberts et al. 2017
108 + (validation croisée spatiale) ; Hastie–Tibshirani–Friedman 2009 (CV) ; García–Hu–Rohrer 2023 (dictionnaires financiers) ;
109 + Kelly et al. 2021 (similarité textuelle des brevets).
110 +- Non ajoutée : « Hausman–Taddy » (aucune publication conjointe trouvée).
111 +- Corrections d'usage : Sirmans et al. (2005, 2006) ne sont plus cités à l'appui de chiffres qu'ils ne contiennent pas.
112 +
113 +---
114 +
115 +## 4. Résultats — incohérences trouvées et traitement
116 +
117 +1. **Langue** : η² = 0,862 de la similarité moyenne ; EN 0,204 vs FR 0,434 ; prix médian EN 749 900 $ vs FR 499 900 $. Le
118 + gain sémantique ΔR² passe de 0,047 à 0,017 avec deux indicatrices de langue. **Plus de la moitié du « gain sémantique »
119 + de la v1.1 est de la langue.**
120 +2. **New Construction / quantiles** : énoncé de la v1.1 contredit par `robustness_results.csv` (−0,068/−0,079/−0,142). Retiré.
121 +3. **Motivated Seller** : −8,5 % → −2,9 % (n.s.) avec langue ; 0,4 % avec encodeur multilingue. Dimension non robuste ;
122 + comparaison avec Levitt–Syverson retirée.
123 +4. **Sensibilité aux références** : similarités quasi inchangées (corr. 0,93–0,99) mais vecteur de coefficients corrélé à
124 + 0,63 / 0,02 / 0,81 avec le baseline ; accord de signe 81 / 62 / 88 % ; ΔR² du bloc stable (0,042–0,054).
125 +5. **Encodeur multilingue** : ΔR² 0,057 (brut), 0,038 (langue), 0,039 (EF RTA), 0,028 (+ terrain m²) ; meilleure
126 + performance OOS (R² 0,551 / 0,545) ; inversions de signe : Entry-Level (−4,9 %), New Construction (+7,2 %), Energy
127 + Efficient, Bright & Spacious. Cinq dimensions stables partout : Luxury, Land & Nature, Family-Friendly, Quiet & Peaceful,
128 + Needs Renovation.
129 +6. **Terrain** : champ brut inutilisable (t = 0,00 ; R² OOS = −1,04 quand une valeur extrême tombe dans le pli test) ;
130 + log(m²) → +40 % par écart-type intra-RTA, plus gros coefficient structurel ; Land & Nature passe de +15,2 à +4,2 %.
131 +7. **Hors échantillon** : gain in-sample confirmé (R² OOS 0,489 → 0,528 aléatoire ; 0,484 → 0,522 spatial) ; MdAPE
132 + 27,1 → 26,9 % (26,4 % multilingue) — gain réel mais modeste en valeur d'évaluation.
133 +8. **Décomposition du R²** : séquentielle (ordre structure → longueur → sémantique) ; précisé.
134 +9. Cohérence résumé/texte/tables/README : rétablie (0,452 → 0,511 conservé comme baseline ; chiffres nets ajoutés partout).
135 +
136 +---
137 +
138 +## 5. Limites restantes
139 +
140 +- Prix affichés (snapshot du 7 janvier 2026), pas de transactions ni de dates de vente → pas de « forward-in-time holdout ».
141 +- Identification : texte écrit après le prix par le même agent ; EF n'absorbent que la localisation inter-zones.
142 +- Superficie habitable pour 36 % des annonces seulement.
143 +- Références à vocabulaires chevauchants ; dépendance des coefficients individuels au libellé non résolue (quantifiée).
144 +- Détection de langue heuristique (stop-words) ; une classification par modèle de langue serait plus fine (2,7 % « mixed »).
145 +- Colinéarité intrinsèque au design (20 projections du même vecteur).
146 +
147 +## 6. Analyses recommandées, non exécutées
148 +
149 +1. Références redessinées à vocabulaires disjoints, puis **orthogonalisées** dans l'espace d'embedding (Gram–Schmidt sur
150 + R) ; comparer la stabilité des coefficients.
151 +2. Encodeur français dédié ou domaine-adapté (CamemBERT/FlauBERT fine-tuné en similarité) ; agrégation sur plusieurs
152 + paraphrases par dimension (moyenne de 5–10 libellés).
153 +3. Prix de transaction (Centris/JLR) → écart liste/vente en fonction du texte.
154 +4. Variation intra-propriété (annonces successives) et expériences de plateforme.
155 +5. Imputation ou collecte de la superficie habitable pour l'échantillon complet.
156 +6. Classification de langue par modèle (fastText/langdetect) et interactions langue × dimension.
157 +7. Erreurs-types par bootstrap en grappes (Cameron–Gelbach–Miller) si le nombre de RTA devenait faible dans des sous-échantillons.
158 +
159 +## 7. Maturité pour publication
160 +
161 +- **État** : working paper solide et honnête après révision ; contribution principale désormais méthodologique (ce que la
162 + projection sur références peut et ne peut pas livrer ; la langue comme confondant dans les applications text-as-data
163 + bilingues), avec une application hédonique sérieuse.
164 +- **Revues cibles** : *Journal of Real Estate Research* ou *Journal of Housing Research* (adéquation thématique forte,
165 + tradition des « agent remarks ») ; *Journal of Property Research* ; en version plus méthodologique, *Real Estate Economics*
166 + ou *Journal of Real Estate Finance and Economics* (exigeront probablement des prix de transaction).
167 +- **Risques de rejet** : (i) prix affichés et non de transaction ; (ii) absence de superficie habitable sur 64 % de
168 + l'échantillon ; (iii) gain prédictif modeste (< 1 pt de MdAPE) ; (iv) coefficients individuels instables — le papier doit
169 + être vendu sur le bloc, la langue et la méthode, pas sur « 20 prix implicites » ; (v) encodeur baseline anglophone sur
170 + corpus bilingue (atténué par les estimations multilingues, désormais présentées comme préférées).
171 +- **Ce qui est vérifié vs proposé** : tout chiffre du papier provient de `results/*.csv` (scripts 03–08) ; les
172 + analyses du §6 ci-dessus sont proposées et non exécutées.
added figures/fig12_specification_stability.pdf +0 −0

Binary file not shown.

added figures/fig12_specification_stability.png +0 −0

Binary file not shown.

modified paper/main.pdf +0 −0

Binary file not shown.

modified paper/main.tex +5 −4
@@ -17,12 +17,12 @@
17 17 \newcommand{\WPnumber}{2}
18 18 \newcommand{\WPtitle}{Decoding Real Estate Descriptions: Semantic Embeddings and Hedonic Pricing of Residential Properties in Quebec}
19 19 \newcommand{\WPsubtitle}{}
20 −\newcommand{\WPdate}{May 2026}
21 −\newcommand{\WPversion}{1.1}
20 +\newcommand{\WPdate}{October 2026}
21 +\newcommand{\WPversion}{1.2}
22 22 \newcommand{\WPabstract}{%
23 −This paper develops an interpretable NLP approach to hedonic pricing that projects sentence-transformer embeddings of property listing descriptions onto 20 researcher-defined semantic references, producing economically meaningful features. Using 17,087 single-family listings from Quebec, Canada, I show that adding cosine-similarity measures to a standard hedonic model increases adjusted $R^2$ from 0.452 to 0.511 ($F=99.53$, $p<0.001$). Modern/contemporary language is associated with $+$16.4\% prices per standard deviation; luxury $+$14.2\%; land/nature $+$13.0\%. Renovation-need language is associated with $-$7.9\% and seller urgency $-$8.5\%. Quantile regressions reveal heterogeneous effects across the price distribution, and the estimates are robust to bootstrap inference and outlier trimming.%
23 +Listing descriptions written by real estate brokers contain information about housing quality that structured hedonic variables omit. We propose an interpretable way to use that information: sentence-transformer embeddings of 17,087 single-family listings from Quebec are projected, by cosine similarity, onto 20 researcher-defined reference descriptions (luxury, needs renovation, waterfront, motivated seller, and so on), and the 20 similarity scores enter a semi-logarithmic hedonic model as named regressors. Adding the semantic block to a structural model raises the adjusted $R^2$ from 0.452 to 0.511, a gain confirmed out of sample in random and spatially grouped cross-validation. Three qualifications follow. First, 40\% of the descriptions are written in English and score systematically lower against the French references; the language of the listing alone explains 86\% of the variance of the mean similarity and accounts for more than half of the apparent semantic gain. Net of language and of 415 forward-sortation-area fixed effects, the semantic block adds 2.0 percentage points of $R^2$ with the baseline encoder and 3.9 points with a multilingual encoder, and remains jointly significant with standard errors clustered by area. Second, the individual implicit price gradients are sensitive to the phrasing of the references and to the encoder: only a core of dimensions---Luxury, Land \& Nature, Family-Friendly, Quiet \& Peaceful, Needs Renovation---keeps its sign and significance across specifications, while others, including Motivated Seller, New Construction and Entry-Level, do not. Third, the coefficients are conditional associations in listing prices, not causal effects of wording. The paper documents what reference-based projection can and cannot deliver for hedonic inference and provides a replication pipeline.%
24 24 }
25 −\newcommand{\WPkeywords}{hedonic pricing, NLP, sentence embeddings, cosine similarity, real estate valuation, Quebec}
25 +\newcommand{\WPkeywords}{hedonic pricing, text as data, sentence embeddings, cosine similarity, listing descriptions, real estate valuation, Quebec}
26 26 \newcommand{\WPjel}{R31, C45, C21, R21}
27 27
28 28 % --- Author ---
@@ -59,6 +59,7 @@ This paper develops an interpretable NLP approach to hedonic pricing that projec
59 59 \input{sections/data}
60 60 \input{sections/results}
61 61 \input{sections/robustness}
62 +\input{sections/extended}
62 63 \input{sections/discussion}
63 64 \input{sections/conclusion}
64 65
modified paper/references.bib +90 −0
@@ -912,3 +912,93 @@
912 912 number = {1},
913 913 pages = {25--42}
914 914 }
915 +
916 +% ============================================================================
917 +% Added 2026-10-17 — editorial-board revision (v1.2). Every entry verified by
918 +% DOI resolution (doi.org content negotiation) and Crossref on 2026-10-17.
919 +% ============================================================================
920 +
921 +@article{nowak2021dictionaries,
922 + author = {Nowak, Adam D. and Price, Bradley S. and Smith, Patrick S.},
923 + title = {Real Estate Dictionaries Across Space and Time},
924 + journal = {The Journal of Real Estate Finance and Economics},
925 + year = {2021},
926 + volume = {62},
927 + number = {1},
928 + pages = {139--163},
929 + doi = {10.1007/s11146-019-09740-w}
930 +}
931 +
932 +@inproceedings{reimers2020multilingual,
933 + author = {Reimers, Nils and Gurevych, Iryna},
934 + title = {Making Monolingual Sentence Embeddings Multilingual Using Knowledge Distillation},
935 + booktitle = {Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP)},
936 + year = {2020},
937 + pages = {4512--4525},
938 + doi = {10.18653/v1/2020.emnlp-main.365}
939 +}
940 +
941 +@article{cameron2015practitioner,
942 + author = {Cameron, A. Colin and Miller, Douglas L.},
943 + title = {A Practitioner's Guide to Cluster-Robust Inference},
944 + journal = {Journal of Human Resources},
945 + year = {2015},
946 + volume = {50},
947 + number = {2},
948 + pages = {317--372},
949 + doi = {10.3368/jhr.50.2.317}
950 +}
951 +
952 +@article{abadie2023when,
953 + author = {Abadie, Alberto and Athey, Susan and Imbens, Guido W. and Wooldridge, Jeffrey M.},
954 + title = {When Should You Adjust Standard Errors for Clustering?},
955 + journal = {The Quarterly Journal of Economics},
956 + year = {2023},
957 + volume = {138},
958 + number = {1},
959 + pages = {1--35},
960 + doi = {10.1093/qje/qjac038}
961 +}
962 +
963 +@article{roberts2017cross,
964 + author = {Roberts, David R. and Bahn, Volker and Ciuti, Simone and Boyce, Mark S. and Elith, Jane and Guillera-Arroita, Gurutzeta and Hauenstein, Severin and Lahoz-Monfort, Jos{\'e} J. and Schr{\"o}der, Boris and Thuiller, Wilfried and Warton, David I. and Wintle, Brendan A. and Hartig, Florian and Dormann, Carsten F.},
965 + title = {Cross-Validation Strategies for Data with Temporal, Spatial, Hierarchical, or Phylogenetic Structure},
966 + journal = {Ecography},
967 + year = {2017},
968 + volume = {40},
969 + number = {8},
970 + pages = {913--929},
971 + doi = {10.1111/ecog.02881}
972 +}
973 +
974 +@book{hastie2009elements,
975 + author = {Hastie, Trevor and Tibshirani, Robert and Friedman, Jerome},
976 + title = {The Elements of Statistical Learning: Data Mining, Inference, and Prediction},
977 + edition = {2nd},
978 + publisher = {Springer},
979 + address = {New York},
980 + year = {2009},
981 + doi = {10.1007/978-0-387-84858-7}
982 +}
983 +
984 +@article{garcia2023colour,
985 + author = {Garc{\'i}a, Diego and Hu, Xiaowen and Rohrer, Maximilian},
986 + title = {The Colour of Finance Words},
987 + journal = {Journal of Financial Economics},
988 + year = {2023},
989 + volume = {147},
990 + number = {3},
991 + pages = {525--549},
992 + doi = {10.1016/j.jfineco.2022.11.006}
993 +}
994 +
995 +@article{kelly2021measuring,
996 + author = {Kelly, Bryan and Papanikolaou, Dimitris and Seru, Amit and Taddy, Matt},
997 + title = {Measuring Technological Innovation over the Long Run},
998 + journal = {American Economic Review: Insights},
999 + year = {2021},
1000 + volume = {3},
1001 + number = {3},
1002 + pages = {303--320},
1003 + doi = {10.1257/aeri.20190499}
1004 +}
modified paper/sections/appendix.tex +1 −1
@@ -12,7 +12,7 @@
12 12
13 13 \section{Reference Descriptions} \label{app:references}
14 14
15 −Table~\ref{tab:reference_texts} reproduces the verbatim French text of the 20 reference descriptions used to construct the semantic similarity features (Section~\ref{sec:methodology}). Publishing the exact reference texts makes the feature construction fully replicable and allows readers to assess the operationalization of each qualitative dimension directly.
15 +Table~\ref{tab:reference_texts} reproduces the verbatim French text of the 20 reference descriptions used to construct the semantic similarity features (Section~\ref{sec:methodology}). Publishing the exact reference texts makes the feature construction fully replicable and allows readers to assess the operationalisation of each qualitative dimension directly.
16 16
17 17 \input{tables/tab_reference_texts}
18 18
modified paper/sections/conclusion.tex +4 −13
@@ -4,19 +4,10 @@
4 4 \section{Conclusion} \label{sec:conclusion}
5 5 %======================================================================
6 6
7 −This paper demonstrates that property listing descriptions contain economically meaningful information that can be systematically extracted and integrated into hedonic pricing models. Using sentence embeddings and cosine similarity with 20 interpretable reference descriptions, we show that semantic features from listing text improve the explanatory power of a standard hedonic model by 5.9 percentage points (adjusted $R^2$: 0.452 $\rightarrow$ 0.511) for 17,087 single-family homes in Quebec, Canada. The estimates are stable under bootstrap inference, outlier trimming, and quantile-based heterogeneity analysis, while the accompanying diagnostics candidly document the strong collinearity among semantic dimensions and its implications for variable-by-variable interpretation.
7 +This paper asked whether the free-text descriptions that brokers write for residential listings contain price-relevant information that structured hedonic variables omit, and whether that information can be extracted in a form that supports interpretation rather than only prediction. Using sentence embeddings of 17,087 single-family listings in Quebec, projected onto 20 researcher-defined reference descriptions, we find that the answer to the first question is yes and the answer to the second is a qualified yes.
8 8
9 −Our approach bridges the hedonic pricing tradition and the text-as-data program in empirical economics \citep{gentzkow2019text, ash2023text} by producing features that satisfy the requirements of both: it generalizes the transparent dictionary method into embedding space while preserving the ex ante interpretability that inference on implicit prices requires \citep{rudin2019stop}. They are semantically rich, capturing deep meaning rather than surface-level keyword overlap, and economically interpretable, with each feature corresponding to a named qualitative dimension carrying a clear coefficient estimate. Descriptions emphasizing luxury finishes (+14.2\%), modern design (+16.4\%), and natural settings (+13.0\%) command significant premiums, while language signaling renovation needs ($-$7.9\%), seller urgency ($-$8.5\%), and family-oriented marketing ($-$11.6\%) is associated with discounts. Importantly, the quantile regression analysis reveals that these effects are heterogeneous across the price distribution: the luxury premium is amplified for high-value properties, while renovation and urgency discounts are attenuated, consistent with quality complementarities and differential buyer price sensitivity.
9 +The semantic block raises the adjusted $R^2$ of a structural hedonic model from 0.452 to 0.511 and improves out-of-sample prediction in random and spatially grouped cross-validation. But a large part of this gain reflects the language of the listing rather than its content: 40\% of the descriptions are in English, they score systematically lower against French references, and they are written for more expensive properties. Net of language and of 415 area fixed effects, with standard errors clustered by area, the semantic block adds about two percentage points of $R^2$ with the baseline encoder and about four with a multilingual one, and it remains jointly significant in every specification, in each language subsample, after correcting the lot-size measure and after adding floor area. Five dimensions---Luxury, Land \& Nature, Family-Friendly, Quiet \& Peaceful and Needs Renovation---carry the same sign and remain significant across all specifications and both encoders. The others, including the urgency discount and the new-construction discount that the first version of this paper emphasised, do not: they depend on the phrasing of the references and on the encoder, as the sensitivity analyses show.
10 10
11 −The general methodology---embedding domain-specific text, computing cosine similarities against researcher-designed references, and incorporating the resulting features into standard econometric models---is portable to any setting where free-text descriptions accompany structured economic data. Applications beyond real estate include:
12 −\begin{itemize}[noitemsep, topsep=3pt]
13 −\item \textbf{E-commerce}: Product listing text on platforms such as Amazon or eBay contains quality and condition signals that could be incorporated into hedonic price models for used goods, electronics, or collectibles.
14 −\item \textbf{Labor economics}: Job posting descriptions embed information about workplace culture, benefits, and flexibility that are imperfectly captured by structured fields; reference-based similarity could quantify the implicit wage premiums associated with different workplace attributes \citep{marinescu2020opening}.
15 −\item \textbf{Innovation economics}: Patent abstracts describe inventions in varying degrees of technical novelty and commercial potential; semantic features could augment patent valuation models.
16 −\item \textbf{Corporate finance}: Earnings call transcripts and annual report narratives contain forward-looking information about firm prospects; reference-based sentiment dimensions could improve asset pricing models beyond the binary positive/negative sentiment used by \citet{loughran2011liability}.
17 −\item \textbf{Hospitality}: Hotel and Airbnb listing descriptions convey amenity and ambiance information that complements structured data on room type, location, and ratings.
18 −\end{itemize}
11 +The methodological conclusion is twofold. Reference-based projection does what it promises at the level of the block and of a few well-separated dimensions: it turns an opaque embedding into named, auditable features whose joint information content is robust, and it does so at negligible cost. It does not deliver twenty stable implicit prices, because twenty projections of the same vector are too collinear for their individual coefficients to be invariant to wording and representation choices that have no economic content. The practical recommendations that follow---report and control for the language composition of the corpus or use a language-aligned encoder, design references with disjoint vocabularies, treat block- and domain-level tests as the primary inferential objects, report the sensitivity of individual coefficients to reference phrasing, and validate out of sample with spatially grouped folds---apply to any application of continuous dictionaries in the text-as-data tradition \citep{gentzkow2019text, ash2023text}, in housing or elsewhere: product descriptions in online marketplaces, job postings \citep{marinescu2020opening}, patent texts \citep{kelly2021measuring}, corporate disclosures \citep{loughran2011liability, garcia2023colour}.
19 12
20 −In each case, the reference-based approach can translate qualitative textual information into quantitative features suitable for econometric analysis while preserving the interpretability required for inference on implicit prices.
21 −
22 −Future research should extend this framework along several dimensions. First, applying the method to transaction prices rather than listing prices would provide cleaner identification of text-price relationships and enable estimation of the listing premium as a function of semantic content. Second, temporal analysis using panel data could reveal how the relationship between listing language and prices evolves over market cycles---for instance, whether luxury premiums are amplified in bull markets and attenuated in recessions. Third, spatial econometric extensions incorporating municipality fixed effects and spatial autoregressive structures \citep{lesage2009introduction} could disentangle location-based from property-level semantic effects, addressing the concern that some dimensions (Family-Friendly, New Construction) proxy for suburban location. Fourth, multilingual embedding models specifically optimized for French---such as CamemBERT \citep{martin2020camembert} or domain-adapted variants---together with TF-IDF, keyword, and sentiment baselines, would complete the comparison of text representations begun in Section~\ref{sec:robustness}. Fifth, a systematic sensitivity analysis of the reference descriptions---multi-paraphrase averaging, bilingual variants, and length perturbations---would quantify the robustness of the semantic features to their exact phrasing. Sixth, the framework could be extended to buyer-side text (search queries, saved-listing patterns), connecting to the evidence that housing search is itself segmented along the qualitative dimensions buyers care about \citep{piazzesi2020segmented}, and to listing photographs, whose quality content parallels that of text \citep{glaeser2018computer, poursaeed2018vision}. Finally, causal identification could be strengthened through within-property variation---comparing successive listings for the same property by different agents---or through A/B testing partnerships with real estate platforms.
13 +Several extensions would strengthen the evidence. Transaction prices would replace the pricing behaviour of sellers by the valuation of buyers and allow the list-to-sale gap to be modelled as a function of text. Successive listings of the same property, or platform experiments, would offer within-property variation for causal statements. A principled design of the references---disjoint vocabularies, orthogonalisation in embedding space, or data-driven anchors validated against expert labels---would address the attribution problem directly. A French-specific or domain-adapted encoder \citep{martin2020camembert} and listing photographs \citep{glaeser2018computer, poursaeed2018vision} would complete the measurement of quality from unstructured listing content. The replication pipeline accompanying the paper, which reproduces every number reported here from the raw database, is intended to make these extensions straightforward.
modified paper/sections/data.tex +18 −14
@@ -4,50 +4,54 @@
4 4 \section{Data} \label{sec:data}
5 5 %======================================================================
6 6
7 −\subsection{Data Source and Sample Construction}
7 +\subsection{Source and Sample Construction}
8 8
9 −The dataset is drawn from a database of residential property listings in Quebec, Canada, collected from the Realtor.ca and Centris platforms. Realtor.ca is the public-facing portal of the Canadian Real Estate Association (CREA), and Centris is the Quebec-specific MLS (Multiple Listing Service) platform operated by the Qu\'ebec Professional Association of Real Estate Brokers (APCIQ). Together, these platforms cover the large majority of brokered residential listings in the province.
9 +The data are drawn from a database of residential listings in Quebec, Canada, collected from the Realtor.ca and Centris platforms in a single extraction completed on 7~January 2026. Realtor.ca is the public portal of the Canadian Real Estate Association, and Centris is the Quebec multiple listing service operated by the Qu\'ebec Professional Association of Real Estate Brokers; together they cover the large majority of brokered residential listings in the province. The database is a snapshot of active listings, not a transaction file: prices are asking prices, and each property appears once.
10 10
11 −The full database contains 46,479 listings across five property categories: houses (17,089), condominiums (8,586), land (8,506), rentals (8,240), and multiplexes (4,058). For this study, we restrict the sample to single-family houses to maintain a homogeneous product category, following standard practice in the hedonic pricing literature \citep{sirmans2005composition}. After excluding listings with missing or uninformative descriptions (fewer than 20 characters) and non-positive prices, the final sample comprises 17,087 observations.
11 +The database contains 46,479 listings in five categories: houses (17,089), condominiums (8,586), land (8,506), rentals (8,240) and multiplexes (4,058). We restrict the sample to single-family houses to maintain a homogeneous product category, as is standard in the hedonic literature \citep{sirmans2005composition}. After excluding listings with a description shorter than 20 characters or a non-positive price, the sample comprises 17,087 observations. Every listing carries geographic coordinates and a postal code; the first three characters of the postal code define 415 forward sortation areas (FSAs) with a median of 21 listings each, and the address field identifies 1,061 municipalities. These identifiers are used for the fixed effects, the clustering and the spatial cross-validation of Section~\ref{sec:extended}.
12 12
13 13 \subsection{Structural Variables}
14 14
15 −Table~\ref{tab:descriptive} presents descriptive statistics for the structural and textual variables used in the hedonic models.
15 +Table~\ref{tab:descriptive} reports descriptive statistics for the structural and textual variables.
16 16
17 17 \input{tables/tab_descriptive}
18 18
19 −The median listing price is \$589,900, with substantial right-skew (mean \$807,259, maximum \$25 million). The log transformation reduces this skewness considerably (log-price standard deviation of 0.70). The typical house has 3 bedrooms and 2 bathrooms (sample medians). The parking-spaces field averages 5.5 with high variance; it records the total number of parking spots reported by the agent, including driveway and outdoor spaces, which explains its large mean and range. The lot-size field is recorded without standardized units at the source and is correspondingly noisy---a limitation reflected in its imprecise coefficient estimate in the regressions. Listing descriptions average 510 characters (standard deviation of 151) and are truncated at approximately 700 characters in the data export, so the length variable is bounded from above.
19 +The median asking price is \$589,900 and the distribution is strongly right-skewed (mean \$807,259, maximum \$25 million); nine listings are priced below \$50,000 and are almost certainly data errors or non-residential offers, and Section~\ref{sec:robustness} shows that trimming the tails does not alter the results. The log transformation reduces the skewness (standard deviation of log price 0.70). The typical house has three bedrooms and two bathrooms (sample medians). The parking field averages 5.5 spaces because it counts all reported spots, including driveway and outdoor spaces. The lot-size field is recorded as a free-text quantity whose unit varies at the source: 61\% of the values are in square metres, 32\% in square feet, 2\% in acres or hectares and 4\% are missing. The first version of this paper used the numeric part of the field as reported; we retain that variable in the baseline models for comparability and document in Section~\ref{sec:extended} that it is uninformative in-sample and harmful out of sample, and we replace it there by a unit-corrected lot area. An interior floor area is reported for 6,228 listings (36\%) and is used in a subsample analysis. Descriptions average 510 characters with a standard deviation of 151 and are truncated at approximately 700 characters in the export, so the length variable is bounded from above.
20 20
21 −Figure~\ref{fig:price_dist} displays the distributions of price and log-price, confirming the appropriateness of the semi-logarithmic specification.
21 +Figure~\ref{fig:price_dist} displays the distributions of price and log price.
22 22
23 23 \begin{figure}[!htbp]
24 24 \centering
25 25 \includegraphics[width=0.85\textwidth]{fig9_price_distribution.pdf}
26 −\caption{Distribution of listing prices and log-prices ($n = 17{,}087$).}
26 +\caption{Distribution of listing prices and log prices ($n = 17{,}087$).}
27 27 \label{fig:price_dist}
28 28 \begin{minipage}{0.9\textwidth}
29 29 \footnotesize
30 −Notes: Left panel shows the distribution of raw listing prices; right panel shows the distribution of log-transformed prices. The log transformation substantially reduces right-skewness.
30 +Notes: Left panel, asking prices; right panel, log asking prices. The log transformation substantially reduces the right skew.
31 31 \end{minipage}
32 32 \end{figure}
33 33
34 +\subsection{Language of the Descriptions} \label{sec:data_language}
35 +
36 +The first version of this paper described the corpus as ``predominantly in French with occasional English phrases''. A systematic classification shows otherwise. We count French and English function words and domain terms in each description and classify a listing as French when the French count exceeds 1.5 times the English count, as English in the reverse case and as mixed otherwise. Table~\ref{tab:language} reports the result: 57.6\% of the descriptions are French, 39.7\% are English and 2.7\% are mixed, the last group consisting mostly of short boilerplate such as ``See listing broker(s)''. English listings are not a random subset: their median asking price is \$749,900 against \$499,900 for French listings, reflecting the geography of anglophone Quebec (the western part of the Montr\'eal region, the Outaouais, parts of the Eastern Townships). Because the 20 references are written in French and the baseline encoder was trained mainly on English, an English description scores lower against every reference: the mean of the 20 similarities is 0.204 for English listings and 0.434 for French ones, and language alone explains 86\% of the variance of the mean similarity. With the multilingual encoder the gap shrinks to 0.352 against 0.395 and the share explained by language falls to 53\%. These facts drive much of the interpretation in Sections~\ref{sec:results} and~\ref{sec:extended}.
37 +
38 +\input{tables/tab_language}
39 +
34 40 \subsection{Semantic Similarity Features}
35 41
36 −Table~\ref{tab:sim_stats} reports the distribution of cosine similarity scores across the 20 reference dimensions, along with their bivariate correlations with log-price.
42 +Table~\ref{tab:sim_stats} reports the distribution of the 20 cosine similarities and their bivariate correlations with log price.
37 43
38 44 \input{tables/tab_similarity_stats}
39 45
40 −A notable pattern in Table~\ref{tab:sim_stats} is that all bivariate correlations between similarity scores and log-price are negative, ranging from $-0.29$ to $-0.17$. This initially counterintuitive result arises because longer, more detailed descriptions---which characterize lower-priced listings where agents invest more effort in textual marketing---produce higher similarity scores with \textit{all} references. This confound is addressed in the multivariate regression by controlling for description length, after which the theoretically expected positive and negative effects of different qualitative dimensions emerge clearly.
41 −
42 −Figure~\ref{fig:sim_dist} displays the distributions of cosine similarities, revealing substantial variation within each dimension.
46 +All bivariate correlations between similarity scores and log price are negative, between $-0.29$ and $-0.17$. The first version of this paper attributed this pattern to description length. The language analysis identifies the main cause: English listings, which are more expensive, score lower against the French references on every dimension, so that each similarity is negatively correlated with price through the language composition of the corpus. Length plays a secondary role---the correlation between the mean similarity and description length is only 0.20---and the mixed-language boilerplate listings, which are short and score near zero, contribute to it. The multivariate specifications of Sections~\ref{sec:results} and~\ref{sec:extended} control for length and, in the extended models, for language. Figure~\ref{fig:sim_dist} displays the distributions of the similarities, which show substantial dispersion within each dimension.
43 47
44 48 \begin{figure}[!htbp]
45 49 \centering
46 50 \includegraphics[width=0.85\textwidth]{fig3_similarity_distributions.pdf}
47 −\caption{Distribution of cosine similarity scores across 20 reference dimensions.}
51 +\caption{Distribution of cosine similarity scores across the 20 reference dimensions.}
48 52 \label{fig:sim_dist}
49 53 \begin{minipage}{0.9\textwidth}
50 54 \footnotesize
51 −Notes: Each box plot displays the distribution of cosine similarity between listing embeddings and the corresponding reference description embedding, ordered by median similarity. Boxes span the interquartile range; whiskers extend to 1.5 times the interquartile range.
55 +Notes: Each box plot displays the distribution of the cosine similarity between listing embeddings and the corresponding reference embedding, ordered by median similarity. Boxes span the interquartile range; whiskers extend to 1.5 times the interquartile range. The wide interquartile ranges, and the low lower quartiles of Motivated Seller and Entry-Level, partly reflect the two languages of the corpus (Table~\ref{tab:language}).
52 56 \end{minipage}
53 57 \end{figure}
modified paper/sections/discussion.tex +20 −46
@@ -4,72 +4,46 @@
4 4 \section{Discussion} \label{sec:discussion}
5 5 %======================================================================
6 6
7 −\subsection{Interpretation of Key Findings}
7 +\subsection{What the Evidence Establishes}
8 8
9 −Our results establish that free-text property descriptions contain economically significant information that traditional hedonic variables fail to capture. The 6-percentage-point improvement in $R^2$ is substantial given that the baseline model already explains 45\% of price variation with standard structural variables---a level consistent with the hedonic pricing literature \citep{sirmans2005composition}. The semantic features contribute 9.3\% of the total explained variance, suggesting that qualitative housing attributes communicated through listing text represent a meaningful dimension of housing differentiation. To contextualize this magnitude, \citet{sirmans2006empirical} found that adding a full set of neighborhood controls to a structural-only model typically improves $R^2$ by 3--8 percentage points---our semantic features achieve comparable gains from a single text field.
9 +Three findings survive every specification in this paper. First, broker-written descriptions contain price-relevant information beyond the structural fields. The 20 semantic similarities are jointly significant in the baseline, within language subsamples, within forward sortation areas and municipalities, with clustered standard errors, after correcting the lot-size measure, on the floor-area subsample, under every perturbation of the reference texts and with both encoders; and the information generalises out of sample, to random held-out listings and to held-out areas alike. Second, the magnitude of this information is smaller than the first version of the paper suggested and depends on what one controls for. The headline gain of six percentage points of $R^2$ over a structural model with no location variables shrinks to about two points once the language of the listing and area fixed effects are accounted for with the baseline encoder, and to about four points with a multilingual encoder; location explains far more of the variation in asking prices than text does. Third, the individual implicit price gradients are robust for a core of five dimensions---Luxury, Land \& Nature, Family-Friendly, Quiet \& Peaceful, Needs Renovation---and not for the others.
10 10
11 −The positive effects of \textbf{Modern/Contemporary} (+16.4\%) and \textbf{Luxury} (+14.2\%) language align with theoretical expectations and prior empirical work on quality premiums \citep{nowak2017quality, goodwin2014broker}. These dimensions capture aspects of housing quality---design aesthetics, material quality, technological amenities---that are simply not reflected in counts of bedrooms and bathrooms. A house with three bathrooms can range from a modest home with basic fixtures to a luxury property with spa-like en-suites; the listing description captures this variation. The quantile regression analysis (Section~\ref{sec:robustness}) reveals that the luxury premium is amplified in the upper portion of the price distribution, consistent with the notion that luxury is a positional good whose marginal value increases with baseline quality \citep{frank2007falling} and with the general finding of the quantile-hedonic literature that many quality attributes command larger implicit prices in upper market segments \citep{zietz2007determinants}.
11 +The interpretable dimensions tell a coherent story. Listings that use luxury vocabulary are priced higher conditional on structure, in every specification and with both encoders, with a gradient of roughly 4 to 14\% per standard deviation depending on the controls; the quantile regressions show the gradient rising with the price level, consistent with \citet{zietz2007determinants} and \citet{mcmillen2008changes}. Listings that describe a natural setting are priced higher; the gradient is large in the baseline (+13\%) and falls to +4\% once the lot area is measured correctly, which indicates that the ``large wooded lot'' reference was in part a proxy for lot size and in part a genuine amenity signal---a decomposition that structured data alone could not have provided. Using Quebec City transactions and site inspections, \citet{desrosiers2002landscaping} estimate landscaping premiums of roughly 4 to 12\%; the text-based gradient, net of lot area, lies at the lower end of that range. Listings that need renovation are priced lower, with a gradient of 4 to 8\%, the sign expected from the capitalisation of deferred maintenance \citep{nowak2017quality, goodwin2014broker}. Listings that market a family-friendly or quiet setting are priced lower, in every specification including those with area fixed effects, which means that these words mark lower-priced segments within areas as well as between them; the equilibrium-sorting logic of \citet{kuminoff2013new} and the evidence of \citet{delmelle2021language} that advertisement text predicts neighbourhood composition both point the same way: listing language is as much about where a property is as about what it is.
12 12
13 −The \textbf{Land \& Nature} premium (+13.0\%) reflects the well-documented value of natural amenities and outdoor space in residential markets \citep{irwin2002effects, tyrvainen2005benefits}. This finding is particularly relevant in the Quebec context: using Quebec City transactions and site-inspection measures, \citet{desrosiers2002landscaping} estimate landscaping premiums ranging from roughly 4\% (hedges, landscaped curbs) to about 12\% (a landscaped patio) of house value. Our text-based measure recovers an amenity gradient of comparable direction and magnitude through the listing narrative alone, without site-level amenity data---evidence that the two measurement strategies tap the same underlying valuation.
13 +\subsection{What the Evidence Does Not Establish}
14 14
15 −The negative coefficient on \textbf{Family-Friendly} ($-$11.6\%) deserves careful interpretation. This does not imply that schools and parks reduce property values; rather, it reflects the systematic association between family-oriented marketing language and lower-priced suburban markets. After controlling for structural characteristics, family-friendly language serves as a residual proxy for suburban location where prices are lower. This is precisely the equilibrium-sorting logic emphasized by \citet{kuminoff2013new}: households sort across locations on price and amenities jointly, so language that marks a market segment inherits that segment's price level. The finding also echoes \citet{delmelle2021language}, who show that property-advertisement text is a strong predictor of neighborhood socioeconomic composition: listing language is as much about \textit{where} a property is as about \textit{what} it is. This illustrates the importance of interpreting hedonic coefficients as conditional marginal effects rather than causal estimates---a point emphasized by \citet{pakes2003reconsideration} in the broader context of hedonic identification.
15 +The first version of this paper reported an 8.5\% urgency discount for Motivated Seller language and compared it with the 3.7\% premium that \citet{levitt2008information} find for agent-owned homes. The comparison does not survive the revision. Motivated Seller is the dimension with the largest French--English similarity gap, and its coefficient falls to an insignificant $-2.9\%$ once language is controlled, to $-4.0\%$ (marginally significant) within FSAs, and to zero with the multilingual encoder. The listing-language literature does find that remarks signalling seller motivation are associated with lower prices and faster sales \citep{haag2000real, goodwin2014broker}; our data do not allow us to confirm a robust magnitude for Quebec asking prices. Similarly, the counter-intuitive signs on New Construction ($-10.5\%$) and Entry-Level (+10.4\%) in the baseline reverse with the multilingual encoder (+7.2\% and $-4.9\%$), and the negative signs on Bright \& Spacious and Energy Efficient reverse as well. These reversals are not evidence that one encoder is right and the other wrong; they are evidence that, in a block of 20 projections correlated at 0.66--0.97, the coefficient of any one dimension is defined by the vocabulary that happens not to be shared with the other nineteen, and that this residual vocabulary differs across encoders and across phrasings. The reference-phrasing experiment of Section~\ref{sec:extended} makes the same point from a different direction.
16 16
17 −The strong negative effect of \textbf{Motivated Seller} ($-$8.5\%) is consistent with the information asymmetry literature. \citet{levitt2008information} showed that real estate agents selling their own homes achieve prices about 3.7\% higher than when selling clients' homes, partly because they can conceal information about the urgency of the sale; our estimate implies that \textit{explicit} urgency disclosure is associated with a discount more than twice that size, which is coherent with the idea that overt urgency language is a stronger signal of a weak outside option than the subtle cues agents suppress. This result connects to the broader theory of strategic disclosure \citep{grossman1981informational, milgrom1981good}: in unraveling equilibria, transparency about motivation invites adverse inference, as buyers rationally read disclosed urgency as evidence of weak bargaining position. The listing-language literature reports the same qualitative pattern: remarks signaling seller motivation are associated with lower prices and faster sales \citep{haag2000real, goodwin2014broker}.
17 +The design itself contributes to the problem. Appendix~\ref{app:references} shows that several references share phrases---Land \& Nature includes ``bord de l'eau, acc\`es au lac'' (Waterfront), Modern/Contemporary includes ``construction neuve'' and ``\'eco\'energ\'etique'' (New Construction, Energy Efficient), Premium Location includes ``pr\`es des \'ecoles, des parcs, quartier familial'' (Family-Friendly). The principle of dimensional specificity stated in Section~\ref{sec:methodology} was not fully respected, and these overlaps are a plausible mechanism for the sign anomalies: when Modern/Contemporary absorbs the positive valuation of new and efficient construction, New Construction and Energy Efficient are left with the residual association of peripheral new developments. A redesign with disjoint vocabularies, or an explicit orthogonalisation of the references in embedding space, would be the first step for future applications.
18 18
19 −The surprising negative coefficient on \textbf{New Construction} ($-$10.5\%) warrants extended discussion. In most housing markets, ``new'' is a premium attribute. However, in Quebec's real estate geography, new residential construction is concentrated in peripheral suburban developments (e.g., Mirabel, Mascouche, Lachute) where land costs are lower. After controlling for structural characteristics, the ``new construction'' semantic dimension captures this locational sorting rather than a quality discount. This interpretation is supported by the quantile regression results, which show a diminished negative effect at higher quantiles---precisely the pattern expected if the coefficient proxies for peripheral location rather than an intrinsic quality penalty.
19 +\subsection{Language as a Confound in Multilingual Text-as-Data Applications}
20 20
21 −\subsection{Relation to Prior Findings}
22 −
23 −Situating the estimates against the closest prior work sharpens both agreements and departures.
24 −
25 −\textit{Agreement on the information content of text.} \citet{nowak2017quality} find that words in agent comments proxy for unobserved quality and that omitting them biases other hedonic coefficients; we corroborate this at the level of model fit (a 6-point $R^2$ gain) and extend it by giving the text features named economic content. \citet{shen2020text} conclude that property descriptions contain substantial information about otherwise unobserved quality; our results agree, and our decomposition (Figure~\ref{fig:r2_decomp}) quantifies the same conclusion in variance terms. The early remark-category studies \citep{haag2000real} and the vernacular studies \citep{goodwin2014broker, goodwin2018connotation} found sign patterns---premia for quality language, discounts for distress language---that match our forest plot dimension by dimension.
26 −
27 −\textit{Agreement on distributional heterogeneity.} The amplification of the Luxury premium at upper quantiles and the attenuation of condition/urgency discounts mirror the findings of \citet{zietz2007determinants}, who document that most attribute prices rise with the conditional price level, and of \citet{mcmillen2008changes}, who shows that coefficient heterogeneity---not just characteristics---drives changes in the price distribution.
28 −
29 −\textit{A departure from the prediction-first literature.} Studies that optimize prediction \citep{shen2020text, baur2023automated} report larger fit gains from unrestricted text representations than our 20 projections deliver; our own PCA benchmark reproduces this ordering (Table~\ref{tab:text_comparison}). The departure is deliberate: we accept a quantified fit penalty in exchange for coefficient-level interpretability, a trade that the prediction literature does not price.
30 −
31 −\textit{A parallel with vision-based studies.} \citet{glaeser2018computer} and \citet{poursaeed2018vision} extract quality from listing photographs and find, as we do with text, that unstructured listing content reveals price-relevant quality invisible to structured fields. That two different modalities produced by the same marketing process yield the same conclusion strengthens the case that structured hedonic variables systematically undermeasure quality---and suggests a natural extension combining both.
32 −
33 −\subsection{The Information Content of Agent Narratives}
34 −
35 −Our findings contribute to a broader literature on information production by market intermediaries. Real estate agents serve a dual role: they match buyers with properties and produce information about property characteristics through listing descriptions. The rhetoric of listings is deliberately crafted \citep{pryce2008rhetoric}, yet the economically significant coefficients on our semantic dimensions suggest that agents' textual descriptions contain genuine informational content---they are not merely ``cheap talk'' or undifferentiated marketing prose.
21 +The most consequential finding of the revision is methodological. Reference-based projection, like any dictionary method, compares each document with a fixed anchor; when the corpus is bilingual and the anchors are monolingual, the comparison measures language before it measures content. In our data this single confound accounts for 86\% of the variance of the mean similarity and for more than half of the apparent semantic gain, and it is correlated with price through the geography of the two language communities. The problem is not specific to housing: it arises whenever a text-as-data study pools documents written in different languages, or in different registers, and scores them against a single set of references \citep{gentzkow2019text, ash2023text}. Three remedies are available and we have applied all three: control for language explicitly, estimate within language, and use an encoder trained to align languages \citep{reimers2020multilingual}. The multilingual encoder is the most satisfactory because it removes the gap at the source and retains more information, but it also changes the individual coefficients, which shows that the choice of encoder is part of the specification and should be reported and varied as such.
36 22
37 −This interpretation is supported by two pieces of evidence. First, the signs of most semantic coefficients align with theoretical priors: luxury language commands premiums, renovation-need language is discounted, and urgency language penalizes prices. If listing descriptions were pure noise or uniform boilerplate, the semantic features would exhibit no systematic relationship with prices. Second, the stability of the coefficients across quantile regression, trimmed samples, and bootstrap inference (Section~\ref{sec:robustness}) indicates that the text-price associations are robust features of the data rather than artifacts of particular observations or distributional assumptions.
38 −
39 −At the same time, the correlational nature of our estimates precludes definitive conclusions about the mechanism. The positive coefficient on Luxury language, for instance, could reflect: (a) agents accurately describing genuinely luxurious properties that command higher prices; (b) the language itself influencing buyer perceptions and willingness to pay; or (c) an omitted variable (e.g., neighborhood prestige) correlated with both luxury language and price. Disentangling these mechanisms would require quasi-experimental variation in listing text---an approach feasible with A/B testing data from real estate platforms but beyond the scope of the present study.
40 −
41 −\subsection{Description Length as a Quality Signal}
42 −
43 −The significant positive effect of description length (+10.7\%) merits discussion. This finding may seem paradoxical given that bivariate correlations between similarity scores and price are uniformly negative (reflecting the tendency for lower-priced listings to have longer descriptions). The resolution lies in the multivariate structure: once we control for \textit{what} a description says (via the semantic similarities), \textit{how much} it says becomes a positive signal. Longer descriptions, conditional on content, may indicate agent effort, property complexity, or a genuine abundance of features to describe. This is consistent with \citet{shen2020text}, who find that the informational content of property descriptions proxies for unobserved quality, and with the listing-effort interpretation in \citet{goodwin2014broker}. One caveat is that descriptions in our data are truncated at approximately 700 characters (Section~\ref{sec:data}), so the length variable measures verbosity only up to this bound; the estimated coefficient should be read as the effect of length variation within the observed range.
23 +\subsection{Relation to Prior Findings}
44 24
45 −\subsection{Comparison with PCA-Based Approaches}
25 +On the information content of text, our results agree with \citet{nowak2017quality}, who show that words in agent comments proxy for unobserved quality, and with \citet{shen2020text}, who find substantial information about unobserved quality in property descriptions; our out-of-sample results quantify this information for Quebec asking prices at about four percentage points of $R^2$ and a fraction of a point of median absolute percentage error, net of language. On the magnitude of text gains relative to unrestricted representations, our principal-component and multilingual benchmarks reproduce the ordering reported by the prediction-oriented literature \citep{shen2020text, baur2023automated}: unrestricted features fit better, and the reference approach pays a fit penalty of about two points for its names. On the stability of text features across contexts, \citet{nowak2021dictionaries} show that real estate dictionaries differ across space and time; our finding that the same references yield different coefficients across languages and encoders is the embedding-space analogue of their result. On distributional heterogeneity, the rising Luxury gradient agrees with \citet{zietz2007determinants} and \citet{mcmillen2008changes}. On the parallel with listing photographs \citep{glaeser2018computer, poursaeed2018vision}, both modalities reveal quality that structured fields omit, and both face the attribution problem we document when their features are many and correlated.
46 26
47 −To contextualize our results, we compare the reference-based approach with the more standard PCA-based method on the same sample (Table~\ref{tab:text_comparison}). Applying PCA to the raw 384-dimensional embedding vectors and retaining 20 principal components---which together capture 49.5\% of the embedding variance---yields a larger fit improvement than the 20 reference similarities: adding the components to the structural baseline raises $R^2$ by 7.0 percentage points, versus 4.4 points for the reference projections. This ordering is unsurprising: the principal components are the linear combinations of the embedding space that maximize retained variance, so any fixed set of 20 projections, including ours, is weakly dominated in pure fit.
27 +\subsection{Description Length}
48 28
49 −What PCA cannot provide is economic content. A coefficient on ``PC3'' has no natural interpretation as a housing characteristic, cannot be communicated to appraisers or market participants, and is unstable across samples in its meaning even when stable in its fit. The reference-based approach deliberately trades roughly two percentage points of $R^2$ for features that are individually nameable, signable ex ante, and directly usable in the hedonic framework, where inference on implicit prices---not prediction---is the goal. This is the position argued on general grounds by \citet{rudin2019stop}: when a model informs high-stakes decisions, inherent interpretability is preferable to post hoc explanation of a black box \citep{ribeiro2016why, lundberg2017unified}. Researchers whose objective is purely predictive should use the unrestricted embedding space (or the full 384 dimensions with regularization); researchers who need interpretable implicit prices face the trade-off we quantify here.
29 +The positive coefficient on description length (+10.7\% in the baseline, +7.9\% within FSAs, +6.8\% with the corrected lot area) is one of the more stable text effects in the paper. Conditional on what a description says and on the language it is written in, a longer description is associated with a higher asking price, which is consistent with length proxying for broker effort, property complexity or an abundance of features worth describing \citep{shen2020text, goodwin2014broker}. The variable is truncated at approximately 700 characters, so the coefficient measures length variation within that range.
50 30
51 31 \subsection{Practical Implications}
52 32
53 −Our findings have several practical implications. For \textbf{automated valuation models (AVMs)}, incorporating semantic text features could meaningfully improve accuracy. The 6-percentage-point $R^2$ improvement suggests that AVMs relying solely on structured data---still the dominant design in mass appraisal \citep{kok2017big}---leave significant predictive power on the table. Moreover, our reference-based approach produces features that are computationally cheap to generate (requiring only a dot product between pre-computed embeddings) and stable across time.
54 −
55 −For \textbf{real estate appraisers and agents}, the results highlight which qualitative dimensions of listing language are most strongly associated with price variation. Agents crafting listing descriptions can leverage these findings to understand how different linguistic strategies relate to market positioning. However, we caution that the relationship is correlational: changing the words in a listing description is unlikely to change the sale price if the underlying property attributes remain unchanged.
56 −
57 −For \textbf{housing market researchers}, the reference-based framework offers a flexible tool for investigating qualitative dimensions of housing that have been difficult to operationalize. Researchers can define custom reference descriptions tailored to their specific research questions, making the approach portable to different markets, languages, and property types.
33 +For automated valuation, the results are encouraging but measured. Text features computed with a multilingual encoder improve out-of-sample $R^2$ by about three percentage points over a model with structure, length and language, and by about seven points over a structural model, at negligible computational cost; but the dominant sources of valuation error in these data are the absence of floor area and of fine location, and an AVM should address those first. Reference-based features have the advantage over principal components that they can be audited---an appraiser can read the reference that defines each one---but the disadvantage, documented here, that their individual weights are not stable to the phrasing of the references. For researchers, the recommended practice that emerges is to (i) report the language composition of the corpus and control for it or use a language-aligned encoder; (ii) design references with disjoint vocabularies; (iii) report block- and domain-level tests as the primary inferential objects; (iv) report the sensitivity of individual coefficients to reference phrasing; and (v) validate out of sample with folds that respect the spatial structure of the data \citep{roberts2017cross}. For brokers, the correlational nature of the estimates bears repeating: the coefficients describe how asking prices and descriptions co-vary, not what rewriting a description would do to the price a property fetches.
58 34
59 35 \subsection{Limitations}
60 36
61 −Several limitations should be acknowledged, and we discuss each in turn along with potential avenues for resolution.
62 −
63 −\textbf{Listing prices vs.\ transaction prices.} Our data consists of listing prices, not realized sale prices. List and sale prices differ systematically, and the gap varies with market conditions and marketing time \citep{haurin2010list}; the magnitude of this gap may correlate with our semantic measures (e.g., ``motivated seller'' listings may sell at a larger discount to listing price). If the listing-to-sale price ratio varies systematically with semantic content, our coefficient estimates may be biased. The direction of this bias is ambiguous: luxury language may be associated with a smaller listing premium (if agents of luxury properties price more accurately) or a larger one (if they price aspirationally). The availability of transaction-level data would allow estimation of the listing premium as a function of semantic content and would strengthen the analysis.
37 +\textbf{Asking prices.} The data are asking prices from a single snapshot of active listings. List and sale prices differ systematically, and the gap varies with market conditions and marketing time \citep{haurin2010list}; if the gap varies with the semantic content of the description---plausibly larger for listings that disclose urgency---the coefficients on sale prices would differ from those reported here. The estimates describe the pricing behaviour of sellers and brokers conditional on the text they wrote.
64 38
65 −\textbf{Cross-sectional identification.} The cross-sectional nature of our data prevents causal inference. As discussed in Section~\ref{sec:identification}, the relationship between listing language and price may reflect accurate quality description, strategic persuasion, or omitted variable correlation. While our robustness checks (Section~\ref{sec:robustness}) confirm the stability of the estimates across specifications, they do not address the fundamental identification concern. Future work using within-property variation---comparing successive listings for the same property with different agents or different textual strategies---could provide more credible causal identification, and recent work on textual strategies in housing \citep{alfano2022word} points toward research designs that exploit variation in listing composition; platform-level A/B experiments would be the gold standard.
39 +\textbf{Identification.} The cross-sectional design cannot separate the information, persuasion and omitted-location channels of Section~\ref{sec:identification}, and the fixed effects absorb only between-area location. Text is written after the asking price is set and by the same agent who sets it, so the estimates are associations in a jointly determined pair of outcomes. Within-property variation across successive listings, or platform experiments on listing text, would be required for causal statements; \citet{alfano2022word} point toward designs that exploit variation in listing composition.
66 40
67 −\textbf{Absence of spatial controls.} Our hedonic model does not include explicit locational variables (municipality fixed effects, distance to CBD, or spatial autoregressive terms), despite the well-established spatial dependence of housing prices \citep{anselin1988spatial, dubin1988estimation, can1992specification}. Some semantic dimensions---particularly Family-Friendly, New Construction, and Quiet \& Peaceful---likely capture locational variation as much as property-level attributes. Including municipality or census-tract fixed effects would absorb location-specific price levels, allowing the semantic coefficients to be interpreted more cleanly as within-location quality signals. However, this comes at the cost of eliminating between-location variation that the semantic features may legitimately capture. A spatial Durbin model \citep{lesage2009introduction} would provide a formal framework for decomposing direct and indirect (spillover) effects of semantic content, and the microdata methods of \citet{dube2014spatial} are directly applicable to our setting.
41 +\textbf{Missing structural information.} The baseline lacks floor area and measures lot size with mixed units. The revision corrects the second and addresses the first on a 36\% subsample; on that subsample the semantic block's increment is about one percentage point of $R^2$, and a full-sample estimate with floor area would likely be of that order.
68 42
69 −\textbf{Language model limitations.} The all-MiniLM-L6-v2 model was primarily trained on English text. While it handles French adequately---the language of most Quebec listings---a model specifically fine-tuned on French real estate text could potentially produce more nuanced embeddings. The model may fail to capture domain-specific nuances: for instance, ``plancher chauffant'' (heated floor) and ``radiant heating'' carry identical meaning but may not embed identically across languages. Cross-lingual embedding models optimized for French, such as CamemBERT \citep{martin2020camembert} or FlauBERT \citep{le2020flaubert}, represent promising alternatives for future work. \citet{conneau2020unsupervised} document material performance losses when multilingual models are applied to specialized monolingual tasks, suggesting that our estimates may understate the true informational content of listing descriptions.
43 +\textbf{Encoder and language.} The baseline encoder was trained mainly on English and the references are French; 40\% of the corpus is English. We have documented the consequences and provided multilingual estimates, but a French-specific or domain-adapted model \citep{martin2020camembert, le2020flaubert} might extract more; \citet{conneau2020unsupervised} document material performance losses when general multilingual models are applied to specialised monolingual tasks.
70 44
71 −\textbf{Reference description subjectivity.} Our 20 reference descriptions represent one researcher's operationalization of qualitative housing dimensions. Alternative formulations could yield different similarity scores and potentially different hedonic estimates. While we designed the references following principled criteria (semantic saturation, dimensional specificity, linguistic consistency), the approach lacks a formal optimality criterion. A systematic sensitivity protocol---averaging similarities over multiple paraphrases per dimension, varying reference length, and comparing French-only against bilingual formulations---would quantify the dependence of the estimates on any single phrasing. One could also envision deriving reference descriptions empirically, for example by clustering listing embeddings and using cluster centroids as data-driven references, though this sacrifices the ex ante interpretability that motivated our approach. The full text of all 20 references is reproduced in Appendix Table~\ref{tab:reference_texts} to make this dependence transparent and replicable.
45 +\textbf{Reference design.} The 20 references are one operationalisation, with overlapping vocabularies, and the coefficients attached to them are sensitive to phrasing. The paper quantifies this dependence but does not resolve it; a principled procedure for designing or orthogonalising references is the natural next step.
72 46
73 −\textbf{Multicollinearity among similarity features.} The strong correlations among similarity dimensions (0.66--0.97; Figure~\ref{fig:corr_matrix}) introduce substantial multicollinearity: VIFs average 17.2 and exceed the conventional threshold of 10 for 16 of the 20 dimensions (Section~\ref{sec:robustness}). The consequences are visible in the regularized-selection exercise, where the Lasso retains only four block representatives rather than the sixteen individually significant variables. Individual coefficient magnitudes should therefore be interpreted with caution: the ``Luxury'' premium of 14.2\% includes variation that is shared with the Renovated and Bright \& Spacious dimensions, and the data cannot fully apportion credit within such correlated blocks. The block-level conclusions---that semantic content jointly adds 6 percentage points of explanatory power with theoretically sensible signs---are unaffected. Ridge regression or principal component regression on the similarity features would provide bounds on the total effect of correlated quality dimensions, and reducing the number of references (or orthogonalizing them ex ante) is a natural design lever for future applications.
47 +\textbf{Collinearity.} The 20 similarities are correlated at 0.66--0.97 with variance inflation factors averaging 17. Block- and domain-level conclusions are unaffected; dimension-level conclusions are, and we have restricted our claims accordingly.
74 48
75 −\textbf{Temporal stability.} Our analysis captures a single cross-section of listings. The relationship between textual content and prices may vary over time as market conditions change, buyer preferences evolve, and listing language conventions shift. During a seller's market, ``motivated seller'' language may carry a larger discount because it is rarer and more diagnostic; during a buyer's market, such language may be more common and less informative. Longitudinal analysis would be needed to assess the stability of semantic implicit prices across market cycles.
49 +\textbf{Temporal stability.} The data are a single cross-section from January 2026. The relation between text and prices may vary over the cycle---urgency language, for instance, may be more diagnostic when it is rarer---and longitudinal data would be needed to assess this.
added paper/sections/extended.tex +68 −0
@@ -0,0 +1,68 @@
1 +% Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +%
3 +%======================================================================
4 +\section{Extended Specifications and Validation} \label{sec:extended}
5 +%======================================================================
6 +
7 +The analyses in this section were added in the present revision. They address, in turn, the language of the listings, unobserved location and clustered inference, measurement of lot and floor area, the attribution of effects to domains, out-of-sample performance, the sensitivity of the estimates to the phrasing of the references, and the choice of encoder. Table~\ref{tab:spec_summary} summarises the incremental explanatory power of the semantic block across all specifications; Table~\ref{tab:extended_specs} and Figure~\ref{fig:spec_stability} report the individual coefficients in the main ones.
8 +
9 +\input{tables/tab_spec_summary}
10 +
11 +\subsection{The Language of the Listing} \label{sec:language}
12 +
13 +Section~\ref{sec:data_language} established that 40\% of the descriptions are in English and that English listings score about 0.23 lower on every French reference with the baseline encoder. Since English listings are also more expensive, every similarity is negatively correlated with price through language, and the regression coefficients of Model~D are identified partly from the comparison of French with English listings. Adding indicators for English and mixed-language descriptions (specification D-L in Table~\ref{tab:spec_summary}) raises the $R^2$ from 0.512 to 0.518, and the English indicator itself carries a coefficient of +19.5\% conditional on structure and length. More importantly, the incremental $R^2$ of the 20 similarities falls from 0.047 in Model~D to 0.017 once language is controlled: about 63\% of the apparent semantic gain of the first version is attributable to the language composition of the corpus. The block remains jointly significant ($F = 22.6$ with HC3 standard errors, 17.6 when clustered by FSA; $p < 0.001$ in both cases), and 16 of the 20 coefficients remain individually significant.
14 +
15 +The language subsamples confirm that the semantic information is not an artefact of the pooled comparison. Within French listings only ($n = 9{,}843$) and with FSA fixed effects, the block adds 0.029 to the $R^2$ and 15 coefficients are significant; within English listings only ($n = 6{,}779$) it adds 0.024, with 15 significant coefficients, even though the references are French and the encoder is monolingual. The signs of the core dimensions are the same in both languages (Table~\ref{tab:extended_specs}): Luxury and Land \& Nature are positive and Family-Friendly, Quiet \& Peaceful and Premium Location are negative in each subsample. Several other coefficients differ across languages, which is itself evidence that the monolingual projection does not measure the same thing in the two halves of the corpus.
16 +
17 +\subsection{Location Fixed Effects and Clustered Standard Errors}
18 +
19 +Specification D-L with 415 FSA fixed effects raises the $R^2$ to 0.667 (within $R^2$ 0.458), and municipality fixed effects (1,061 groups) raise it to 0.710. Location thus explains far more of the variation in asking prices than the semantic block does---a useful corrective to the first version's suggestion that the text features were comparable in importance to neighbourhood controls. Within FSAs, the semantic block still adds 0.020 to the $R^2$ (0.016 within municipalities), with $F = 31.4$ and 18 of the 20 coefficients significant when standard errors are clustered by FSA. The English indicator falls from +19.5\% to +9.1\% within FSAs: about half of the English premium is the location of anglophone neighbourhoods, and half persists within them.
20 +
21 +Clustering matters for inference but not for the conclusions. For the baseline Model~D, clustering by FSA lowers the robust block $F$ from 54.3 to 20.1 and the count of significant coefficients from 16 to 14; the standard errors of the semantic coefficients rise by 50\% on average (between 22\% and 107\%). This is the expected consequence of within-area correlation of listing prices \citep{cameron2015practitioner}, and we regard the clustered estimates as the appropriate ones for all specifications that use location \citep{abadie2023when}.
22 +
23 +\input{tables/tab_extended_specs}
24 +
25 +\begin{figure}[!htbp]
26 +\centering
27 +\includegraphics[width=0.9\textwidth]{fig12_specification_stability.pdf}
28 +\caption{Semantic coefficients across specifications and encoders.}
29 +\label{fig:spec_stability}
30 +\begin{minipage}{0.9\textwidth}
31 +\footnotesize
32 +Notes: Price impact per standard deviation (Equation~\ref{eq:impact}) of each dimension in the baseline Model~D (HC3), in D-L with FSA fixed effects and FSA-clustered standard errors, and in the same specification with the multilingual encoder. Filled markers are significant at 5\%; hollow markers are not. Dimensions are ordered by their baseline coefficient.
33 +\end{minipage}
34 +\end{figure}
35 +
36 +Table~\ref{tab:extended_specs} shows how the individual coefficients respond. Five dimensions keep their sign and significance in every column: Luxury (+14.2\% in the baseline, +10.7\% within FSAs, +4.4\% and +7.6\% in the French and English subsamples), Land \& Nature (+13.0\%, +15.2\%, +10.2\%, +11.1\%), Family-Friendly ($-11.6\%$, $-6.4\%$, $-2.4\%$, $-4.1\%$), Quiet \& Peaceful ($-9.5\%$, $-11.7\%$, $-9.4\%$, $-5.3\%$) and Needs Renovation ($-7.9\%$, $-3.6\%$, insignificant in the French subsample, $-3.7\%$ in the English one). Modern/Contemporary and Waterfront remain positive and significant in all MiniLM specifications. Motivated Seller, by contrast, loses most of its baseline discount once language is controlled ($-8.5\%$ to $-2.9\%$, insignificant) and is only marginally significant within FSAs ($-4.0\%$): the urgency discount of the first version was in large part a language effect, Motivated Seller being the dimension with the largest French--English similarity gap (0.385 against 0.076). Panoramic View changes sign, and Premium Location becomes more negative within FSAs ($-12.6\%$), which is consistent with its reference text (schools, parks, family neighbourhoods) marking suburban segments rather than premium ones.
37 +
38 +\subsection{Measurement of Lot and Floor Area}
39 +
40 +Replacing the raw lot-size field by the logarithm of the unit-corrected lot area raises the $R^2$ of the FSA specification from 0.667 to 0.725 (within $R^2$ from 0.458 to 0.552): a one-standard-deviation increase in log lot area is associated with a 40\% higher asking price within an FSA, the largest structural coefficient in the model. The semantic block's increment falls to 0.013, and 14 coefficients remain significant. The Land \& Nature coefficient falls from +15.2\% to +4.2\%: much of what the ``large wooded lot'' reference captured was the lot area itself, which the raw field had failed to measure. Waterfront and Pool \& Landscaping, by contrast, keep or increase their coefficients (+10.9\% and +11.6\%), and Luxury (+10.4\%) and Modern/Contemporary (+9.6\%) are unchanged. On the 6,228 listings that report an interior floor area, adding its logarithm raises the $R^2$ to 0.773; the semantic block adds 0.011 and 10 coefficients remain significant. The semantic features therefore survive the inclusion of the two size variables that the baseline lacked or mismeasured, with a smaller incremental contribution.
41 +
42 +\subsection{Domain-Level Block Tests}
43 +
44 +Because the 20 dimensions are grouped into six domains (Table~\ref{tab:references}), Table~\ref{tab:block_tests} tests the joint significance of each domain's coefficients in specification D-L, with and without FSA fixed effects. Every domain is jointly significant in both specifications. Location \& Setting is by far the strongest ($F = 67.8$ within FSAs), followed by Quality \& Standing and Style \& Character; Market Signals (Income/Investment and Motivated Seller) is the weakest and is only marginally significant within FSAs ($F = 3.1$, $p = 0.046$). Domain-level inference is less sensitive to the arbitrary allocation of shared vocabulary among references than dimension-level inference, and we recommend it as the primary unit of interpretation for reference-based designs.
45 +
46 +\input{tables/tab_block_tests}
47 +
48 +\subsection{Out-of-Sample Validation}
49 +
50 +Table~\ref{tab:oos} reports five-fold cross-validation with random folds and with folds that hold out entire FSAs (Equations~\ref{eq:r2oos}--\ref{eq:mdape}). Two preliminary remarks. First, the raw lot-size field is not merely uninformative but harmful out of sample: with an extreme value in a held-out fold, the structural model's out-of-sample $R^2$ is $-1.04$; all other rows use the unit-corrected lot area, which also explains why the out-of-sample $R^2$ of the structural model (0.480) exceeds its in-sample counterpart in Table~\ref{tab:model_comparison}. Second, the sample is large relative to the number of regressors, so little shrinkage is expected and the in-sample gains should carry over.
51 +
52 +\input{tables/tab_oos}
53 +
54 +They do. Adding the 20 similarities to the structural-plus-length model raises the out-of-sample $R^2$ from 0.489 to 0.528 with random folds and from 0.484 to 0.522 with FSA-grouped folds, and lowers the median absolute percentage error from 27.1\% to 26.9\%. Adding language indicators to the structural-plus-length model achieves most of this on its own (0.523), and the similarities then add a further 0.011; the multilingual similarities add 0.028 over the language-augmented model and reach the best performance of all specifications (0.551 random, 0.545 spatial, MdAPE 26.4\%), slightly ahead of 20 principal components (0.544 and 0.537). The ordering of specifications is the same under spatial and random folds, and the spatial penalty is small (about 0.006 of $R^2$), so the predictive value of the text generalises to areas not seen in estimation. The gains in valuation accuracy are nevertheless modest in absolute terms---less than one percentage point of MdAPE---because the dominant source of error in these models is the absence of location and floor area, not the absence of text.
55 +
56 +\subsection{Sensitivity to the Phrasing of the References}
57 +
58 +The first version acknowledged that the 20 references embody one researcher's choices but did not quantify the consequence. Table~\ref{tab:reference_sensitivity} does so with three systematic perturbations: keeping only the first half of each reference's comma-separated phrases, only the second half, or reversing their order. The perturbed references are re-encoded and Model~D re-estimated.
59 +
60 +\input{tables/tab_reference_sensitivity}
61 +
62 +The similarity scores are very stable---the perturbed and baseline scores correlate at 0.93 to 0.99 on average across dimensions---and so is the block-level information: the incremental $R^2$ of the block lies between 0.042 and 0.054 against 0.048 in the baseline, and the joint test is always decisive. The individual coefficients are not stable. Reversing the order of the phrases, which changes the texts least, yields coefficients correlated at 0.81 with the baseline and preserves 88\% of the significant signs; keeping the first half yields a correlation of 0.63 and 81\% sign agreement; keeping the second half yields a correlation of 0.02 and 62\% sign agreement, with the Luxury coefficient turning negative and Land \& Nature turning negative. The explanation is the one anticipated in Section~\ref{sec:results}: with 20 highly collinear regressors, a small change in the shared variance among references redistributes the block's explanatory power among its members, so that the vector of coefficients---though not their sum---depends on wording choices that have no economic content. A reader who wishes to use the individual gradients of Table~\ref{tab:full_results} should regard them as one draw from a distribution over admissible phrasings, whose dispersion this table approximates.
63 +
64 +\subsection{A Multilingual Encoder}
65 +
66 +Finally, we replace all-MiniLM-L6-v2 by paraphrase-multilingual-MiniLM-L12-v2, a model distilled so that translations of a sentence receive similar embeddings \citep{reimers2020multilingual}, re-encode the references and the 17,087 descriptions, and recompute the 20 similarities (``ML'' specifications in Table~\ref{tab:spec_summary}). The multilingual similarities correlate only moderately with the baseline ones (0.33 to 0.59 across dimensions), and they largely remove the language gap (Table~\ref{tab:language}). Their information content is greater: the block adds 0.057 to the $R^2$ of the structural-plus-length model, 0.038 once language is controlled, 0.039 within FSAs and 0.028 with the corrected lot area---roughly twice the increments obtained with the baseline encoder in the corresponding specifications---with block $F$-statistics of 52 to 71. Out of sample the multilingual specification is the best of all (Table~\ref{tab:oos}).
67 +
68 +The individual coefficients, however, differ from the baseline in ways that bear directly on the interpretability claim (last column of Table~\ref{tab:extended_specs} and Figure~\ref{fig:spec_stability}). Luxury (+4.5\%), Land \& Nature (+22.1\%), Family-Friendly ($-7.4\%$), Quiet \& Peaceful ($-6.0\%$) and Needs Renovation ($-4.5\%$) keep their signs and significance---the same five dimensions that were stable across the MiniLM specifications. Entry-Level becomes negative ($-4.9\%$) and New Construction positive (+7.2\%), which are the signs one would expect a priori and the opposite of the baseline; Energy Efficient and Bright \& Spacious also change sign. Modern/Contemporary, Waterfront, Motivated Seller and Premium Location become insignificant, and Finished Basement and Pool \& Landscaping become strongly negative. With a different encoder, the same reference texts define different directions in a different space, and only those dimensions whose vocabulary is both distinctive and strongly price-related survive the change. The multilingual encoder is the appropriate choice for this bilingual corpus, and we regard the ML specifications with language indicators and FSA fixed effects as the preferred estimates of this paper; but the lesson of the comparison is general. Reference-based projection delivers a robust, interpretable statement at the level of the block and of a few well-separated dimensions, not twenty robust implicit prices.
modified paper/sections/introduction.tex +8 −10
@@ -4,20 +4,18 @@
4 4 \section{Introduction}
5 5 %======================================================================
6 6
7 −Hedonic pricing models have been the dominant empirical framework for estimating the implicit prices of housing characteristics since the seminal contributions of \citet{rosen1974hedonic} and \citet{lancaster1966new}, building on a quality-adjustment tradition that dates back to the earliest hedonic price indexes \citep{griliches1971price}. The standard approach decomposes observed transaction prices into the marginal contributions of structural attributes (bedrooms, bathrooms, lot size), locational factors (neighborhood quality, proximity to amenities), and environmental characteristics \citep{sirmans2005composition}. Decades of empirical work have refined these models, establishing which structural and spatial variables explain the largest shares of price variation \citep{sirmans2006empirical, malpezzi2003hedonic}, clarifying the conditions under which hedonic estimates identify preference parameters \citep{ekeland2004identification, kuminoff2013new}, and embedding the framework in the operational infrastructure of property taxation, mass appraisal, and automated valuation models that price trillions of dollars of residential real estate \citep{kok2017big}.
7 +Hedonic pricing models have been the dominant empirical framework for estimating the implicit prices of housing characteristics since \citet{lancaster1966new} and \citet{rosen1974hedonic}, building on a quality-adjustment tradition that dates back to the earliest hedonic price indexes \citep{griliches1971price}. The standard approach decomposes observed prices into the marginal contributions of structural attributes (bedrooms, bathrooms, lot size), locational factors (neighbourhood quality, proximity to amenities) and environmental characteristics \citep{sirmans2005composition}. Decades of empirical work have refined these models, establishing which structural and spatial variables matter most \citep{sirmans2006empirical, malpezzi2003hedonic}, clarifying the conditions under which hedonic estimates identify preference parameters \citep{ekeland2004identification, kuminoff2013new}, and embedding the framework in the operational infrastructure of property taxation, mass appraisal and automated valuation models \citep{kok2017big}.
8 8
9 −Yet a persistent limitation of hedonic models is that they can only price attributes that the econometrician observes and measures. Property listing descriptions---the free-text narratives written by real estate agents to market properties---contain qualitative information that structured data fields fail to capture. These descriptions communicate the quality of finishes, the ambiance of a neighborhood, the motivation of the seller, the architectural character of a home, and the lifestyle a property affords. A listing that describes ``spa-like master bathroom with heated marble floors'' conveys quality information fundamentally different from one that states ``bathroom needs updating.'' Both properties may have the same number of bathrooms, yet the hedonic price contribution differs enormously. As \citet{pakes2003reconsideration} argued, standard hedonic regressions yield biased implicit price estimates when important characteristics are unobservable to the econometrician but observable to market participants---precisely the situation that listing text addresses. \citet{bajari2005demand} formalize this unobserved-characteristics problem in a structural hedonic setting; listing narratives offer a direct, scalable measurement of the missing quality dimensions.
9 +A persistent limitation of hedonic models is that they can only price attributes that the econometrician observes. Property listing descriptions---the free-text narratives written by real estate brokers to market properties---contain qualitative information that structured fields do not record: the quality of finishes, the setting of the lot, the motivation of the seller, the architectural character of a home. A listing that describes a ``spa-like bathroom with heated marble floors'' conveys information that a bathroom count does not, and two properties with identical structural records can differ enormously in the quality the text reveals. \citet{pakes2003reconsideration} and \citet{bajari2005demand} show that unobserved characteristics bias the implicit prices of the observed ones; listing narratives offer a direct and scalable measurement of some of the missing dimensions.
10 10
11 −The opportunity to exploit this information has grown with the text-as-data movement in empirical economics \citep{gentzkow2019text, ash2023text}, which has turned unstructured text into a standard input for measurement in finance \citep{loughran2016textual}, monetary policy \citep{hansen2017transparency}, and labor markets \citep{marinescu2020opening}. Despite this momentum, the hedonic pricing literature has been slow to incorporate unstructured text, and the approaches used to date face a fundamental tradeoff. Keyword and vernacular methods \citep{haag2000real, nowak2017quality, goodwin2014broker} are interpretable but semantically shallow: they cannot recognize that ``quartz countertops'' and ``premium stone surfaces'' convey similar quality information. Sentiment and connotation measures \citep{goodwin2018connotation, zhu2023sentiment} reduce multidimensional quality descriptions to one or two polarity scores. Topic models \citep{blei2003latent} capture latent themes but produce factors that are difficult to interpret and unstable in short, formulaic listing texts. Most recently, machine learning pipelines built on rich text representations \citep{shen2020text, baur2023automated, devlin2019bert} extract substantially more price-relevant information, but the resulting features are opaque---effective for prediction but unsuitable for economic inference where the goal is to estimate the implicit prices of identifiable housing characteristics.
11 +The opportunity to exploit this information has grown with the text-as-data movement in empirical economics \citep{gentzkow2019text, ash2023text}, which has turned unstructured text into a standard measurement input in finance \citep{loughran2016textual, garcia2023colour}, monetary policy \citep{hansen2017transparency} and labour markets \citep{marinescu2020opening}. The housing applications to date face a trade-off between semantic depth and interpretability. Keyword and vernacular methods \citep{haag2000real, nowak2017quality, goodwin2014broker, nowak2021dictionaries} are interpretable but lexically brittle: they cannot recognise that ``quartz countertops'' and ``premium stone surfaces'' convey similar information. Sentiment and connotation measures \citep{goodwin2018connotation, zhu2023sentiment} compress multidimensional quality descriptions into one or two polarity scores. Topic models \citep{blei2003latent} capture latent themes whose content is difficult to name ex ante and unstable in short, formulaic texts. Machine learning pipelines built on rich text representations \citep{shen2020text, baur2023automated} extract substantially more price-relevant information, but their features are opaque---useful for prediction, unsuitable for inference about identifiable housing characteristics.
12 12
13 −This paper proposes a \textit{concept-projection} approach to text-augmented hedonic pricing. Rather than using transformer embeddings as black-box predictors, we project them onto economically interpretable semantic anchors. The framework proceeds in four stages. First, we encode each property listing's \textit{PublicRemarks} field into a dense 384-dimensional vector using the all-MiniLM-L6-v2 sentence transformer \citep{wang2020minilm}. Second, we define 20 reference descriptions, each carefully designed to embody a specific qualitative housing dimension---luxury finishes, renovation status, architectural style, waterfront access, seller motivation, and others. Third, we compute the cosine similarity between each listing's embedding and each reference embedding, yielding 20 interpretable scalar features per property. Fourth, we integrate these similarity features into a semi-logarithmic hedonic pricing model estimated by OLS with heteroskedasticity-robust standard errors. In the taxonomy of text-as-data methods, the approach is a semantic generalization of the dictionary method \citep{gentzkow2019text, loughran2016textual}: each reference description plays the role of a word list, but the matching is performed in embedding space, so paraphrases, synonyms, and cross-lingual equivalents load on the intended dimension. The objective is not to claim that changing listing words mechanically changes prices, but to measure whether semantic content embedded in listing narratives captures price-relevant information omitted from structured hedonic variables.
13 +This paper proposes and evaluates a \textit{concept-projection} approach to text-augmented hedonic pricing. Each listing's \textit{PublicRemarks} field is encoded into a 384-dimensional vector with a sentence transformer \citep{reimers2019sentence, wang2020minilm}; 20 short reference descriptions, each written to embody one qualitative housing dimension, are encoded with the same model; the cosine similarity between a listing and each reference yields 20 named scalar features; and the features enter a semi-logarithmic hedonic model estimated by least squares with heteroskedasticity-robust standard errors. In the taxonomy of text-as-data methods, the procedure is a semantic generalisation of the dictionary method \citep{gentzkow2019text, loughran2016textual}: each reference plays the role of a word list, but the matching is performed in embedding space, so paraphrases and synonyms load on the intended dimension. The objective is not to claim that changing listing words changes prices, but to measure whether, and how much, the semantic content of listing narratives carries price-relevant information omitted from structured hedonic variables---and how far the individual projections can be trusted as implicit prices.
14 14
15 −Quebec provides a particularly interesting empirical context for this analysis. The province's real estate market exhibits substantial heterogeneity---from luxury urban properties in Montr\'eal and Qu\'ebec City to affordable family homes in suburban developments and waterfront properties in the Laurentians and Eastern Townships. Listing descriptions are predominantly in French with occasional English phrases, creating a bilingual corpus that tests the cross-lingual capabilities of the embedding model. The market spans urban, suburban, and peripheral segments with distinct price levels and qualitative characteristics, offering rich variation for semantic analysis. A well-established hedonic research tradition using Quebec microdata \citep{desrosiers2002landscaping, dube2014spatial} provides local benchmarks for the amenity values our text-based measures should---and, as we show, do---recover.
15 +Quebec provides an informative setting. The provincial market spans luxury urban properties in Montr\'eal and Qu\'ebec City, suburban family homes, and waterfront properties in the Laurentians and the Eastern Townships. The listing corpus is bilingual: 58\% of the descriptions in our sample are written in French and 40\% in English, which creates an opportunity to test the cross-lingual behaviour of embedding-based features and, as we show, a confound that must be controlled. A well-established hedonic tradition using Quebec microdata \citep{desrosiers2002landscaping, dube2014spatial} supplies local benchmarks for the amenity values that text-based measures should recover.
16 16
17 −Our contributions are threefold. First, we demonstrate that semantic features derived from listing text capture economically significant information beyond what structural variables measure. Adding the 20 cosine similarity variables to a standard hedonic specification increases the adjusted $R^2$ from 0.452 to 0.511 for 17,087 single-family homes ($F = 99.53$, $p < 0.001$). The semantic features contribute 9.3\% of the full model's explained variance---comparable to the gains from adding neighborhood controls in typical hedonic studies \citep{sirmans2006empirical}.
17 +The paper makes three contributions. First, it establishes that the semantic block carries information beyond structural variables. For 17,087 single-family listings, adding the 20 similarities and description length to a structural hedonic model raises the adjusted $R^2$ from 0.452 to 0.511, and the gain is confirmed out of sample: in five-fold cross-validation with random folds and with folds that hold out entire forward sortation areas, the semantic features raise the out-of-sample $R^2$ by about four percentage points and lower the median absolute percentage error of the price prediction. Second, it quantifies how much of this information is genuinely semantic. Because the references are written in French and 40\% of the listings are in English, the language of the listing explains 86\% of the variance of the mean similarity score and accounts for more than half of the apparent semantic gain; net of language indicators and of 415 forward-sortation-area fixed effects, with standard errors clustered by area, the block adds 2.0 percentage points of $R^2$ with the baseline encoder and 3.9 points with a multilingual encoder, and remains jointly significant in every specification and in each language subsample. Third, it evaluates the interpretability claim that motivates the method. The individual implicit price gradients depend on the phrasing of the references and on the encoder: perturbing the reference texts leaves the similarity scores almost unchanged (correlations of 0.93--0.99) but can reorder the coefficients, and switching to a multilingual encoder reverses several signs. A core of dimensions---Luxury, Land \& Nature, Family-Friendly, Quiet \& Peaceful and Needs Renovation---keeps its sign and significance across all specifications and both encoders; others, including Motivated Seller, New Construction and Entry-Level, do not. We therefore read the semantic coefficients as conditional associations within a correlated block of quality signals, robust at the level of the block and of a few well-separated dimensions, and we discuss what this implies for the use of reference-based projections in appraisal and research.
18 18
19 −Second, we estimate the implicit price gradients associated with qualitative housing dimensions that have been largely invisible to the hedonic literature. Listings semantically closer to modern/contemporary references are associated with 16.4\% higher prices per standard deviation; luxury-oriented language with 14.2\% premiums; and land/nature descriptions with 13.0\% premiums. Conversely, renovation-need language is associated with 7.9\% discounts and seller-urgency language with 8.5\% discounts. Quantile regressions reveal that these associations are heterogeneous across the price distribution: luxury premiums are amplified at upper quantiles, consistent both with quality complementarities and with the broader finding that implicit prices vary across the conditional price distribution \citep{zietz2007determinants, mcmillen2008changes}.
19 +Relative to the first version of this paper, the present revision adds the language analysis, fixed effects and clustered inference, a unit-corrected lot-size measure, a floor-area subsample, domain-level block tests, out-of-sample validation, a reference-phrasing sensitivity analysis and a multilingual encoder. All headline numbers of the first version are reproduced and retained as the baseline; the new analyses qualify their interpretation rather than replace them.
20 20
21 −Third, the reference-based approach offers a methodological contribution that resolves the depth-interpretability tension in text-augmented hedonic models. Unlike PCA-based or neural-network-based approaches that yield opaque features, each of our similarity measures corresponds to a named, researcher-defined qualitative dimension with a clear coefficient estimate---an ex ante interpretable design in the spirit advocated by \citet{rudin2019stop} for high-stakes applications. This makes the results directly useful for real estate appraisal, market analysis, and automated valuation models (AVMs), and the methodology is portable to any domain where free-text descriptions accompany structured economic data. In doing so, the paper speaks simultaneously to three audiences: housing economists seeking to price unobserved quality, text-as-data practitioners seeking interpretable feature construction, and the interpretable machine learning community seeking economically grounded applications.
22 −
23 −The remainder of the paper is organized as follows. Section~\ref{sec:literature} reviews the four literatures this work draws on. Section~\ref{sec:methodology} describes the methodological framework, including the identification strategy. Section~\ref{sec:data} presents the data and descriptive statistics. Section~\ref{sec:results} reports the empirical results. Section~\ref{sec:robustness} presents a comprehensive robustness analysis. Section~\ref{sec:discussion} discusses interpretation, implications, and limitations. Section~\ref{sec:conclusion} concludes with directions for future research.
21 +The remainder of the paper is organised as follows. Section~\ref{sec:literature} reviews the four literatures on which this work draws. Section~\ref{sec:methodology} describes the method, the estimating equations and the scope of inference. Section~\ref{sec:data} presents the data, including the language composition of the corpus. Section~\ref{sec:results} reports the baseline results, Section~\ref{sec:robustness} the robustness checks of the first version, and Section~\ref{sec:extended} the extended specifications and validation exercises added in this revision. Section~\ref{sec:discussion} interprets the findings against the literature and states their limitations. Section~\ref{sec:conclusion} concludes.
modified paper/sections/literature.tex +14 −14
@@ -8,31 +8,31 @@ This paper sits at the intersection of four literatures: the hedonic pricing tra
8 8
9 9 \subsection{Hedonic Pricing Theory and Housing Markets}
10 10
11 −The idea that the price of a differentiated good can be decomposed into the implicit prices of its characteristics predates modern housing economics: hedonic price indexes were computed for automobiles as early as the 1930s, and the approach was systematized for quality-adjusted price measurement by \citet{griliches1971price}. Its theoretical foundations rest on \citet{lancaster1966new}, who reconceptualized consumer theory around the characteristics of goods rather than goods themselves, and \citet{rosen1974hedonic}, who formalized the framework for differentiated product markets. In Rosen's model, the observed market price of a differentiated good reflects the equilibrium of supply and demand for its constituent characteristics, allowing the researcher to recover the implicit marginal prices of individual attributes through regression analysis. \citet{palmquist1984estimating} extended the theoretical framework by showing how second-stage supply and demand identification depends on exogenous variation in household characteristics and builder cost structures, while \citet{epple1987hedonic} demonstrated that under certain conditions the hedonic price function is unique and recoverable. The modern identification literature has clarified both the power and the limits of the approach: \citet{ekeland2004identification} establish conditions under which preferences can be recovered from a single hedonic market, \citet{bajari2005demand} develop estimators that accommodate unobserved product characteristics---the very problem that listing text addresses in our setting---and \citet{kuminoff2013new} survey how equilibrium sorting across housing markets shapes the interpretation of hedonic estimates. This literature underpins the interpretive caution we adopt in Section~\ref{sec:identification}: cross-sectional hedonic coefficients are equilibrium price gradients, not structural willingness-to-pay parameters.
11 +The idea that the price of a differentiated good can be decomposed into the implicit prices of its characteristics predates modern housing economics: hedonic price indexes were computed for automobiles as early as the 1930s, and the approach was systematised for quality-adjusted price measurement by \citet{griliches1971price}. Its theoretical foundations rest on \citet{lancaster1966new}, who reconceptualised consumer theory around the characteristics of goods rather than goods themselves, and \citet{rosen1974hedonic}, who formalised the framework for differentiated product markets. In Rosen's model, the observed market price of a differentiated good reflects the equilibrium of supply and demand for its constituent characteristics, allowing the researcher to recover the implicit marginal prices of individual attributes through regression analysis. \citet{palmquist1984estimating} extended the theoretical framework by showing how second-stage supply and demand identification depends on exogenous variation in household characteristics and builder cost structures, while \citet{epple1987hedonic} demonstrated that under certain conditions the hedonic price function is unique and recoverable. The modern identification literature has clarified both the power and the limits of the approach: \citet{ekeland2004identification} establish conditions under which preferences can be recovered from a single hedonic market, \citet{bajari2005demand} develop estimators that accommodate unobserved product characteristics---the very problem that listing text addresses in our setting---and \citet{kuminoff2013new} survey how equilibrium sorting across housing markets shapes the interpretation of hedonic estimates. This literature underpins the interpretive caution we adopt in Section~\ref{sec:identification}: cross-sectional hedonic coefficients are equilibrium price gradients, not structural willingness-to-pay parameters.
12 12
13 13 In the housing context, the hedonic approach yields the canonical specification:
14 14 \begin{equation}
15 15 \ln(P_i) = \alpha + \bfbeta' \bfX_i + \eps_i \label{eq:hedonic}
16 16 \end{equation}
17 −where $P_i$ is the price of property $i$, $\bfX_i$ is a vector of structural, locational, and neighborhood attributes, and $\bfbeta$ captures the implicit marginal prices. The semi-logarithmic functional form, recommended by \citet{halvorsen1981choice} and widely adopted in the literature, allows coefficients to be interpreted as approximate percentage changes in price for a unit change in the characteristic. \citet{cropper1988choice} evaluated alternative functional forms through Monte Carlo experiments, finding that simpler parametric specifications (linear and log-linear) outperform flexible Box-Cox transformations when variables are measured with error or important attributes are omitted.
17 +where $P_i$ is the price of property $i$, $\bfX_i$ is a vector of structural, locational, and neighbourhood attributes, and $\bfbeta$ captures the implicit marginal prices. The semi-logarithmic functional form, recommended by \citet{halvorsen1981choice} and widely adopted in the literature, allows coefficients to be interpreted as approximate percentage changes in price for a unit change in the characteristic. \citet{cropper1988choice} evaluated alternative functional forms through Monte Carlo experiments, finding that simpler parametric specifications (linear and log-linear) outperform flexible Box-Cox transformations when variables are measured with error or important attributes are omitted.
18 18
19 −The empirical literature on hedonic housing models is vast. \citet{sirmans2005composition} surveyed the composition of hedonic models and identified bedrooms, bathrooms, lot size, age, square footage, and proximity to central business districts as the most frequently included variables. \citet{sirmans2006empirical} conducted a meta-analysis of 64 hedonic studies, finding that bathrooms, square footage, and lot size consistently exhibit the largest marginal effects. \citet{malpezzi2003hedonic} provided a comprehensive review of methodological issues, including functional form selection, spatial autocorrelation, and multicollinearity. Two extensions of the baseline framework are particularly relevant here. First, \textit{quantile hedonics}: \citet{zietz2007determinants} show that the implicit prices of housing attributes vary systematically across the conditional price distribution, with many characteristics valued more highly in upper price segments, and \citet{mcmillen2008changes} uses quantile methods to decompose changes in the entire distribution of house prices. Our quantile analysis in Section~\ref{sec:robustness} extends this logic to text-derived characteristics. Second, \textit{spatial hedonics}: housing data are spatially dependent, and a long literature---\citet{anselin1988spatial}, \citet{dubin1988estimation}, and \citet{can1992specification} among the foundations---has developed specifications that absorb spatial autocorrelation in prices and errors; \citet{dube2014spatial} adapt these methods to the Canadian and Quebec microdata context. Closer to our setting still, a sustained research program using Quebec City transactions has quantified the capitalization of property attributes ranging from landscaping to accessibility \citep{desrosiers2002landscaping}. In the amenity-capitalization literature more broadly, \citet{cheshire2004capitalisation} demonstrate school-quality capitalization in local housing markets and \citet{gibbons2014costs} documents the discount associated with visual environmental disamenities, while \citet{irwin2002effects} and \citet{tyrvainen2005benefits} establish the positive value of open space and urban vegetation.
19 +The empirical literature on hedonic housing models is vast. \citet{sirmans2005composition} surveyed the composition of hedonic models and identified bedrooms, bathrooms, lot size, age, square footage, and proximity to central business districts as the most frequently included variables. \citet{sirmans2006empirical} conducted a meta-analysis of 64 hedonic studies, finding that bathrooms, square footage, and lot size consistently exhibit the largest marginal effects. \citet{malpezzi2003hedonic} provided a comprehensive review of methodological issues, including functional form selection, spatial autocorrelation, and multicollinearity. Two extensions of the baseline framework are particularly relevant here. First, \textit{quantile hedonics}: \citet{zietz2007determinants} show that the implicit prices of housing attributes vary systematically across the conditional price distribution, with many characteristics valued more highly in upper price segments, and \citet{mcmillen2008changes} uses quantile methods to decompose changes in the entire distribution of house prices. Our quantile analysis in Section~\ref{sec:robustness} extends this logic to text-derived characteristics. Second, \textit{spatial hedonics}: housing data are spatially dependent, and a long literature---\citet{anselin1988spatial}, \citet{dubin1988estimation}, and \citet{can1992specification} among the foundations---has developed specifications that absorb spatial autocorrelation in prices and errors; \citet{dube2014spatial} adapt these methods to the Canadian and Quebec microdata context. In applied work the most common responses to spatial dependence are area fixed effects and standard errors clustered at the level at which the sampling or the unobserved shocks are structured \citep{cameron2015practitioner, abadie2023when}, and the validation of predictive models on spatially dependent data requires held-out folds that respect that structure \citep{roberts2017cross}; we adopt all three in Section~\ref{sec:extended}. Closer to our setting still, a sustained research program using Quebec City transactions has quantified the capitalisation of property attributes ranging from landscaping to accessibility \citep{desrosiers2002landscaping}. In the amenity-capitalisation literature more broadly, \citet{cheshire2004capitalisation} demonstrate school-quality capitalisation in local housing markets and \citet{gibbons2014costs} documents the discount associated with visual environmental disamenities, while \citet{irwin2002effects} and \citet{tyrvainen2005benefits} establish the positive value of open space and urban vegetation.
20 20
21 −A persistent challenge in hedonic pricing is the omitted variable bias arising from unobserved quality attributes. \citet{pakes2003reconsideration} argued that standard hedonic regressions yield biased implicit price estimates when important product characteristics are unobservable to the econometrician but observable to market participants. This concern is directly relevant to our study: listing descriptions may convey quality information---about finish materials, maintenance history, or neighborhood ambiance---that is not captured by conventional structural variables but is fully observable to buyers.
21 +A persistent challenge in hedonic pricing is the omitted variable bias arising from unobserved quality attributes. \citet{pakes2003reconsideration} argued that standard hedonic regressions yield biased implicit price estimates when important product characteristics are unobservable to the econometrician but observable to market participants. This concern is directly relevant to our study: listing descriptions may convey quality information---about finish materials, maintenance history, or neighbourhood ambiance---that is not captured by conventional structural variables but is fully observable to buyers.
22 22
23 −More recently, machine learning methods have been applied to hedonic pricing and mass appraisal, including random forests \citep{hong2020house}, penalized variable selection \citep{yoo2012variable}, and large-feature-set automated valuation \citep{kok2017big}. While these methods typically achieve superior predictive accuracy, they sacrifice the coefficient interpretability that is central to the hedonic framework's appeal for policy analysis and market valuation---a general tension in the adoption of machine learning by applied economists \citep{varian2014big, mullainathan2017machine, athey2019machine, dell2025deep}. Our approach seeks to recover this interpretability while incorporating the rich informational content of textual data.
23 +More recently, machine learning methods have been applied to hedonic pricing and mass appraisal, including random forests \citep{hong2020house}, penalised variable selection \citep{yoo2012variable}, and large-feature-set automated valuation \citep{kok2017big}. While these methods typically achieve superior predictive accuracy, they sacrifice the coefficient interpretability that is central to the hedonic framework's appeal for policy analysis and market valuation---a general tension in the adoption of machine learning by applied economists \citep{varian2014big, mullainathan2017machine, athey2019machine, dell2025deep}. Our approach seeks to recover this interpretability while incorporating the rich informational content of textual data.
24 24
25 25 \subsection{Text as Data in Economics}
26 26
27 −Our methodology is best understood as an instance of the broader \textit{text-as-data} program in empirical economics, surveyed by \citet{gentzkow2019text} and, with a focus on modern deep-learning representations, by \citet{ash2023text}. This literature organizes text-based empirical work around a common two-step structure: first, represent documents as quantitative features; second, use those features in an economic model. The representation step has evolved from hand-built dictionaries---word lists whose counts proxy for a concept of interest, the workhorse of the finance literature on disclosure tone \citep{loughran2011liability, loughran2016textual}---through topic models \citep{blei2003latent, hansen2017transparency} to dense neural embeddings.
27 +Our methodology is best understood as an instance of the broader \textit{text-as-data} program in empirical economics, surveyed by \citet{gentzkow2019text} and, with a focus on modern deep-learning representations, by \citet{ash2023text}. This literature organises text-based empirical work around a common two-step structure: first, represent documents as quantitative features; second, use those features in an economic model. The representation step has evolved from hand-built dictionaries---word lists whose counts proxy for a concept of interest, the workhorse of the finance literature on disclosure tone \citep{loughran2011liability, loughran2016textual, garcia2023colour}---through topic models \citep{blei2003latent, hansen2017transparency} to dense neural embeddings.
28 28
29 −Dictionary methods remain attractive to economists precisely because they are transparent: the researcher names the concept, and the mapping from text to feature is auditable. Their weakness is lexical brittleness---a dictionary counts only the exact words it enumerates. Embedding-based representations solve the brittleness problem but break the transparency: a 384-dimensional vector has no nameable economic content. Our reference-description approach is designed to occupy the point between these extremes: like a dictionary, each feature is defined ex ante by the researcher and carries a name and an expected sign; like an embedding method, the mapping from text to feature is semantic rather than lexical, so paraphrases and synonyms load on the same dimension. In the taxonomy of \citet{gentzkow2019text}, it is a supervised projection of an unsupervised representation, with the supervision supplied by domain knowledge rather than by labeled data. Applications elsewhere in economics illustrate the payoff of interpretable text features: \citet{hansen2017transparency} measure deliberation in central bank transcripts, and \citet{marinescu2020opening} show that the words of job postings materially affect matching in labor markets.
29 +Dictionary methods remain attractive to economists precisely because they are transparent: the researcher names the concept, and the mapping from text to feature is auditable. Their weakness is lexical brittleness---a dictionary counts only the exact words it enumerates. Embedding-based representations solve the brittleness problem but break the transparency: a 384-dimensional vector has no nameable economic content. Our reference-description approach is designed to occupy the point between these extremes: like a dictionary, each feature is defined ex ante by the researcher and carries a name and an expected sign; like an embedding method, the mapping from text to feature is semantic rather than lexical, so paraphrases and synonyms load on the same dimension. In the taxonomy of \citet{gentzkow2019text}, it is a supervised projection of an unsupervised representation, with the supervision supplied by domain knowledge rather than by labeled data. Applications elsewhere in economics illustrate the payoff of interpretable text features: \citet{hansen2017transparency} measure deliberation in central bank transcripts, \citet{marinescu2020opening} show that the words of job postings materially affect matching in labour markets, and \citet{kelly2021measuring} measure the novelty of patents from the similarity of their text to earlier and later patents. The same literature documents that dictionaries are context-dependent: \citet{loughran2011liability} show that a general-purpose negative word list misclassifies financial text, and \citet{nowak2021dictionaries} show that the words that predict house prices differ across markets and over time. A continuous dictionary inherits this dependence, which is why the present paper reports the sensitivity of its estimates to the phrasing of the references and to the encoder.
30 30
31 31 \subsection{Text and Unstructured Data in Real Estate}
32 32
33 33 The incorporation of textual data into real estate analysis represents a growing but still nascent literature. An early strand asked whether agent remarks matter at all: \citet{haag2000real} found that specific remark categories in MLS listings are associated with price and marketing-time differentials, and \citet{pryce2008rhetoric} documented the systematic rhetorical strategies of real estate advertising, showing that listing language is a deliberate marketing instrument rather than neutral description. \citet{goodwin2014broker} showed that broker vernacular affects both selling price and liquidity, and \citet{goodwin2018connotation} distinguished the positive and negative connotations of listing wording. Because listing text is strategically produced, its information content connects to the theory of voluntary disclosure \citep{grossman1981informational, milgrom1981good} and to the evidence that informed intermediaries exploit textual and informational advantages \citep{levitt2008information}.
34 34
35 −A second strand quantifies the price-relevant information in the text itself. \citet{nowak2017quality} were among the first to embed listing-comment features in formal hedonic estimation, showing that words in agent comments proxy for unobserved quality and materially reduce omitted variable bias in the estimates of other coefficients. \citet{shen2020text} pushed this agenda furthest to date: applying machine learning to property descriptions, they show that text contains substantial information about otherwise unobserved property quality and that this information predicts prices beyond structured attributes. Sentiment-based approaches summarize the tone of housing narratives \citep{zhu2023sentiment}, and recent automated-valuation work incorporates full description text into machine learning pipelines \citep{baur2023automated}. Listing language also encodes neighborhood characteristics beyond the property itself: \citet{delmelle2021language} show that the text of property advertisements predicts neighborhood socioeconomic composition and change, a reminder that text features may capture locational as well as structural variation---a theme central to our identification discussion in Section~\ref{sec:identification}.
35 +A second strand quantifies the price-relevant information in the text itself. \citet{nowak2017quality} were among the first to embed listing-comment features in formal hedonic estimation, showing that words in agent comments proxy for unobserved quality and materially reduce omitted variable bias in the estimates of other coefficients; \citet{nowak2021dictionaries} extend the approach to the construction of real estate dictionaries and show that their content varies across space and time. \citet{shen2020text} pushed this agenda furthest to date: applying machine learning to property descriptions, they show that text contains substantial information about otherwise unobserved property quality and that this information predicts prices beyond structured attributes. Sentiment-based approaches summarise the tone of housing narratives \citep{zhu2023sentiment}, and recent automated-valuation work incorporates full description text into machine learning pipelines \citep{baur2023automated}. Listing language also encodes neighbourhood characteristics beyond the property itself: \citet{delmelle2021language} show that the text of property advertisements predicts neighbourhood socioeconomic composition and change, a reminder that text features may capture locational as well as structural variation---a theme central to our identification discussion in Section~\ref{sec:identification}.
36 36
37 37 Text is not the only unstructured signal attached to a listing. A parallel literature extracts quality information from listing \textit{photographs}: \citet{glaeser2018computer} show that exterior appearance predicts prices and renovation returns, \citet{poursaeed2018vision} estimate interior quality from listing photos and improve price prediction, and \citet{law2019take} combine street-view and satellite imagery with structured attributes. We view text and images as complementary members of the same family: both reveal quality dimensions that structured fields omit, and both raise the same interpretability challenge when processed by deep networks. Topic models offer one interpretable middle ground for text \citep{blei2003latent}, but their latent factors are difficult to name ex ante and are unstable in short, formulaic documents such as listings; our reference-based projection provides an alternative whose dimensions are fixed and named by design.
38 38
@@ -42,21 +42,21 @@ The tension between prediction and interpretation in text-augmented hedonic mode
42 42
43 43 Sentence embeddings map variable-length text into fixed-dimensional vector spaces where semantic similarity corresponds to geometric proximity. The development of contextual word representations through architectures such as ELMo \citep{peters2018deep} and subsequently BERT \citep{devlin2019bert} represented a paradigm shift from static word vectors \citep{mikolov2013distributed} to context-dependent representations. However, these models require cross-encoding for pairwise comparison, which scales quadratically with corpus size.
44 44
45 −The Sentence-BERT framework \citep{reimers2019sentence} addressed this limitation by fine-tuning pre-trained transformer models using siamese and triplet network structures to produce embeddings optimized for cosine similarity comparisons. This approach enables efficient comparison of text pairs without requiring cross-encoding, which is computationally prohibitive for large-scale applications. Subsequent work by \citet{gao2021simcse} proposed contrastive learning objectives (SimCSE) that further improved embedding quality, while \citet{li2020sentence} demonstrated that sentence embeddings suffer from anisotropy---a geometric degeneration where embeddings occupy a narrow cone in the vector space---and proposed whitening transformations as a remedy.
45 +The Sentence-BERT framework \citep{reimers2019sentence} addressed this limitation by fine-tuning pre-trained transformer models using siamese and triplet network structures to produce embeddings optimised for cosine similarity comparisons. This approach enables efficient comparison of text pairs without requiring cross-encoding, which is computationally prohibitive for large-scale applications. Subsequent work by \citet{gao2021simcse} proposed contrastive learning objectives (SimCSE) that further improved embedding quality, while \citet{li2020sentence} demonstrated that sentence embeddings suffer from anisotropy---a geometric degeneration where embeddings occupy a narrow cone in the vector space---and proposed whitening transformations as a remedy.
46 46
47 −The all-MiniLM-L6-v2 model \citep{wang2020minilm} is a distilled version of the MiniLM architecture that produces 384-dimensional embeddings. The model employs self-attention distillation, transferring knowledge from a larger teacher model to a compact student network. Despite its compact size (22.7M parameters), it achieves competitive performance on standard semantic textual similarity benchmarks while being substantially faster than BERT-base encoders \citep{wang2020minilm, muennighoff2023mteb}, which makes it suitable for encoding large corpora of property listings. For French text, the model's multilingual coverage---derived from its training on paraphrase data spanning multiple languages---provides adequate performance, though dedicated French models such as CamemBERT \citep{martin2020camembert} or FlauBERT \citep{le2020flaubert} could potentially improve semantic resolution for domain-specific vocabulary.
47 +The all-MiniLM-L6-v2 model \citep{wang2020minilm} is a distilled version of the MiniLM architecture that produces 384-dimensional embeddings. The model employs self-attention distillation, transferring knowledge from a larger teacher model to a compact student network. Despite its compact size (22.7M parameters), it achieves competitive performance on standard semantic textual similarity benchmarks while being substantially faster than BERT-base encoders \citep{wang2020minilm, muennighoff2023mteb}, which makes it suitable for encoding large corpora of property listings. The model was trained predominantly on English paraphrase data, and its treatment of French text is incidental rather than designed. Multilingual sentence encoders address this by distillation: \citet{reimers2020multilingual} train a student model so that a sentence and its translations receive the same embedding as the English teacher, which aligns the languages in a shared space; paraphrase-multilingual-MiniLM-L12-v2, used in Section~\ref{sec:extended}, is such a model. Dedicated French models such as CamemBERT \citep{martin2020camembert} or FlauBERT \citep{le2020flaubert} could further improve semantic resolution for domain-specific vocabulary. Whether a monolingual encoder applied to a bilingual corpus measures content or language is an empirical question that the present paper answers directly.
48 48
49 49 Our use of reference descriptions as fixed semantic anchors is also related to zero-shot classification, where label descriptions serve as textual anchors against which documents are scored without task-specific training \citep{yin2019benchmarking}. The difference is that we retain the continuous similarity scores as regression covariates rather than converting them into discrete class assignments, preserving the marginal-effect interpretation required by the hedonic framework.
50 50
51 −Cosine similarity between two $L_2$-normalized embedding vectors $\mathbf{u}$ and $\mathbf{v}$ is defined as:
51 +Cosine similarity between two $L_2$-normalised embedding vectors $\mathbf{u}$ and $\mathbf{v}$ is defined as:
52 52 \begin{equation}
53 53 \text{sim}(\mathbf{u}, \mathbf{v}) = \frac{\mathbf{u} \cdot \mathbf{v}}{||\mathbf{u}|| \cdot ||\mathbf{v}||} = \mathbf{u} \cdot \mathbf{v} \label{eq:cosine}
54 54 \end{equation}
55 −This measure ranges from $-1$ to $1$, with higher values indicating greater semantic similarity. For normalized vectors, cosine similarity reduces to the dot product, enabling efficient computation via matrix multiplication. The geometric interpretation is straightforward: cosine similarity measures the angle between two vectors in the embedding space, with a value of 1 indicating identical direction (perfect semantic alignment) and 0 indicating orthogonality (semantic independence). Negative values, while theoretically possible, are rare in practice for sentence embeddings due to the positivity bias inherent in transformer representations \citep{ethayarajh2019contextual}.
55 +This measure ranges from $-1$ to $1$, with higher values indicating greater semantic similarity. For normalised vectors, cosine similarity reduces to the dot product, enabling efficient computation via matrix multiplication. The geometric interpretation is straightforward: cosine similarity measures the angle between two vectors in the embedding space, with a value of 1 indicating identical direction (perfect semantic alignment) and 0 indicating orthogonality (semantic independence). Negative values, while theoretically possible, are rare in practice for sentence embeddings due to the positivity bias inherent in transformer representations \citep{ethayarajh2019contextual}.
56 56
57 57 \subsection{Research Gap and Contribution}
58 58
59 −The literatures above leave a two-sided gap. On the economics side, the text-as-data toolkit offers either transparent-but-brittle dictionaries or powerful-but-opaque embeddings, and the housing applications to date have prioritized prediction over the estimation of named implicit prices. On the NLP side, interpretable machine learning has developed post hoc explanation tools \citep{ribeiro2016why, lundberg2017unified} and arguments for inherently interpretable models in high-stakes settings \citep{rudin2019stop}, but these have not been adapted to the requirements of hedonic inference, where features must be defined ex ante, carry economic names, and enter a linear model with valid standard errors. Table~\ref{tab:literature_comparison} summarizes how our approach compares with existing methods along five dimensions.
59 +The literatures above leave a two-sided gap. On the economics side, the text-as-data toolkit offers either transparent-but-brittle dictionaries or powerful-but-opaque embeddings, and the housing applications to date have prioritised prediction over the estimation of named implicit prices. On the NLP side, interpretable machine learning has developed post hoc explanation tools \citep{ribeiro2016why, lundberg2017unified} and arguments for inherently interpretable models in high-stakes settings \citep{rudin2019stop}, but these have not been adapted to the requirements of hedonic inference, where features must be defined ex ante, carry economic names, and enter a linear model with valid standard errors. Table~\ref{tab:literature_comparison} summarises how our approach compares with existing methods along five dimensions. The table records the interpretability of the reference approach as high because its features are named ex ante; whether the coefficients attached to those names are stable is a separate question, which Section~\ref{sec:extended} examines and which the existing literature has not addressed.
60 60
61 61 \begin{table}[!htbp]
62 62 \centering
@@ -81,6 +81,6 @@ PCA on embeddings & High & None & High & Yes & --- \\
81 81 \end{adjustbox}
82 82 \end{table}
83 83
84 −Our reference-based cosine similarity approach resolves the depth-interpretability tension by leveraging the deep semantic representations of transformer embeddings while producing features with clear economic interpretation. Each similarity score measures the degree to which a property's description resembles a researcher-defined qualitative archetype, yielding features that are both semantically meaningful and directly usable as right-hand-side variables in a hedonic regression.
84 +Our reference-based cosine similarity approach addresses the depth--interpretability tension by using the semantic representations of transformer embeddings while producing features with a clear economic definition. Each similarity score measures the degree to which a property's description resembles a researcher-defined qualitative archetype, yielding features that are both semantically meaningful and directly usable as right-hand-side variables in a hedonic regression.
85 85
86 86 This approach contributes to a broader methodological trend in applied economics where machine learning tools are used for feature construction rather than final-stage estimation \citep{athey2019machine, mullainathan2017machine, gentzkow2019text}. By treating embeddings as an intermediate representation and projecting them onto economically meaningful axes, we preserve the inferential advantages of OLS while exploiting the representational power of deep learning. The reference-based projection is also related to the concept of ``concept bottleneck models'' in interpretable machine learning \citep{koh2020concept}, where high-dimensional representations are channeled through human-interpretable intermediate concepts before reaching the prediction stage.
modified paper/sections/methodology.tex +51 −48
@@ -4,9 +4,9 @@
4 4 \section{Methodology} \label{sec:methodology}
5 5 %======================================================================
6 6
7 −\subsection{Methodological Overview}
7 +\subsection{Overview}
8 8
9 −Our framework transforms unstructured listing text into a set of interpretable features through a four-stage pipeline, illustrated in Figure~\ref{fig:methodology}: (1)~extraction and preprocessing of listing descriptions; (2)~encoding into dense vector representations using a pre-trained sentence transformer; (3)~computation of cosine similarities against a set of researcher-designed reference descriptions; and (4)~integration of the resulting similarity features into a hedonic pricing model.
9 +The framework transforms unstructured listing text into a set of interpretable features through a four-stage pipeline, illustrated in Figure~\ref{fig:methodology}: (1)~extraction of the listing descriptions; (2)~encoding into dense vector representations with a pre-trained sentence transformer; (3)~computation of cosine similarities against a set of researcher-designed reference descriptions; and (4)~estimation of hedonic price equations in which the similarities enter as named covariates.
10 10
11 11 \begin{figure}[!htbp]
12 12 \centering
@@ -15,88 +15,91 @@ Our framework transforms unstructured listing text into a set of interpretable f
15 15 \label{fig:methodology}
16 16 \begin{minipage}{0.9\textwidth}
17 17 \footnotesize
18 −Notes: This figure illustrates the four-stage pipeline: (1) text extraction, (2) sentence embedding, (3) cosine similarity computation against 20 reference descriptions, and (4) integration into a hedonic pricing model.
18 +Notes: The four stages are (1) text extraction, (2) sentence embedding, (3) cosine similarity against 20 reference descriptions and (4) hedonic estimation.
19 19 \end{minipage}
20 20 \end{figure}
21 21
22 −\subsection{Text Extraction and Preprocessing}
22 +\subsection{Text Extraction}
23 23
24 −Each property listing in our database includes a \textit{PublicRemarks} field containing the agent-written description. We extract this field and apply minimal preprocessing: listings with descriptions shorter than 20 characters are excluded as uninformative, and listings with missing or non-positive prices are removed. We deliberately avoid aggressive text preprocessing (stemming, lemmatization, stop-word removal) because the sentence transformer model is designed to process natural-language text and internally handles tokenization.
25 −
26 −In addition to the embedding-based features, we compute a simple text length measure (character count of the description) as a control variable. Description length may proxy for listing effort, property complexity, or market conditions, and including it ensures that our semantic features capture content rather than verbosity.
24 +Each listing includes a \textit{PublicRemarks} field containing the broker-written description. We apply minimal preprocessing: listings with descriptions shorter than 20 characters are excluded as uninformative, and listings with missing or non-positive prices are removed. We deliberately avoid stemming, lemmatisation or stop-word removal, because the sentence transformer is designed to process natural-language text and handles tokenisation internally. In addition to the embedding-based features, we record the description length $\ell_i$ (number of characters) as a control: length may proxy for broker effort, property complexity or market conditions, and including it ensures that the semantic features capture content rather than verbosity. We also classify each description as French, English or mixed from counts of language-specific stop words (Section~\ref{sec:data}); the classification is used in the extended specifications of Section~\ref{sec:extended}.
27 25
28 26 \subsection{Sentence Embedding}
29 27
30 −Each listing's description $d_i$ is encoded into a 384-dimensional unit vector using the all-MiniLM-L6-v2 sentence transformer:
28 +Each description $d_i$ is encoded into a unit-length vector with the all-MiniLM-L6-v2 sentence transformer \citep{wang2020minilm, reimers2019sentence}:
31 29 \begin{equation}
32 −\bfe_i = f_{\bftheta}(d_i) \in \R^{384}, \quad ||\bfe_i|| = 1
30 +\bfe_i = f_{\bftheta}(d_i) \in \R^{384}, \qquad \lVert \bfe_i \rVert_2 = 1. \label{eq:embed}
33 31 \end{equation}
34 −The model processes text through 6 transformer layers with 384 hidden dimensions, applying mean pooling over token embeddings and $L_2$ normalization to produce the final sentence embedding. The model handles both English and French text, which is important for our Quebec-based corpus where listings are predominantly in French with occasional English phrases.
35 −
36 −Embeddings are computed in batches of 256 for computational efficiency. The entire corpus of 17,087 descriptions is encoded in approximately 14 seconds on consumer hardware (Apple M-series CPU), making the approach practical for large-scale applications.
32 +The model has six transformer layers with 384 hidden dimensions; token embeddings are mean-pooled and $L_2$-normalised. The corpus of 17,087 descriptions is encoded in about 14 seconds on an Apple-silicon laptop. The model was trained predominantly on English paraphrase data; its behaviour on French text, and the consequences for a bilingual corpus, are examined directly in Section~\ref{sec:language}, where we also re-run the analysis with a multilingual encoder, paraphrase-multilingual-MiniLM-L12-v2, which was distilled to map translations of the same sentence to nearby vectors \citep{reimers2020multilingual}.
37 33
38 34 \subsection{Reference Description Design}
39 35
40 36 \subsubsection{Rationale}
41 37
42 −The key methodological innovation is the construction of reference descriptions that serve as semantic anchors. Rather than applying unsupervised dimensionality reduction (PCA, autoencoders) to the 384-dimensional embedding space---which would yield features without natural economic interpretation---we project each listing's embedding onto a set of researcher-defined semantic axes. Each axis is defined by a reference description that embodies a specific qualitative housing dimension.
38 +The central design choice is the construction of reference descriptions that serve as semantic anchors. Rather than reducing the 384-dimensional embedding by an unsupervised method (principal components, autoencoders), which yields features without economic names, we project each listing's embedding onto axes defined by the researcher. Each axis is a reference text that embodies one qualitative housing dimension.
43 39
44 −This approach is analogous to the construction of factor-mimicking portfolios in asset pricing \citep{fama1993common}: just as Fama-French factors are portfolios designed to load on specific risk dimensions, our reference descriptions are synthetic texts designed to load on specific quality dimensions. Within the text-as-data toolkit, the design is a semantic generalization of the dictionary method \citep{loughran2011liability, gentzkow2019text}: each reference plays the role of a curated word list, but the matching operates in embedding space, so paraphrases and synonyms contribute to the intended dimension without being enumerated. It is likewise related to anchor-based zero-shot classification, in which label descriptions serve as fixed textual anchors \citep{yin2019benchmarking}, except that we retain the continuous similarity scores as regression covariates instead of discretizing them into class labels.
40 +The idea is analogous to factor-mimicking portfolios in asset pricing \citep{fama1993common}: just as a Fama--French factor is a portfolio constructed to load on a risk dimension, a reference description is a synthetic text constructed to load on a quality dimension. Within the text-as-data toolkit, the design is a semantic generalisation of the dictionary method \citep{loughran2011liability, gentzkow2019text}: a reference plays the role of a curated word list, but the matching operates in embedding space, so paraphrases and synonyms contribute without being enumerated. It is also related to anchor-based zero-shot classification, where label descriptions serve as fixed textual anchors \citep{yin2019benchmarking}, except that we retain the continuous similarity scores as regression covariates instead of discretising them into class labels.
45 41
46 −\subsubsection{Reference Categories}
42 +\subsubsection{Reference Categories and Design Principles}
47 43
48 −We define 20 reference descriptions spanning six broad domains of housing quality, listed in Table~\ref{tab:references}. Each reference is a synthetic paragraph of 150--260 characters, written in French to match the listing corpus, containing the vocabulary, phrasing, and semantic content characteristic of its dimension.
44 +We define 20 reference descriptions spanning six domains of housing quality (Table~\ref{tab:references}). Each reference is a synthetic paragraph of 150--260 characters written in French, the majority language of the corpus, listing the vocabulary and phrasing characteristic of its dimension; the verbatim texts are reproduced in Appendix~\ref{app:references}. Three principles guided their design: \textit{semantic saturation} (each reference lists several synonyms and related phrases to cover its dimension broadly); \textit{dimensional specificity} (each reference targets a single dimension); and \textit{linguistic consistency} (all references use vocabulary typical of Quebec listings). The second principle is imperfectly met: several references share phrases---Land \& Nature mentions waterfront access, Modern/Contemporary mentions new construction and energy efficiency, Premium Location mentions schools, parks and family neighbourhoods---and these overlaps, visible in Appendix~\ref{app:references}, matter for the interpretation of individual coefficients (Section~\ref{sec:extended}).
49 45
50 46 \input{tables/tab_references}
51 47
52 −\subsubsection{Design Principles}
53 −
54 −The reference descriptions were designed following three principles. First, \textit{semantic saturation}: each reference includes multiple synonyms, related phrases, and characteristic vocabulary to ensure broad coverage of its target dimension. Second, \textit{dimensional specificity}: each reference targets a single qualitative dimension to minimize cross-loading. Third, \textit{linguistic consistency}: all references are written in French using vocabulary typical of Quebec real estate listings, ensuring alignment with the embedding space of the listing corpus.
55 −
56 −\subsection{Cosine Similarity Computation}
48 +\subsection{Cosine Similarity}
57 49
58 −For each property $i$ and reference $j$, we compute the cosine similarity:
50 +For property $i$ and reference $j$, with $\mathbf{r}_j$ the $L_2$-normalised embedding of the $j$-th reference,
59 51 \begin{equation}
60 −s_{ij} = \text{sim}(\bfe_i, \mathbf{r}_j) = \bfe_i \cdot \mathbf{r}_j \label{eq:sim}
52 +s_{ij} = \bfe_i \cdot \mathbf{r}_j \in [-1, 1], \qquad j = 1, \dots, 20. \label{eq:sim}
61 53 \end{equation}
62 −where $\mathbf{r}_j$ is the $L_2$-normalized embedding of the $j$-th reference. The result is a similarity matrix $\mathbf{S} \in \R^{n \times 20}$.
54 +Stacking the embeddings in $\mathbf{E} \in \R^{n \times 384}$ and the references in $\mathbf{R} \in \R^{20 \times 384}$, the similarity matrix is $\mathbf{S} = \mathbf{E}\mathbf{R}' \in \R^{n \times 20}$, a single matrix product. A higher $s_{ij}$ indicates that the listing uses language closer in meaning to reference $j$. Because every listing is compared with every reference, the 20 columns of $\mathbf{S}$ share whatever is common to the listing's embedding---its language, its register, its length---and are therefore strongly correlated; Sections~\ref{sec:results} and~\ref{sec:extended} document and address this feature of the design.
63 55
64 −Each $s_{ij} \in [-1, 1]$ measures the degree to which property $i$'s description semantically resembles reference $j$. A higher score indicates that the listing text uses language closer in meaning to the reference description, capturing not just keyword overlap but deeper semantic alignment.
56 +\subsection{Hedonic Specifications}
65 57
66 −The full similarity matrix is computed as a single matrix multiplication $\mathbf{S} = \mathbf{E} \cdot \mathbf{R}'$, where $\mathbf{E} \in \R^{n \times 384}$ is the matrix of listing embeddings and $\mathbf{R} \in \R^{20 \times 384}$ is the matrix of reference embeddings. This operation is computationally trivial.
67 −
68 −\subsection{Hedonic Model Specification}
69 −
70 −We estimate a series of nested OLS models with White-Huber heteroskedasticity-robust standard errors (HC3 variant):
58 +Let $\bfX_i$ collect six structural variables (bedrooms, bathrooms, half-bathrooms, parking spaces, storeys and the lot-size field), $\ell_i$ the description length and $\bfs_i = (s_{i1}, \dots, s_{i20})'$ the similarity vector. We estimate five nested specifications by ordinary least squares:
71 59 \begin{align}
72 −\text{Model A:} \quad \ln(P_i) &= \alpha + \bfbeta' \bfX_i + \eps_i \label{eq:modelA} \\
73 −\text{Model B:} \quad \ln(P_i) &= \alpha + \bfbeta' \bfX_i + \delta \cdot \ell_i + \eps_i \label{eq:modelB} \\
74 −\text{Model C:} \quad \ln(P_i) &= \alpha + \bfbeta' \bfX_i + \bfgamma' \bfs_i + \eps_i \label{eq:modelC} \\
75 −\text{Model D:} \quad \ln(P_i) &= \alpha + \bfbeta' \bfX_i + \delta \cdot \ell_i + \bfgamma' \bfs_i + \eps_i \label{eq:modelD} \\
76 −\text{Model E:} \quad \ln(P_i) &= \alpha + \bfbeta' \bfX_i + \delta \cdot \ell_i + \bfgamma_{\text{sig}}' \bfs_i^{\text{sig}} + \eps_i \label{eq:modelE}
60 +\text{Model A:} \quad \ln P_i &= \alpha + \bfbeta' \bfX_i + \eps_i, \label{eq:modelA} \\
61 +\text{Model B:} \quad \ln P_i &= \alpha + \bfbeta' \bfX_i + \delta\, \ell_i + \eps_i, \label{eq:modelB} \\
62 +\text{Model C:} \quad \ln P_i &= \alpha + \bfbeta' \bfX_i + \bfgamma' \bfs_i + \eps_i, \label{eq:modelC} \\
63 +\text{Model D:} \quad \ln P_i &= \alpha + \bfbeta' \bfX_i + \delta\, \ell_i + \bfgamma' \bfs_i + \eps_i, \label{eq:modelD} \\
64 +\text{Model E:} \quad \ln P_i &= \alpha + \bfbeta' \bfX_i + \delta\, \ell_i + \bfgamma_{\mathrm{sig}}' \bfs_i^{\mathrm{sig}} + \eps_i, \label{eq:modelE}
77 65 \end{align}
66 +where $\bfs_i^{\mathrm{sig}}$ retains the similarities that are individually significant at the 5\% level in Model~D. All covariates are standardised to zero mean and unit variance on the estimation sample before estimation, so that each coefficient measures the change in log price associated with a one-standard-deviation change in the covariate. The semi-logarithmic form follows \citet{halvorsen1981choice}; \citet{cropper1988choice} show that simple parametric forms are preferable to flexible transformations when attributes are measured with error or omitted, which is the case here. Standard errors are heteroskedasticity-consistent (HC3), the variant recommended by \citet{mackinnon1985some}.
78 67
79 −\noindent where $\bfX_i$ includes six structural variables (bedrooms, bathrooms, half-bathrooms, parking spaces, stories, and lot size), $\ell_i$ is the description length (character count), $\bfs_i$ is the full vector of 20 cosine similarities, and $\bfs_i^{\text{sig}}$ retains only the similarities that are individually significant at the 5\% level in Model~D. All independent variables are standardized (zero mean, unit variance) prior to estimation, so coefficients represent the effect of a one-standard-deviation change.
80 −
81 −The choice of HC3 standard errors, recommended by \citet{mackinnon1985some} for samples of moderate size, provides consistent inference under heteroskedasticity without requiring specification of the error variance structure.
68 +\paragraph{Interpretation of the semantic coefficients.} Because $s_{ij}$ is standardised, the coefficient $\gamma_j$ is the change in $\ln P$ for a one-standard-deviation increase in similarity to reference $j$, holding the other covariates fixed, and the corresponding proportional price change is
69 +\begin{equation}
70 +100 \times \left( e^{\gamma_j} - 1 \right) \ \text{per cent per standard deviation of } s_j . \label{eq:impact}
71 +\end{equation}
72 +Equivalently, since the standard deviations of the 20 similarities lie between 0.11 and 0.17 (Table~\ref{tab:sim_stats}), the coefficient per unit of cosine similarity is $\gamma_j / \sigma_{s_j}$, and a 0.10 increase in cosine similarity---roughly the distance between the median listing and the top quartile---changes log price by about $0.10\,\gamma_j / \sigma_{s_j}$. We report Equation~(\ref{eq:impact}) throughout and refer to it as the price impact per standard deviation. These are partial associations in a cross-section of listing prices; the identification discussion below explains why they are not causal effects of wording.
82 73
83 −The incremental contribution of semantic features is tested using an \fstat:
74 +\paragraph{Joint test of the text block.} The incremental contribution of the 21 text variables (length and the 20 similarities) is tested with
84 75 \begin{equation}
85 −F = \frac{(\text{SSR}_A - \text{SSR}_D) / q}{\text{SSR}_D / (n - k - 1)} \label{eq:ftest}
76 +F = \frac{(\mathrm{SSR}_A - \mathrm{SSR}_D) / q}{\mathrm{SSR}_D / (n - k - 1)}, \qquad q = 21,\ k = 27, \label{eq:ftest}
86 77 \end{equation}
87 −where $q$ is the number of additional semantic variables and $k$ is the total number of regressors in Model~D.
78 +where $\mathrm{SSR}$ denotes the residual sum of squares, $q$ the number of restrictions and $k$ the number of regressors in Model~D excluding the intercept. Equation~(\ref{eq:ftest}) assumes homoskedasticity; in Section~\ref{sec:extended} we report heteroskedasticity- and cluster-robust Wald tests of the 20 semantic coefficients, overall and by domain, which do not.
88 79
89 −\subsection{Identification and Interpretation} \label{sec:identification}
80 +\subsection{Extended Specifications} \label{sec:extended_methods}
81 +
82 +The first version of this paper stopped at Models A--E. The present revision adds specifications that address three threats to interpretation: the language of the listing, unobserved location, and measurement error in the lot-size field. Let $L_i$ be a pair of indicators for English and mixed-language descriptions, and let $g(i)$ denote the forward sortation area (FSA, the first three characters of the postal code) or the municipality of listing $i$. The extended model is
83 +\begin{equation}
84 +\ln P_i = \alpha_{g(i)} + \bfbeta' \bfX_i + \delta\, \ell_i + \boldsymbol{\lambda}' L_i + \bfgamma' \bfs_i + \eps_i, \label{eq:modelFE}
85 +\end{equation}
86 +estimated by the within transformation (all variables demeaned within $g$). The area effects $\alpha_{g}$ absorb location-specific price levels, so that $\bfgamma$ is identified from variation among listings in the same FSA or municipality. Because listings in the same area share unobserved shocks and because the fixed effects define the sampling structure, standard errors are clustered by area \citep{cameron2015practitioner, abadie2023when}; with 415 FSAs the cluster count is ample. In variants of Equation~(\ref{eq:modelFE}) the raw lot-size field is replaced by the logarithm of the lot area converted to square metres with an indicator for missing values, and the logarithm of the interior floor area is added on the subsample that reports it.
90 87
91 −The coefficients on the semantic similarity variables should be interpreted as \textit{conditional associations}---implicit semantic price gradients---rather than causal effects. This stance follows the modern reading of cross-sectional hedonic coefficients as equilibrium price gradients rather than structural willingness-to-pay parameters \citep{ekeland2004identification, kuminoff2013new}. Three distinct channels could generate the observed correlations between listing language and prices, and the cross-sectional design cannot distinguish among them.
88 +\paragraph{Out-of-sample validation.} In-sample $R^2$ gains can overstate the value of added regressors. We therefore evaluate each specification by five-fold cross-validation \citep{hastie2009elements}, with random folds and with folds that hold out entire FSAs so that no held-out listing shares an area with the training data \citep{roberts2017cross}. For held-out predictions $\hat y_i$ of $y_i = \ln P_i$,
89 +\begin{align}
90 +R^2_{\mathrm{oos}} &= 1 - \frac{\sum_i (y_i - \hat y_i)^2}{\sum_i (y_i - \bar y)^2}, \label{eq:r2oos} \\
91 +\mathrm{MdAPE} &= \operatorname{median}_i \left| \frac{e^{\hat y_i} - P_i}{P_i} \right| \times 100, \label{eq:mdape}
92 +\end{align}
93 +together with the root mean squared error in log points. The median absolute percentage error is the accuracy measure conventionally used for automated valuation models.
92 94
93 −\textbf{Information channel.} Agents accurately describe observable property attributes that affect prices but are not captured by the structural variables in our model. Under this interpretation, the semantic coefficients recover the implicit prices of genuine quality dimensions: luxury finishes, renovation status, natural amenities, and so forth. The listing text serves as a proxy for unobserved quality, and the coefficients have a straightforward hedonic interpretation.
95 +\subsection{Identification and Interpretation} \label{sec:identification}
94 96
95 −\textbf{Persuasion channel.} Listing language influences buyer perceptions and willingness to pay, independent of underlying property quality. Skillfully written descriptions could inflate perceived value, creating a price premium attributable to marketing rather than to the property itself. Under this interpretation, the semantic coefficients capture the return to agent effort and linguistic skill rather than housing quality.
97 +The coefficients on the semantic similarities are \textit{conditional associations}---implicit semantic price gradients---rather than causal effects of wording. This follows the modern reading of cross-sectional hedonic coefficients as equilibrium price gradients rather than structural willingness-to-pay parameters \citep{ekeland2004identification, kuminoff2013new}, and it is reinforced by the way listing text is produced. The description is written by the broker after the asking price has been set, with knowledge of the property, of the price and of the targeted buyer segment. Text and price are therefore jointly determined by the same information set, and three channels could generate the observed correlations.
96 98
97 −\textbf{Omitted-location channel.} Listing language proxies for locational characteristics that are correlated with both the property's description and its price. For example, the negative coefficient on Family-Friendly language likely reflects the systematic association between family-oriented marketing and lower-priced suburban markets, rather than a negative valuation of schools and parks. Similarly, New Construction language may capture peripheral location rather than an intrinsic quality discount.
99 +\textbf{Information channel.} Brokers describe observable attributes that affect prices but are absent from the structural fields. The similarities then proxy for genuine quality dimensions---finishes, condition, natural setting---and the coefficients have a hedonic interpretation as implicit prices of unmeasured quality.
98 100
99 −In practice, the observed coefficients likely reflect a mixture of all three channels. The information channel is most plausible for dimensions with clear quality content (Luxury, Needs Renovation, Waterfront), while the omitted-location channel is most relevant for dimensions with geographic content (Family-Friendly, New Construction, Quiet \& Peaceful). The absence of explicit spatial controls in our baseline specification (see Section~\ref{sec:discussion}) means that some semantic coefficients absorb locational price variation.
101 +\textbf{Persuasion and positioning channel.} Brokers choose language to match the price point they have set: a property priced for the luxury segment is described in luxury vocabulary, and a property priced to sell quickly is described with urgency cues. Under this channel the coefficient measures how price-driven wording is, not how wording drives prices.
100 102
101 −\noindent\textit{Scope of inference.} We interpret our estimates as measuring whether and how much semantic content in listing text is associated with price variation, conditional on observed structural characteristics. This is informative for automated valuation, market segmentation, and understanding the informational content of agent narratives, even without causal identification. We avoid language implying that semantic similarity ``causes'' or ``determines'' prices throughout the paper.
103 +\textbf{Omitted-location channel.} Listing language proxies for locational characteristics correlated with price. Family-oriented marketing characterises suburban markets; new-construction vocabulary characterises peripheral developments; the English language characterises the western part of the Montr\'eal region and the Outaouais, where prices are higher. Fixed effects at the FSA or municipality level absorb between-area price differences but not within-area location quality.
102 104
105 +The cross-sectional design cannot separate these channels, and the paper does not attempt to. The estimates are informative about the information content of broker narratives, about the segmentation of the market along qualitative lines and about the predictive value of text for valuation. They do not establish that rewriting a description would change its price, and we avoid any language suggesting that semantic similarity ``causes'' or ``determines'' prices. Likewise, because prices are asking prices rather than transaction prices, the coefficients describe the pricing behaviour of sellers and brokers conditional on the text they wrote, not the valuation of buyers.
modified paper/sections/results.tex +35 −67
@@ -1,12 +1,14 @@
1 1 % Author: Simon-Pierre Boucher — contact@spboucher.ai
2 2 %
3 3 %======================================================================
4 −\section{Results} \label{sec:results}
4 +\section{Baseline Results} \label{sec:results}
5 5 %======================================================================
6 6
7 +This section reports the five nested specifications of Equations~(\ref{eq:modelA})--(\ref{eq:modelE}), which constitute the baseline of the paper and reproduce the estimates of its first version. The extended specifications that control for language and location are presented in Section~\ref{sec:extended}; readers should keep in mind, when reading the individual coefficients below, that several of them change materially once those controls are added.
8 +
7 9 \subsection{Model Comparison}
8 10
9 −Table~\ref{tab:model_comparison} reports goodness-of-fit statistics for the five model specifications defined in Equations~(\ref{eq:modelA})--(\ref{eq:modelE}). Figure~\ref{fig:model_comparison} visualizes the comparison.
11 +Table~\ref{tab:model_comparison} reports goodness-of-fit statistics and Figure~\ref{fig:model_comparison} visualises them.
10 12
11 13 \input{tables/tab_model_comparison}
12 14
@@ -17,153 +19,119 @@ Table~\ref{tab:model_comparison} reports goodness-of-fit statistics for the five
17 19 \label{fig:model_comparison}
18 20 \begin{minipage}{0.9\textwidth}
19 21 \footnotesize
20 −Notes: This figure compares $R^2$ and adjusted $R^2$ across the five nested model specifications defined in Equations~(\ref{eq:modelA})--(\ref{eq:modelE}). The dashed line marks the structural baseline (Model A).
22 +Notes: $R^2$ and adjusted $R^2$ across the five nested specifications of Equations~(\ref{eq:modelA})--(\ref{eq:modelE}). The dashed line marks the structural baseline (Model A).
21 23 \end{minipage}
22 24 \end{figure}
23 25
24 −Several results merit discussion. The structural model (A) explains 45.2\% of log-price variation, consistent with the typical range reported in the hedonic literature for single-family homes \citep{sirmans2005composition}. Adding description length alone (Model~B) improves the $R^2$ by 1.2 percentage points, confirming that the quantity of listing text is price-informative---an indirect quality signal.
25 −
26 −Adding the 20 semantic similarity measures without controlling for length (Model~C) yields a substantially larger improvement of 4.4 percentage points. This demonstrates that the \textit{content} of the text matters beyond its mere length. The full model (D), which includes both text length and all semantic features, achieves an $R^2$ of 0.512---an improvement of 6.0 percentage points over the structural baseline.
26 +The structural model (A) explains 45.2\% of the variation in log asking prices. This is modest by the standards of hedonic studies that include location variables, and Section~\ref{sec:extended} shows that area fixed effects alone raise the $R^2$ to about 0.65; Model~A should be read as a deliberately sparse benchmark with no locational information. Adding description length (Model~B) raises the $R^2$ by 1.2 percentage points, so the quantity of text is itself price-informative. Adding the 20 similarities without the length control (Model~C) raises it by 4.4 points, and the full model (D) by 6.0 points, to 0.512; the semantic block adds 4.8 points over Model~B. The parsimonious model (E), which retains the 16 similarities individually significant at the 5\% level in Model~D, fits almost identically ($R^2 = 0.512$) and has the lowest BIC (24,425 against 24,448), so that the four dropped dimensions---Renovated, Income/Investment, Heritage/Character and Pool \& Landscaping---contribute nothing independently once the others are included. Model~E's coefficients are reported in Appendix~\ref{app:parsimonious}.
27 27
28 −The parsimonious model (E), retaining only the 16 individually significant similarity measures, achieves nearly identical fit ($R^2 = 0.512$, BIC = 24,425 vs.\ 24,448 for Model~D). The lower BIC of Model~E suggests it should be preferred on the basis of model parsimony. Four reference dimensions---Renovated, Income/Investment, Heritage/Character, and Pool \& Landscaping---do not contribute independently after controlling for the other variables. The complete coefficient estimates for Model~E are reported in Appendix Table~\ref{tab:parsimonious}.
29 −
30 −Figure~\ref{fig:r2_decomp} decomposes the explained variance in the full model. Structural variables account for 88.3\% of the total $R^2$, text length contributes 2.4\%, and the semantic similarity measures add 9.3\%.
28 +Figure~\ref{fig:r2_decomp} decomposes the $R^2$ of Model~D in the order structural variables, length, semantics: 88.3\%, 2.4\% and 9.3\% of the explained variance. The decomposition is sequential and therefore order-dependent; the semantic share is the increment of the block entered last, which is the most conservative attribution.
31 29
32 30 \begin{figure}[!htbp]
33 31 \centering
34 32 \includegraphics[width=0.55\textwidth]{fig8_r2_decomposition.pdf}
35 −\caption{Decomposition of explained variance ($R^2$) in the full model (D).}
33 +\caption{Sequential decomposition of the explained variance ($R^2$) of Model~D.}
36 34 \label{fig:r2_decomp}
37 35 \begin{minipage}{0.9\textwidth}
38 36 \footnotesize
39 −Notes: Structural variables account for 88.3\% of the total explained variance, description length contributes 2.4\%, and the 20 semantic similarity measures add 9.3\%.
37 +Notes: Structural variables entered first account for 88.3\% of the $R^2$ of Model~D, description length entered second for 2.4\%, and the 20 semantic similarities entered last for 9.3\%. The shares depend on the order of entry.
40 38 \end{minipage}
41 39 \end{figure}
42 40
43 −\subsection{Joint Significance Test}
41 +\subsection{Joint Significance}
44 42
45 −The \fstat{} for the joint significance of all 21 text-based variables (length + 20 similarities) comparing Model~D to Model~A yields:
46 −\begin{equation*}
47 −F = 99.53, \quad p < 0.001
48 −\end{equation*}
49 −This decisively rejects the null hypothesis that listing text contains no price-relevant information beyond structural characteristics. The test statistic is very large, reflecting the substantial improvement in model fit.
43 +The $F$-statistic of Equation~(\ref{eq:ftest}) for the 21 text variables (length and 20 similarities), comparing Model~D with Model~A, is $F(21,\,17{,}059) = 99.53$, $p < 0.001$. The hypothesis that listing text contains no price-relevant information beyond the structural characteristics is rejected decisively. Equation~(\ref{eq:ftest}) assumes homoskedastic errors, which the Breusch--Pagan test rejects (Section~\ref{sec:robustness}); the heteroskedasticity-robust Wald test of the 20 semantic coefficients alone gives $F = 54.3$, and the version clustered by FSA gives $F = 20.1$ (Table~\ref{tab:spec_summary}), both with $p < 0.001$.
50 44
51 −\subsection{Structural Variable Estimates}
45 +\subsection{Structural Variables}
52 46
53 −Figure~\ref{fig:structural_coef} presents the coefficient estimates for structural variables in the full model.
47 +Figure~\ref{fig:structural_coef} presents the structural coefficients of Model~D with 95\% confidence intervals.
54 48
55 49 \begin{figure}[!htbp]
56 50 \centering
57 51 \includegraphics[width=0.8\textwidth]{fig10_structural_coefficients.pdf}
58 −\caption{Structural variable coefficients in the full model (D), with 95\% CI.}
52 +\caption{Structural coefficients of the full model (D), with 95\% confidence intervals.}
59 53 \label{fig:structural_coef}
60 54 \begin{minipage}{0.9\textwidth}
61 55 \footnotesize
62 −Notes: Coefficients represent the percentage change in price associated with a one-standard-deviation change in each structural variable. Error bars show 95\% confidence intervals based on HC3 robust standard errors.
56 +Notes: Each point is the percentage change in price associated with a one-standard-deviation increase in the variable (Equation~\ref{eq:impact}). Error bars are 95\% confidence intervals based on HC3 standard errors.
63 57 \end{minipage}
64 58 \end{figure}
65 59
66 −Bathrooms have the largest structural effect (+34.5\% per standard deviation), followed by half-bathrooms (+17.1\%), description length (+10.7\%), parking (+9.6\%), and stories (+7.7\%). Bedrooms have a modest positive effect (+3.2\%), and lot size is statistically insignificant---consistent with the noisy, unit-inconsistent measurement of this field in the raw data (Section~\ref{sec:data}).
60 +Bathrooms have the largest structural association (+34.5\% per standard deviation), followed by half-bathrooms (+17.1\%), description length (+10.7\%), parking (+9.6\%) and storeys (+7.7\%); bedrooms add a modest +3.2\%. The raw lot-size field is not significant ($t = 0.00$), which is the expected consequence of mixing square metres, square feet and acres in one variable (Section~\ref{sec:data}); the unit-corrected lot area used in Section~\ref{sec:extended} is strongly significant and, within FSAs, has the largest structural coefficient of all. The absence of a floor-area variable in the baseline is a notable omission relative to standard hedonic practice \citep{sirmans2005composition}, and the floor-area subsample of Section~\ref{sec:extended} addresses it.
67 61
68 −\subsection{Semantic Dimension Estimates}
62 +\subsection{Semantic Dimensions}
69 63
70 −Table~\ref{tab:full_results} reports the complete coefficient estimates from Model~D. Figure~\ref{fig:coefficient_plot} presents the semantic coefficients graphically.
64 +Table~\ref{tab:full_results} reports the complete coefficient estimates of Model~D and Figure~\ref{fig:coefficient_plot} displays the semantic coefficients.
71 65
72 66 \input{tables/tab_full_results}
73 67
74 68 \begin{figure}[!htbp]
75 69 \centering
76 70 \includegraphics[width=0.8\textwidth]{fig2_coefficient_plot.pdf}
77 −\caption{Hedonic price impact of semantic similarity dimensions (Model D). Green bars indicate positive effects; red bars indicate negative effects. Gray bars are not statistically significant at the 5\% level. Error bars show 95\% confidence intervals.}
71 +\caption{Price impact of the semantic similarity dimensions in Model~D. Green bars indicate positive and red bars negative associations; grey bars are not significant at the 5\% level. Error bars are 95\% confidence intervals.}
78 72 \label{fig:coefficient_plot}
79 73 \end{figure}
80 74
81 −\subsubsection{Positive Price Associations}
82 −
83 −Three semantic dimensions exhibit large, positive, and highly significant associations with listing prices.
84 −
85 −\textbf{Modern/Contemporary} ($+16.4\%$, $p < 0.001$). Listings semantically closer to modern/contemporary reference descriptions---emphasizing contemporary architecture, minimalist design, smart home technology, and energy-efficient construction---are associated with the highest price premium. This is consistent with revealed preferences for modern aesthetics and functional design in the Quebec housing market.
86 −
87 −\textbf{Luxury} ($+14.2\%$, $p < 0.001$). Language describing premium finishes (quartz, granite, hardwood), gourmet kitchens, spa-like bathrooms, and home automation systems is associated with a substantial price premium. This dimension captures quality variation that is invisible to standard structural variables: two properties with the same number of bathrooms can differ enormously in finish quality, and the listing text registers this difference.
88 −
89 −\textbf{Land \& Nature} ($+13.0\%$, $p < 0.001$). Descriptions of wooded lots, professional landscaping, privacy, and access to natural surroundings are associated with a significant positive price gradient, consistent with the well-documented value of outdoor amenity space in residential markets.
90 −
91 −\textbf{Waterfront} ($+4.7\%$, $p < 0.001$) and \textbf{Panoramic View} ($+3.0\%$, $p = 0.01$) capture location-specific amenities---access to water and scenic views---that are not reflected in standard structural variables but are associated with higher prices.
75 +Three dimensions carry large positive associations. \textbf{Modern/Contemporary} (+16.4\% per standard deviation, $p < 0.001$) is the largest: listings closer to the modern-design reference---contemporary architecture, clean lines, smart-home and energy-efficient construction---are the most expensive conditional on structure. \textbf{Luxury} (+14.2\%) captures premium finishes, gourmet kitchens and spa-like bathrooms, quality variation that bathroom counts do not record. \textbf{Land \& Nature} (+13.0\%) captures wooded lots, landscaping, privacy and natural surroundings. \textbf{Waterfront} (+4.7\%) and \textbf{Panoramic View} (+3.0\%) are smaller and positive.
92 76
93 −\subsubsection{Negative Price Associations}
94 −
95 −Several dimensions exhibit negative coefficients that, upon closer examination, reflect market segmentation rather than value destruction per se (see Section~\ref{sec:identification} for the identification discussion).
96 −
97 −\textbf{Family-Friendly} ($-11.6\%$, $p < 0.001$). This is the most strongly negative dimension. Descriptions emphasizing proximity to schools, parks, and family amenities characterize lower-priced suburban markets. After controlling for structural characteristics, this language likely proxies for suburban location rather than indicating that family-oriented features reduce value. This coefficient should be interpreted with the caveat that it may absorb locational price variation in the absence of spatial controls.
98 −
99 −\textbf{New Construction} ($-10.5\%$, $p < 0.001$). The negative coefficient is counterintuitive at first glance, since ``new'' is typically a premium attribute. However, in Quebec's real estate geography, new residential developments are concentrated in peripheral suburban areas (e.g., Mirabel, Mascouche, Lachute) where land costs are lower. The ``new construction'' semantic dimension likely captures this locational sorting rather than an intrinsic quality discount; municipality fixed effects, once available, would disambiguate the two (Section~\ref{sec:discussion}).
100 −
101 −\textbf{Motivated Seller} ($-8.5\%$, $p < 0.001$). This is consistent with the information asymmetry literature \citep{levitt2008information}: language signaling seller urgency (``must sell,'' ``price reduced,'' ``estate sale'') reveals a weak bargaining position and is associated with a price discount relative to comparable properties with non-urgent descriptions.
102 −
103 −\textbf{Needs Renovation} ($-7.9\%$, $p < 0.001$). Descriptions indicating that a property requires work are associated with lower prices, consistent with the cost of deferred maintenance being capitalized into the listing price.
77 +Several dimensions carry negative associations. \textbf{Family-Friendly} ($-11.6\%$) and \textbf{New Construction} ($-10.5\%$) are the largest; both describe segments---suburban family markets, peripheral new developments---whose price levels are lower, so that the language marks location rather than a disamenity. \textbf{Quiet \& Peaceful} ($-9.5\%$) likewise characterises rural and peripheral settings. \textbf{Motivated Seller} ($-8.5\%$) and \textbf{Needs Renovation} ($-7.9\%$) have the signs expected from the disclosure of urgency and of deferred maintenance. \textbf{Bright \& Spacious} ($-8.9\%$), \textbf{Energy Efficient} ($-7.8\%$) and \textbf{Premium Location} ($-6.1\%$) are negative against expectation, and \textbf{Entry-Level} (+10.4\%) is positive against expectation. The first version of this paper did not discuss these four anomalies. They are the signature of the strong collinearity documented below: when 20 projections of the same embedding are correlated at 0.66--0.97, a coefficient measures the association with the part of a dimension that is orthogonal to the other nineteen, and that residual part need not carry the dimension's intended meaning. Entry-Level, for instance, is correlated at 0.97 with Motivated Seller, and its positive coefficient is the mirror image of Motivated Seller's negative one. Section~\ref{sec:extended} shows that Entry-Level, New Construction, Energy Efficient and Bright \& Spacious change sign when the encoder is changed, whereas Luxury, Land \& Nature, Family-Friendly, Quiet \& Peaceful and Needs Renovation do not.
104 78
105 79 \subsection{Semantic Profiles Across Price Quintiles}
106 80
107 −Figure~\ref{fig:quintile_heatmap} visualizes the mean cosine similarity for each reference dimension across price quintiles, revealing how the semantic ``fingerprint'' of listing descriptions varies with price level.
81 +Figure~\ref{fig:quintile_heatmap} displays the mean similarity on each dimension by price quintile.
108 82
109 83 \begin{figure}[!htbp]
110 84 \centering
111 85 \includegraphics[width=0.85\textwidth]{fig4_quintile_heatmap.pdf}
112 −\caption{Mean cosine similarity by price quintile across 20 reference dimensions.}
86 +\caption{Mean cosine similarity by price quintile across the 20 reference dimensions.}
113 87 \label{fig:quintile_heatmap}
114 88 \begin{minipage}{0.9\textwidth}
115 89 \footnotesize
116 −Notes: Warmer colors indicate higher similarity. Each cell reports the mean cosine similarity between listings in the given price quintile and the corresponding reference description.
90 +Notes: Warmer colours indicate higher similarity. Each cell is the mean cosine similarity between the listings of a price quintile and the reference description.
117 91 \end{minipage}
118 92 \end{figure}
119 93
120 −The gradient reveals that lower-priced properties score higher on nearly all dimensions due to longer, more detailed descriptions. The relative differences across dimensions are nevertheless informative: moving from the bottom to the top quintile, the steepest declines occur for Motivated Seller, Entry-Level, and Premium Location, while Land \& Nature, Modern/Contemporary, and Panoramic View decline the least---precisely the dimensions that carry positive premiums in the regression results.
94 +Lower-priced listings score higher on nearly every dimension. The first version attributed this gradient to longer descriptions; the language analysis of Section~\ref{sec:data_language} shows that it is mainly the rising share of English listings in the upper quintiles. The relative differences across dimensions remain informative: from the bottom to the top quintile the steepest declines are for Motivated Seller, Entry-Level and Premium Location, and the smallest for Land \& Nature, Modern/Contemporary and Panoramic View---the dimensions with positive coefficients in the regression.
121 95
122 96 \subsection{Inter-Reference Correlations}
123 97
124 −Figure~\ref{fig:corr_matrix} presents the correlation matrix between the 20 similarity dimensions.
98 +Figure~\ref{fig:corr_matrix} presents the correlation matrix of the 20 similarities.
125 99
126 100 \begin{figure}[!htbp]
127 101 \centering
128 102 \includegraphics[width=0.75\textwidth]{fig5_correlation_matrix.pdf}
129 −\caption{Pearson correlation matrix between semantic similarity dimensions (lower triangle).}
103 +\caption{Pearson correlation matrix of the semantic similarity dimensions (lower triangle).}
130 104 \label{fig:corr_matrix}
131 105 \begin{minipage}{0.9\textwidth}
132 106 \footnotesize
133 −Notes: Correlations are computed across all $n = 17{,}087$ observations. The strong positive correlations largely reflect the common influence of description length and verbosity on similarity scores.
107 +Notes: Correlations across all $n = 17{,}087$ listings. The uniformly strong positive correlations reflect a common component of the similarity scores---mainly the language of the listing, secondarily its length and register.
134 108 \end{minipage}
135 109 \end{figure}
136 110
137 −Inter-reference correlations are strong and uniformly positive, ranging from 0.66 to 0.97 with a mean of 0.84. This common variation is driven primarily by description length and verbosity: detailed listings score higher on multiple dimensions simultaneously. The strongest correlations occur between Entry-Level and Motivated Seller ($r = 0.97$)---both characteristic of value-oriented listings---and between Luxury and Renovated ($r = 0.95$), which share upgrade-related vocabulary. This pronounced collinearity motivates two design features of the analysis: the inclusion of description length as a control, which absorbs much of the shared variation, and the multicollinearity diagnostics reported in Section~\ref{sec:robustness}, which quantify its consequences for inference. It also implies that individual semantic coefficients are best read as partial associations within a correlated block of quality signals rather than as isolated effects.
111 +The correlations are uniformly positive and strong, from 0.66 to 0.97 with a mean of 0.84, and the first principal component of the 20 similarities accounts for 86\% of their variance. The common component is, to a large extent, the language of the listing (Table~\ref{tab:language}): the first principal component is correlated at $-0.82$ with the English indicator and at only 0.20 with description length. The strongest pairwise correlations are between Entry-Level and Motivated Seller ($r = 0.97$), both characteristic of value-oriented French listings, and between Luxury and Renovated ($r = 0.95$), which share upgrade vocabulary. Individual semantic coefficients are therefore partial associations within a correlated block, and the block-level evidence is the most robust object of inference; Section~\ref{sec:robustness} quantifies the consequences for standard errors and Section~\ref{sec:extended} for the stability of the coefficients.
138 112
139 −\subsection{Illustrative Relationships}
113 +\subsection{Illustrative Bivariate Relationships and Residual Diagnostics}
140 114
141 −Figure~\ref{fig:scatter} presents scatter plots for four selected dimensions, illustrating the heterogeneity in relationships between semantic similarity and price.
115 +Figure~\ref{fig:scatter} shows bivariate scatter plots for four dimensions; these relationships do not control for structure, length or language and are shown for illustration only. Figure~\ref{fig:diagnostics} presents residual diagnostics for Model~D. The residual-versus-fitted plot reveals heteroskedasticity, with larger dispersion at both ends of the fitted distribution, which motivates the HC3 standard errors; the normal quantile plot shows heavier-than-normal tails, especially in the upper tail, consistent with the right skew of housing prices even after the log transformation. Least squares remains consistent under these conditions and the robust standard errors remain valid.
142 116
143 117 \begin{figure}[!htbp]
144 118 \centering
145 119 \includegraphics[width=0.8\textwidth]{fig6_scatter_plots.pdf}
146 −\caption{Bivariate relationships between selected semantic similarities and log-price.}
120 +\caption{Bivariate relationships between selected semantic similarities and log price.}
147 121 \label{fig:scatter}
148 122 \begin{minipage}{0.9\textwidth}
149 123 \footnotesize
150 −Notes: Lines show ordinary least squares linear fit. These bivariate relationships do not control for structural variables or description length.
124 +Notes: Lines are ordinary least squares fits. The relationships are bivariate and do not control for structural variables, description length or language.
151 125 \end{minipage}
152 126 \end{figure}
153 127
154 −\subsection{Residual Diagnostics}
155 −
156 −Figure~\ref{fig:diagnostics} presents residual diagnostics for the full model, including a residual-versus-fitted plot and a normal Q-Q plot.
157 −
158 128 \begin{figure}[!htbp]
159 129 \centering
160 130 \includegraphics[width=0.85\textwidth]{fig11_residual_diagnostics.pdf}
161 −\caption{Residual diagnostics for Model D: (a) residuals vs.\ fitted values; (b) normal Q-Q plot.}
131 +\caption{Residual diagnostics for Model~D: (a) residuals against fitted values; (b) normal quantile plot.}
162 132 \label{fig:diagnostics}
163 133 \begin{minipage}{0.9\textwidth}
164 134 \footnotesize
165 −Notes: Panel (a) plots OLS residuals against fitted values, revealing mild heteroskedasticity at the tails. Panel (b) compares the empirical residual distribution to the standard normal, showing heavier-than-normal tails.
135 +Notes: Panel (a) plots least-squares residuals against fitted values and shows heteroskedasticity at the tails. Panel (b) compares the residual distribution with the normal and shows heavier-than-normal tails.
166 136 \end{minipage}
167 137 \end{figure}
168 −
169 −The residual plot (panel a) reveals mild heteroskedasticity, with residual variance increasing at the extremes of the fitted value distribution. This motivates our use of HC3 robust standard errors. The Q-Q plot (panel b) shows approximate normality in the central distribution with heavier-than-normal tails, particularly in the upper tail---consistent with the well-known right-skew of housing prices even after log transformation. The OLS coefficient estimates remain consistent under these conditions, and the HC3 standard errors provide valid inference.
modified paper/sections/robustness.tex +18 −26
@@ -1,57 +1,49 @@
1 1 % Author: Simon-Pierre Boucher — contact@spboucher.ai
2 2 %
3 3 %======================================================================
4 −\section{Robustness Analysis} \label{sec:robustness}
4 +\section{Robustness of the Baseline} \label{sec:robustness}
5 5 %======================================================================
6 6
7 −To assess the sensitivity of our findings to modeling assumptions, sample composition, and estimation techniques, we conduct a battery of robustness checks. These analyses address five potential concerns: heteroskedasticity, multicollinearity among semantic features, sensitivity to outliers, distributional heterogeneity across price quantiles, and variable selection stability. All statistics reported in this section are produced by the replication pipeline accompanying the paper.
7 +This section reports the robustness checks of the first version of the paper, all re-executed by the replication pipeline: heteroskedasticity diagnostics, variance inflation factors, quantile regressions, trimming of extreme prices, bootstrap inference, regularised selection and a comparison with principal components of the embeddings. They address estimation and sampling issues within the baseline specification; the threats to interpretation raised by language, location and measurement are the subject of Section~\ref{sec:extended}.
8 8
9 −\subsection{Heteroskedasticity Diagnostics}
9 +\subsection{Heteroskedasticity}
10 10
11 −The Breusch-Pagan test \citep{breusch1979simple} applied to Model~D strongly rejects the null hypothesis of homoskedasticity (LM $= 768.0$, $p < 0.001$). This result formally justifies our use of HC3 heteroskedasticity-consistent standard errors throughout. The pattern of heteroskedasticity---residual variance increasing at both tails of the fitted value distribution (Figure~\ref{fig:diagnostics}, panel a)---is typical of housing price models and reflects the greater price dispersion in both the lowest-quality and highest-quality segments of the market \citep{goodman1995age}.
11 +The Breusch--Pagan test \citep{breusch1979simple} applied to Model~D rejects homoskedasticity (LM $= 768.0$, $p < 0.001$), which justifies the HC3 standard errors used throughout. The pattern---larger residual variance at both tails of the fitted distribution (Figure~\ref{fig:diagnostics}, panel a)---is typical of housing price equations \citep{goodman1995age}.
12 12
13 13 \subsection{Variance Inflation Factors}
14 14
15 −The strong correlations among the 20 cosine similarity measures (Figure~\ref{fig:corr_matrix}) translate into substantial multicollinearity by conventional standards: variance inflation factors (VIFs) computed for Model~D average 17.2 across the similarity variables, and 16 of the 20 exceed the conventional threshold of 10 \citep{obrien2007caution}, with maxima for Renovated (41.6) and Entry-Level (40.7). This is an expected consequence of the design: all 20 features are projections of the same embedding onto related quality concepts, and they share the common influence of description verbosity.
15 +The correlations among the similarities translate into substantial multicollinearity: the variance inflation factors of the 20 similarity variables in Model~D average 17.2, 16 of them exceed 10, and the maxima are Renovated (41.6) and Entry-Level (40.7). This is a consequence of the design: all 20 features are projections of the same embedding and share its language and register. As \citet{obrien2007caution} emphasises, a high VIF signals imprecision rather than bias and is not by itself grounds for respecification. Three facts bound the damage. Despite the inflated standard errors, 16 of the 20 coefficients are individually significant at 5\%; the block-level evidence (joint tests, $R^2$ gain) is unaffected by collinearity within the block; and the coefficients are stable under trimming and bootstrap resampling. What collinearity does undermine is the attribution of effects to particular dimensions---a point that Section~\ref{sec:extended} makes concrete by showing that several coefficients depend on the reference phrasing and on the encoder.
16 16
17 −Three considerations indicate that this collinearity inflates standard errors without invalidating the analysis. First, as \citet{obrien2007caution} emphasizes, a high VIF is not by itself grounds for respecification: it signals imprecision, not bias, and the relevant question is whether the affected coefficients remain informative. Despite VIF-inflated standard errors, 16 of the 20 similarity measures are individually significant at the 5\% level, indicating that each retains sufficient unique variance for estimation. Second, the block-level evidence---the joint \fstat{} of 99.53 and the 6-percentage-point $R^2$ gain---is unaffected by collinearity among the block's members. Third, the coefficient estimates are stable across the winsorized and bootstrap re-estimations reported below, which would not be the case if the estimates were fragile artifacts of a near-singular design. The practical implication, developed in Section~\ref{sec:discussion}, is that individual semantic coefficients should be interpreted as partial associations within a correlated block of quality signals, with block-level conclusions being the most robust.
17 +\subsection{Quantile Regressions}
18 18
19 −\subsection{Quantile Regression Analysis}
20 −
21 −To examine whether the implicit prices of semantic dimensions vary across the price distribution, we estimate Model~D using quantile regression \citep{koenker1978regression, koenker2005quantile} at the 25th, 50th, and 75th percentiles. Table~\ref{tab:quantile} reports the coefficients for the six most economically significant semantic dimensions.
19 +Table~\ref{tab:quantile} reports quantile regressions of Model~D \citep{koenker1978regression, koenker2005quantile} at the 25th, 50th and 75th percentiles for the six dimensions with the largest baseline coefficients.
22 20
23 21 \input{tables/tab_quantile}
24 22
25 −Three patterns emerge. First, the Luxury premium \textit{increases} monotonically with property value: a one-standard-deviation increase in luxury similarity is associated with a 9.7\% premium at the 25th percentile but a 17.3\% premium at the 75th percentile. This is consistent with quality complementarities---luxury features are valued more in properties that already occupy the upper market segment. Second, the negative effects of Motivated Seller and Needs Renovation language \textit{attenuate} at higher quantiles (the Motivated Seller discount shrinks from 8.7\% at $\tau = 0.25$ to a statistically insignificant 3.8\% at $\tau = 0.75$), suggesting that urgency and condition discounts are proportionally smaller for high-value properties where buyer pools are less price-sensitive. Third, the Modern/Contemporary and Land \& Nature premiums are remarkably stable across quantiles, indicating that these dimensions carry value throughout the market rather than in a particular segment.
26 −
27 −These heterogeneous effects across the conditional price distribution confirm that the OLS estimates represent averages across meaningfully different market segments, and they strengthen the economic interpretation of the semantic dimensions.
23 +Three patterns emerge. The Luxury coefficient increases monotonically with the conditional price level, from a 9.7\% premium per standard deviation at $\tau = 0.25$ to 17.3\% at $\tau = 0.75$, consistent with the finding of \citet{zietz2007determinants} that many attributes are valued more in upper segments. The Motivated Seller and Needs Renovation discounts attenuate at higher quantiles---the Motivated Seller coefficient falls from $-8.7\%$ at $\tau = 0.25$ to an insignificant $-3.8\%$ at $\tau = 0.75$. Land \& Nature is stable across quantiles and Modern/Contemporary is larger at both tails than at the median. The New Construction coefficient, not shown in the table, becomes \textit{more} negative at higher quantiles ($-0.068$, $-0.079$ and $-0.142$ at the three quantiles); the first version of this paper stated the opposite and used it to support a location-proxy reading of that coefficient. We withdraw that statement; the location-proxy reading is instead supported by the fixed-effects and multilingual results of Section~\ref{sec:extended}.
28 24
29 −\subsection{Sensitivity to Outliers}
25 +\subsection{Trimmed Prices}
30 26
31 −We re-estimate Model~D after trimming prices below the 1st and above the 99th percentile, removing 341 observations from the tails of the price distribution. The trimmed model yields an adjusted $R^2$ of 0.486, somewhat lower than the full-sample estimate of 0.511---as expected, since trimming removes exactly the price variation that the model exploits. Importantly, no coefficient changes sign relative to the full model, and all 16 similarity measures that are significant in the full model remain significant in the trimmed specification. The largest coefficient shifts are for Entry-Level ($-0.024$) and Motivated Seller ($+0.023$), both within the confidence intervals of the full-model estimates. This stability confirms that our results are not driven by extreme observations in either tail of the price distribution.
27 +Re-estimating Model~D after removing the 341 listings below the 1st or above the 99th percentile of price yields an adjusted $R^2$ of 0.486, lower than 0.511 because trimming removes price variation, with no sign reversal and all 16 significant similarities remaining significant. The largest coefficient changes are for Entry-Level ($-0.024$) and Motivated Seller (+0.023), both within the baseline confidence intervals. The results are not driven by the extreme prices noted in Section~\ref{sec:data}.
32 28
33 29 \subsection{Bootstrap Inference}
34 30
35 −To verify that our HC3 standard errors provide reliable inference, we estimate Model~D using 1,000 nonparametric bootstrap replications \citep{efron1993introduction}. For each replication, we resample $n = 17{,}087$ observations with replacement and re-estimate the model, obtaining the empirical distribution of each coefficient. Bootstrap standard errors are within 9\% of the HC3 estimates for every semantic dimension---and within 5\% for 15 of the 20---and the bootstrap 95\% percentile confidence intervals closely match the HC3-based intervals. This concordance confirms the reliability of our asymptotic inference under the observed heteroskedasticity pattern.
31 +A nonparametric pairs bootstrap with 1,000 replications \citep{efron1993introduction}, resampling the 17,087 listings with replacement, gives standard errors within 9\% of the HC3 estimates for every semantic coefficient and within 5\% for 15 of the 20; the percentile 95\% intervals coincide closely with the HC3 intervals. Asymptotic inference is reliable under the observed heteroskedasticity. The bootstrap resamples listings independently and therefore does not address within-area dependence, which is handled by clustering in Section~\ref{sec:extended}.
36 32
37 −\subsection{Regularized Variable Selection}
33 +\subsection{Regularised Selection}
38 34
39 −As an alternative to significance-based variable selection (Model~E), we employ Lasso \citep{tibshirani1996regression} and elastic net \citep{zou2005regularization} regularization with five-fold cross-validation over the standardized Model~D design. At the cross-validated penalty, both procedures retain a sparse set of four similarity variables (Needs Renovation, Premium Location, Income/Investment, and Family-Friendly) and shrink the remainder to zero.
35 +As an alternative to significance-based selection, Lasso \citep{tibshirani1996regression} and elastic-net \citep{zou2005regularization} regressions with five-fold cross-validated penalties retain only four similarities (Needs Renovation, Premium Location, Income/Investment and Family-Friendly) and shrink the other sixteen to zero. This is the textbook behaviour of $\ell_1$ penalties under strong collinearity: one representative per correlated block is kept and its near-duplicates are discarded, so the retained variables stand for their blocks rather than for the ``true'' non-zero effects. The exercise confirms that the semantic block carries predictive signal that survives penalisation, and it reinforces the message that variable-by-variable attribution within the block is fragile.
40 36
41 −This aggressive selection is the textbook behavior of $\ell_1$ penalties under strong collinearity: when regressors are correlated at 0.66--0.97, the Lasso selects one representative per correlated block and discards near-duplicates, so the retained variables act as proxies for their blocks rather than as a list of the ``true'' non-zero effects \citep{zou2005regularization}. The exercise therefore complements, rather than replicates, the significance-based selection in Model~E: it confirms that the semantic block contains genuine predictive signal that survives penalization, while reinforcing the message of the VIF analysis that variable-by-variable attributions within the block are sensitive to the selection criterion. Conclusions in this paper that rely on individual dimensions (e.g., the Luxury gradient) are accordingly cross-checked against the quantile and bootstrap evidence above.
37 +\subsection{Comparison with Principal Components}
42 38
43 −\subsection{Comparison with Alternative Text Representations}
44 −
45 −To contextualize the predictive and inferential value of the reference-based approach, Table~\ref{tab:text_comparison} compares it with alternative representations of the same text, estimated on identical samples. For each method, we report the $\Delta R^2$ gain over the structural-only Model~A together with an assessment of interpretability.
39 +Table~\ref{tab:text_comparison} compares the reference projections with alternative representations of the same text on the same sample.
46 40
47 41 \input{tables/tab_text_comparison}
48 42
49 −Two results stand out. First, \textit{what} the text says matters more than \textit{how much}: description length alone adds 1.2 percentage points of $R^2$, whereas content-based features add 4.4--7.8 points. Second, there is a measurable price of interpretability. Twenty principal components of the raw embeddings---which capture 49.5\% of the embedding variance but have no economic meaning---outperform the 20 reference similarities in pure fit ($\Delta R^2$ of $+0.070$ vs.\ $+0.044$ without the length control). The reference-based approach deliberately trades roughly two percentage points of $R^2$ for features that support coefficient-level economic inference; for the inferential goals of hedonic analysis, we consider this trade worthwhile, while applications that only require prediction may prefer the unrestricted embedding space.
43 +Content matters more than quantity: length alone adds 1.2 points of $R^2$, content-based features 4.4--7.8 points. There is also a measurable price of interpretability: 20 principal components of the raw embeddings, which capture 49.5\% of the embedding variance but have no economic names, fit better than the 20 reference similarities ($\Delta R^2$ of +0.070 against +0.044 without the length control). The 20 similarities computed with the multilingual encoder (Section~\ref{sec:extended}) close most of this gap (+0.069). The reference-based approach trades roughly two percentage points of in-sample fit for named features; Section~\ref{sec:extended} shows that the same ordering holds out of sample.
50 44
51 −\subsection{Summary of Robustness Findings}
45 +\subsection{Summary}
52 46
53 −Table~\ref{tab:robustness_summary} summarizes the robustness checks.
47 +Table~\ref{tab:robustness_summary} summarises the checks of this section together with those of Section~\ref{sec:extended}. Within the baseline specification, the joint explanatory power of the semantic block and the signs of the main coefficients are stable to the estimation method, to trimming and to the quantile considered. The diagnostics also delineate the limits of the evidence: the dimensions are strongly collinear, individual coefficients are measured imprecisely relative to the block, and regularised selection does not single out the same variables as significance testing.
54 48
55 49 \input{tables/tab_robustness_summary}
56 −
57 −The overall picture is that the paper's central findings---the joint explanatory power of semantic features and the sign and approximate magnitude of the main implicit price gradients---are stable across estimation methods, sample definitions, and distributional assumptions. The diagnostics also delineate the limits of the evidence: the semantic dimensions are strongly collinear, so individual coefficients are measured imprecisely relative to the block as a whole, and regularized selection does not single out the same variables as significance testing. Extensions that would further strengthen the analysis---spatial fixed effects, alternative embedding models, and systematic reference-description sensitivity analysis---are discussed in Sections~\ref{sec:discussion} and~\ref{sec:conclusion}.
added paper/tables/tab_block_tests.tex +27 −0
@@ -0,0 +1,27 @@
1 +% Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +% Generated by scripts/08_revision_tables.py — do not edit by hand.
3 +\begin{table}[!htbp]
4 +\centering
5 +\caption{Domain-level block tests of the semantic dimensions.}
6 +\label{tab:block_tests}
7 +\small
8 +\begin{tabular}{lR{1.0cm}R{1.4cm}R{1.6cm}R{1.4cm}R{1.6cm}}
9 +\toprule
10 +& & \multicolumn{2}{c}{\textbf{D-L (HC3)}} & \multicolumn{2}{c}{\textbf{D-L + FSA FE (clustered)}} \\
11 +\cmidrule(lr){3-4} \cmidrule(lr){5-6}
12 +\textbf{Domain} & $\boldsymbol{q}$ & $\boldsymbol{F}$ & $\boldsymbol{p}$ & $\boldsymbol{F}$ & $\boldsymbol{p}$ \\
13 +\midrule
14 +Quality \& Standing & 2 & 51.60 & $< 0.001$ & 18.77 & $< 0.001$ \\
15 +Condition & 2 & 4.19 & 0.015 & 7.85 & $< 0.001$ \\
16 +Physical Attributes & 4 & 13.16 & $< 0.001$ & 8.51 & $< 0.001$ \\
17 +Location \& Setting & 5 & 40.39 & $< 0.001$ & 67.80 & $< 0.001$ \\
18 +Style \& Character & 5 & 22.74 & $< 0.001$ & 17.29 & $< 0.001$ \\
19 +Market Signals & 2 & 6.85 & 0.001 & 3.11 & 0.046 \\
20 +All 20 dimensions & 20 & 22.61 & $< 0.001$ & 31.44 & $< 0.001$ \\
21 +\bottomrule
22 +\end{tabular}
23 +\begin{minipage}{\textwidth}
24 +\vspace{4pt}\footnotesize
25 +\textit{Notes:} Wald tests that the $q$ coefficients of the dimensions belonging to each domain of Table~\ref{tab:references} are jointly zero, under the D-L specification with HC3 standard errors and under D-L with 415 FSA fixed effects and standard errors clustered by FSA.
26 +\end{minipage}
27 +\end{table}
modified paper/tables/tab_descriptive.tex +5 −7
@@ -4,7 +4,6 @@
4 4 \centering
5 5 \caption{Descriptive statistics for structural and textual variables ($n = 17{,}087$).}
6 6 \label{tab:descriptive}
7 −\begin{threeparttable}
8 7 \small
9 8 \begin{adjustbox}{max width=\textwidth}
10 9 \begin{tabular}{lR{1.6cm}R{1.7cm}R{1.2cm}R{1.4cm}R{1.4cm}R{1.4cm}R{1.9cm}}
@@ -18,14 +17,13 @@ Bathrooms & 1.8 & 0.9 & 0 & 1 & 2 & 2 & 18 \\
18 17 Half-bathrooms & 0.5 & 0.6 & 0 & 0 & 0 & 1 & 12 \\
19 18 Parking spaces & 5.5 & 5.1 & 0 & 2 & 4 & 7 & 152 \\
20 19 Stories & 1.4 & 0.7 & 0 & 1 & 2 & 2 & 2 \\
21 −Lot size (sq.\ ft.) & 80{,}551 & 5{,}514{,}237 & 0 & 683 & 2{,}995 & 8{,}316 & 719{,}640{,}188 \\
20 +Lot size (raw field, mixed units) & 80{,}551 & 5{,}514{,}237 & 0 & 683 & 2{,}995 & 8{,}316 & 719{,}640{,}188 \\
22 21 Description length (char.) & 510 & 151 & 22 & 430 & 549 & 634 & 703 \\
23 22 \bottomrule
24 23 \end{tabular}
25 24 \end{adjustbox}
26 −\begin{tablenotes}
27 −\footnotesize
28 −\item \textit{Notes:} The sample is restricted to single-family houses with a positive listing price and a description of at least 20 characters. Descriptions are truncated at approximately 700 characters in the data export, which bounds the description-length variable. The lot-size field is noisy (units are not standardized at the source), which motivates its cautious interpretation in the regressions.
29 −\end{tablenotes}
30 −\end{threeparttable}
25 +\begin{minipage}{\textwidth}
26 +\vspace{4pt}\footnotesize
27 +\textit{Notes:} The sample is restricted to single-family houses with a positive listing price and a description of at least 20 characters. Descriptions are truncated at approximately 700 characters in the data export, which bounds the description-length variable. The raw lot-size field mixes units at the source (61\\% of values are reported in m$^2$, 32\\% in sq.\\ ft., 2\\% in acres or hectares, 4\\% missing) and is used as reported in the baseline models for comparability with the first version of the paper; a unit-corrected lot area is used in Section~\\ref{sec:extended}.
28 +\end{minipage}
31 29 \end{table}
added paper/tables/tab_extended_specs.tex +44 −0
@@ -0,0 +1,44 @@
1 +% Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +% Generated by scripts/08_revision_tables.py — do not edit by hand.
3 +\begin{table}[!htbp]
4 +\centering
5 +\caption{Semantic implicit price gradients (\% per standard deviation) across specifications and encoders.}
6 +\label{tab:extended_specs}
7 +\small
8 +\begin{adjustbox}{max width=\textwidth}
9 +\begin{tabular}{lR{1.5cm}R{1.5cm}R{1.8cm}R{1.6cm}R{1.6cm}R{1.9cm}}
10 +\toprule
11 +\textbf{Dimension} & \textbf{D} & \textbf{D-L} & \textbf{D-L + FSA FE} & \textbf{French only} & \textbf{English only} & \textbf{ML-D-L + FSA FE} \\
12 +\midrule
13 +Luxury & 14.2*** & 16.5*** & 10.7*** & 4.4*** & 7.6*** & 4.5** \\
14 +Entry-Level & 10.4*** & 15.6*** & 9.7*** & 0.7 & 10.3*** & $-$4.9*** \\
15 +Renovated & 5.1 & 5.8* & 9.5*** & 4.3*** & 5.0* & $-$5.6*** \\
16 +Needs Renovation & $-$7.9*** & $-$4.6** & $-$3.6* & $-$0.6 & $-$3.7* & $-$4.5** \\
17 +Bright \& Spacious & $-$8.9*** & $-$7.5*** & $-$4.4* & $-$3.0** & $-$1.8 & 3.5* \\
18 +Land \& Nature & 13.0*** & 16.2*** & 15.2*** & 10.2*** & 11.1*** & 22.1*** \\
19 +Panoramic View & 3.0** & $-$1.4 & $-$3.4* & 0.7 & $-$4.6*** & 0.3 \\
20 +Premium Location & $-$6.1*** & $-$5.7*** & $-$12.6*** & $-$6.2*** & $-$4.5*** & $-$0.6 \\
21 +Quiet \& Peaceful & $-$9.5*** & $-$12.8*** & $-$11.7*** & $-$9.4*** & $-$5.3*** & $-$6.0*** \\
22 +Income/Investment & $-$3.1 & $-$4.7** & 2.9 & 2.1* & $-$1.6 & 4.7*** \\
23 +Garage \& Parking & 1.9* & 3.3*** & 0.8 & 2.3*** & $-$1.4 & 6.0*** \\
24 +Finished Basement & $-$3.6* & $-$5.4*** & $-$4.9*** & $-$3.4*** & 0.4 & $-$10.3*** \\
25 +Modern/Contemporary & 16.4*** & 14.8*** & 9.3*** & 7.6*** & 3.1* & $-$0.2 \\
26 +Heritage/Character & 1.0 & 1.8 & $-$2.6* & $-$1.1 & $-$3.6* & 4.3*** \\
27 +Energy Efficient & $-$7.8*** & $-$6.1*** & $-$5.1*** & $-$2.0* & $-$3.9** & 1.8* \\
28 +Motivated Seller & $-$8.5*** & $-$2.9 & $-$4.0* & $-$1.3 & $-$3.6* & 0.4 \\
29 +Family-Friendly & $-$11.6*** & $-$7.8*** & $-$6.4*** & $-$2.4*** & $-$4.1*** & $-$7.4*** \\
30 +Waterfront & 4.7*** & 8.1*** & 15.5*** & 4.9*** & 9.4*** & 0.2 \\
31 +New Construction & $-$10.5*** & $-$12.1*** & $-$8.0*** & $-$6.2*** & $-$4.5** & 7.2*** \\
32 +Pool \& Landscaping & 2.5 & 2.5 & 3.5* & 2.4** & 0.4 & $-$11.9*** \\
33 +\midrule
34 +$n$ & 17{,}087 & 17{,}087 & 17{,}087 & 9{,}843 & 6{,}779 & 17{,}087 \\
35 +$R^2$ & 0.512 & 0.518 & 0.667 & 0.599 & 0.690 & 0.687 \\
36 +$\Delta R^2$ (semantic block) & 0.047 & 0.017 & 0.020 & 0.029 & 0.024 & 0.039 \\
37 +\bottomrule
38 +\end{tabular}
39 +\end{adjustbox}
40 +\begin{minipage}{\textwidth}
41 +\vspace{4pt}\footnotesize
42 +\textit{Notes:} Entries are $100\,(e^{\hat\gamma_j} - 1)$ for a one-standard-deviation increase in similarity $j$ (standard deviation computed on the estimation sample). D is the baseline full model (HC3 standard errors); D-L adds English and mixed-language indicators (HC3); ``+ FSA FE'' absorbs 415 forward-sortation-area fixed effects with standard errors clustered by FSA; the French-only and English-only columns re-estimate D with FSA fixed effects on each language subsample; ML-D-L replaces the encoder by paraphrase-multilingual-MiniLM-L12-v2. \signote
43 +\end{minipage}
44 +\end{table}
modified paper/tables/tab_full_results.tex +1 −1
@@ -2,7 +2,7 @@
2 2 % Generated by scripts/06_tables.py — do not edit by hand.
3 3 \begin{table}[!htbp]
4 4 \centering
5 −\caption{Full model (D) coefficient estimates. HC3 robust standard errors. All variables standardized.}
5 +\caption{Full model (D) coefficient estimates. HC3 robust standard errors. All variables standardised.}
6 6 \label{tab:full_results}
7 7 \small
8 8 \begin{adjustbox}{max width=\textwidth}
added paper/tables/tab_language.tex +30 −0
@@ -0,0 +1,30 @@
1 +% Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +% Generated by scripts/08_revision_tables.py — do not edit by hand.
3 +\begin{table}[!htbp]
4 +\centering
5 +\caption{Language of the listing descriptions and mean cosine similarity to the 20 French references.}
6 +\label{tab:language}
7 +\small
8 +\begin{adjustbox}{max width=\textwidth}
9 +\begin{tabular}{lR{1.2cm}R{1.1cm}R{1.3cm}R{1.6cm}R{1.3cm}R{1.5cm}R{1.7cm}}
10 +\toprule
11 +& & & & & & \multicolumn{2}{c}{\textbf{Mean similarity}} \\
12 +\cmidrule(lr){7-8}
13 +\textbf{Language} & $\boldsymbol{n}$ & \textbf{\%} & \textbf{Length} & \textbf{Median price} & $\boldsymbol{\overline{\ln P}}$ & \textbf{MiniLM-L6} & \textbf{Multilingual} \\
14 +\midrule
15 +French & 9{,}843 & 57.6 & 521 & \$499{,}900 & 13.128 & 0.434 & 0.395 \\
16 +English & 6{,}779 & 39.7 & 527 & \$749{,}900 & 13.605 & 0.204 & 0.352 \\
17 +Mixed / uninformative & 465 & 2.7 & 33 & \$599{,}000 & 13.260 & 0.080 & 0.073 \\
18 +\midrule
19 +\multicolumn{6}{l}{Share of the variance of the mean similarity explained by language ($\eta^2$)} & 0.862 & 0.525 \\
20 +\multicolumn{6}{l}{Correlation of the mean similarity with the English indicator} & $-$0.815 & $-$0.189 \\
21 +\multicolumn{6}{l}{Correlation of the mean similarity with description length} & 0.199 & 0.530 \\
22 +\multicolumn{6}{l}{Share of the variance of the 20 similarities on their first principal component} & 0.862 & 0.522 \\
23 +\bottomrule
24 +\end{tabular}
25 +\end{adjustbox}
26 +\begin{minipage}{\textwidth}
27 +\vspace{4pt}\footnotesize
28 +\textit{Notes:} Language is classified from French and English stop-word counts (ratio rule of 1.5; ``mixed'' listings are mostly short boilerplate such as ``See listing broker(s)''). Length is the mean number of characters. MiniLM-L6 is the paper's baseline encoder (all-MiniLM-L6-v2); Multilingual is paraphrase-multilingual-MiniLM-L12-v2 \citep{reimers2020multilingual}. The mean similarity is the average of the 20 cosine similarities of a listing.
29 +\end{minipage}
30 +\end{table}
added paper/tables/tab_oos.tex +32 −0
@@ -0,0 +1,32 @@
1 +% Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +% Generated by scripts/08_revision_tables.py — do not edit by hand.
3 +\begin{table}[!htbp]
4 +\centering
5 +\caption{Out-of-sample performance: random and spatial five-fold cross-validation.}
6 +\label{tab:oos}
7 +\small
8 +\begin{adjustbox}{max width=\textwidth}
9 +\begin{tabular}{lR{1.3cm}R{1.3cm}R{1.4cm}R{1.3cm}R{1.3cm}R{1.4cm}}
10 +\toprule
11 +& \multicolumn{3}{c}{\textbf{Random folds}} & \multicolumn{3}{c}{\textbf{FSA-grouped folds}} \\
12 +\cmidrule(lr){2-4} \cmidrule(lr){5-7}
13 +\textbf{Specification} & $\boldsymbol{R^2_{\text{oos}}}$ & \textbf{RMSE} & \textbf{MdAPE} & $\boldsymbol{R^2_{\text{oos}}}$ & \textbf{RMSE} & \textbf{MdAPE} \\
14 +\midrule
15 +A, raw lot-size field (for reference) & $-$1.036 & 1.003 & 27.5 & $-$1.309 & 1.068 & 27.6 \\
16 +A: structural & 0.480 & 0.507 & 27.3 & 0.475 & 0.509 & 27.3 \\
17 +B: A + description length & 0.489 & 0.502 & 27.1 & 0.484 & 0.505 & 27.3 \\
18 +B-L: B + language indicators & 0.523 & 0.485 & 26.9 & 0.518 & 0.488 & 27.0 \\
19 +D: B + 20 similarities & 0.528 & 0.483 & 26.9 & 0.522 & 0.486 & 27.0 \\
20 +D-L: D + language indicators & 0.534 & 0.480 & 26.6 & 0.528 & 0.483 & 26.7 \\
21 +B + 20 principal components of the embeddings & 0.544 & 0.475 & 26.5 & 0.537 & 0.478 & 26.7 \\
22 +B-L + 20 principal components & 0.544 & 0.475 & 26.5 & 0.537 & 0.478 & 26.7 \\
23 +ML-D: B + 20 multilingual similarities & 0.534 & 0.480 & 26.8 & 0.528 & 0.483 & 26.8 \\
24 +ML-D-L: B-L + 20 multilingual similarities & 0.551 & 0.471 & 26.4 & 0.545 & 0.474 & 26.5 \\
25 +\bottomrule
26 +\end{tabular}
27 +\end{adjustbox}
28 +\begin{minipage}{\textwidth}
29 +\vspace{4pt}\footnotesize
30 +\textit{Notes:} Five-fold cross-validation on the $n = 17{,}087$ listings; predictions for each fold are made from a model estimated on the other four folds, and the metrics are computed on the pooled out-of-fold predictions (Equations~\ref{eq:r2oos}--\ref{eq:mdape}). Random folds are drawn with seed 42; FSA-grouped folds hold out entire forward sortation areas, so that no held-out listing shares an FSA with the training data. RMSE is in log points; MdAPE is the median absolute percentage error of the price level. Except for the first row, the lot-size variable is the unit-corrected log lot area with a missing indicator; the raw field (mixed units, maximum $7.2 \times 10^8$) yields exploding out-of-fold predictions and a negative $R^2$. Principal components are estimated on the training folds only.
31 +\end{minipage}
32 +\end{table}
modified paper/tables/tab_parsimonious.tex +1 −1
@@ -2,7 +2,7 @@
2 2 % Generated by scripts/06_tables.py — do not edit by hand.
3 3 \begin{table}[!htbp]
4 4 \centering
5 −\caption{Parsimonious model (E) coefficient estimates. HC3 robust standard errors. All variables standardized.}
5 +\caption{Parsimonious model (E) coefficient estimates. HC3 robust standard errors. All variables standardised.}
6 6 \label{tab:parsimonious}
7 7 \small
8 8 \begin{adjustbox}{max width=\textwidth}
added paper/tables/tab_reference_sensitivity.tex +24 −0
@@ -0,0 +1,24 @@
1 +% Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +% Generated by scripts/08_revision_tables.py — do not edit by hand.
3 +\begin{table}[!htbp]
4 +\centering
5 +\caption{Sensitivity of Model~D to the phrasing of the reference descriptions.}
6 +\label{tab:reference_sensitivity}
7 +\small
8 +\begin{adjustbox}{max width=\textwidth}
9 +\begin{tabular}{lR{1.6cm}R{1.1cm}R{1.4cm}R{1.3cm}R{1.7cm}R{1.6cm}R{1.1cm}}
10 +\toprule
11 +\textbf{Reference variant} & \textbf{Corr.\ of similarities} & $\boldsymbol{R^2}$ & $\boldsymbol{\Delta R^2}$ \textbf{(sem.)} & \textbf{Block} $\boldsymbol{F}$ & \textbf{Corr.\ of coefficients} & \textbf{Sign agreement} & \textbf{Sig.} \\
12 +\midrule
13 +Baseline (full references) & 1.000 & 0.5122 & 0.048 & 54.3 & 1.000 & 100\% & 16/20 \\
14 +First half of each reference's phrases & 0.970 & 0.5185 & 0.054 & 63.5 & 0.625 & 81\% & 15/20 \\
15 +Second half of each reference's phrases & 0.929 & 0.5080 & 0.043 & 52.6 & 0.024 & 62\% & 11/20 \\
16 +Phrases in reverse order & 0.987 & 0.5066 & 0.042 & 51.6 & 0.805 & 88\% & 11/20 \\
17 +\bottomrule
18 +\end{tabular}
19 +\end{adjustbox}
20 +\begin{minipage}{\textwidth}
21 +\vspace{4pt}\footnotesize
22 +\textit{Notes:} Each reference text in Appendix Table~\ref{tab:reference_texts} is split into its comma-separated phrases and re-encoded with all-MiniLM-L6-v2 after the indicated perturbation; Model~D is then re-estimated with the 20 perturbed similarities. ``Corr.\ of similarities'' is the mean, over the 20 dimensions, of the correlation between perturbed and baseline similarity scores; ``Corr.\ of coefficients'' is the correlation between the 20 perturbed and baseline semantic coefficients; ``Sign agreement'' is the share of the 16 dimensions significant in the baseline whose coefficient keeps its sign; ``Sig.'' counts dimensions significant at 5\%. Block $F$ is the HC3 Wald test of the 20 semantic coefficients.
23 +\end{minipage}
24 +\end{table}
modified paper/tables/tab_references.tex +1 −1
@@ -36,7 +36,7 @@
36 36 & Heritage/Character & Period features, historic charm & Ambiguous \\
37 37 & New Construction & Newly built, never occupied & Positive \\
38 38 & Energy Efficient & Heat pump, solar, high insulation & Ambiguous \\
39 − & Family-Friendly & Schools, parks, safe neighborhood & Ambiguous \\
39 + & Family-Friendly & Schools, parks, safe neighbourhood & Ambiguous \\
40 40 \midrule
41 41 \multirow{2}{*}{Market Signals}
42 42 & Income/Investment & Rental income, investment potential & Ambiguous \\
modified paper/tables/tab_robustness_summary.tex +13 −2
@@ -6,7 +6,7 @@
6 6 \label{tab:robustness_summary}
7 7 \small
8 8 \begin{adjustbox}{max width=\textwidth}
9 −\begin{tabular}{llp{7.5cm}}
9 +\begin{tabular}{lp{3.2cm}p{8.2cm}}
10 10 \toprule
11 11 \textbf{Test} & \textbf{Main Result Stable?} & \textbf{Notes} \\
12 12 \midrule
@@ -16,8 +16,19 @@ Variance inflation factors & Yes (block level) & Substantial collinearity (mean
16 16 Bootstrap inference (1{,}000 rep.) & Yes & SE within 9\% of HC3 (15/20 within 5\%); CIs match \\
17 17 Trimmed prices (1st/99th pctile) & Yes & No sign reversals; all 16 significant dimensions remain significant \\
18 18 Quantile regression ($\tau = .25, .50, .75$) & Yes & Luxury premium increasing in price; discounts attenuate at upper quantiles \\
19 −Lasso / elastic net selection & Yes (block level) & Sparse selection of 4 block representatives; semantic signal survives penalization \\
19 +Lasso / elastic net selection & Yes (block level) & Sparse selection of 4 block representatives; semantic signal survives penalisation \\
20 20 PCA comparison & Yes & PCA fits better ($\Delta R^2$ +0.070 vs.\ +0.044) but is uninterpretable; reference approach preferred for inference \\
21 +\midrule
22 +\multicolumn{3}{l}{\textit{Added in the 2026 revision (Section~\ref{sec:extended})}} \\
23 +Language indicators & Yes (block level) & Semantic $\Delta R^2$ falls from 0.047 to 0.017; block $F = 22.6$; Motivated Seller loses significance \\
24 +FSA / municipality fixed effects & Yes (block level) & $\Delta R^2$ 0.020 / 0.016 within areas; clustered block $F = 31.4$ / 28.3 \\
25 +Clustered standard errors (FSA) & Yes & Semantic SEs 50\% larger on average; 14/20 significant in Model D \\
26 +Unit-corrected lot area, floor area & Yes (block level) & $\Delta R^2$ 0.013 (lot area) and 0.011 (floor-area subsample); Land \& Nature falls to +4.2\% \\
27 +Language subsamples & Yes & French only $\Delta R^2$ 0.029; English only 0.024; core signs identical \\
28 +Domain block tests & Yes & All six domains jointly significant; Market Signals weakest ($p = 0.046$ within FSAs) \\
29 +Out-of-sample (random, FSA-grouped folds) & Yes & $R^2_{\text{oos}}$ 0.489 $\to$ 0.528 (random), 0.484 $\to$ 0.522 (spatial); MdAPE 27.1\% $\to$ 26.9\% \\
30 +Reference phrasing & Block yes, coefficients no & $\Delta R^2$ 0.042--0.054; coefficient correlations 0.02--0.81 with baseline \\
31 +Multilingual encoder & Block yes, coefficients partly & $\Delta R^2$ 0.038--0.057; five core dimensions stable, several sign reversals \\
21 32 \bottomrule
22 33 \end{tabular}
23 34 \end{adjustbox}
added paper/tables/tab_spec_summary.tex +34 −0
@@ -0,0 +1,34 @@
1 +% Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +% Generated by scripts/08_revision_tables.py — do not edit by hand.
3 +\begin{table}[!htbp]
4 +\centering
5 +\caption{Incremental explanatory power of the 20 semantic similarities across extended specifications.}
6 +\label{tab:spec_summary}
7 +\small
8 +\begin{adjustbox}{max width=\textwidth}
9 +\begin{tabular}{lR{1.2cm}R{1.0cm}R{1.2cm}R{1.4cm}R{1.3cm}R{1.1cm}l}
10 +\toprule
11 +\textbf{Specification} & $\boldsymbol{n}$ & $\boldsymbol{R^2}$ & \textbf{Within} $\boldsymbol{R^2}$ & $\boldsymbol{\Delta R^2}$ \textbf{(sem.)} & \textbf{Block} $\boldsymbol{F}$ & \textbf{Sig.} & \textbf{Cov.} \\
12 +\midrule
13 +D: baseline (Table~\ref{tab:model_comparison}) & 17{,}087 & 0.512 & --- & 0.047 & 54.3 & 16/20 & HC3 \\
14 +D, standard errors clustered by FSA & 17{,}087 & 0.512 & --- & 0.047 & 20.1 & 14/20 & cluster \\
15 +D-L: D + language indicators & 17{,}087 & 0.518 & --- & 0.017 & 22.6 & 16/20 & HC3 \\
16 +D-L, standard errors clustered by FSA & 17{,}087 & 0.518 & --- & 0.017 & 17.6 & 15/20 & cluster \\
17 +D-L + FSA fixed effects & 17{,}087 & 0.667 & 0.458 & 0.020 & 31.4 & 18/20 & cluster \\
18 +D-L + municipality fixed effects & 17{,}087 & 0.710 & 0.456 & 0.016 & 28.3 & 14/20 & cluster \\
19 +D-L + FSA FE, unit-corrected lot area & 17{,}087 & 0.725 & 0.552 & 0.013 & 25.5 & 14/20 & cluster \\
20 +D-L + FSA FE + floor area (subsample) & 6{,}228 & 0.773 & 0.588 & 0.011 & 12.3 & 10/20 & cluster \\
21 +French listings only, D + FSA FE & 9{,}843 & 0.599 & 0.413 & 0.029 & 24.4 & 15/20 & cluster \\
22 +English listings only, D + FSA FE & 6{,}779 & 0.690 & 0.500 & 0.024 & 23.8 & 15/20 & cluster \\
23 +ML-D: multilingual encoder, as D & 17{,}087 & 0.522 & --- & 0.057 & 65.3 & 17/20 & HC3 \\
24 +ML-D-L: multilingual encoder + language & 17{,}087 & 0.538 & --- & 0.038 & 54.0 & 16/20 & HC3 \\
25 +ML-D-L + FSA fixed effects & 17{,}087 & 0.687 & 0.489 & 0.039 & 70.6 & 15/20 & cluster \\
26 +ML-D-L + FSA FE, unit-corrected lot area & 17{,}087 & 0.741 & 0.578 & 0.028 & 52.0 & 13/20 & cluster \\
27 +\bottomrule
28 +\end{tabular}
29 +\end{adjustbox}
30 +\begin{minipage}{\textwidth}
31 +\vspace{4pt}\footnotesize
32 +\textit{Notes:} All specifications include the six structural variables and description length; ``D-L'' adds indicators for English and mixed-language listings; ``ML'' replaces the all-MiniLM-L6-v2 similarities by those computed with paraphrase-multilingual-MiniLM-L12-v2. Fixed effects are absorbed by within-group demeaning (415 forward sortation areas, FSA, or 1{,}061 municipalities); $R^2$ is then measured against the total variance of log price and ``Within $R^2$'' against the within-group variance. $\Delta R^2$ (sem.) is the gain in $R^2$ from adding the 20 similarities to the otherwise identical specification. Block $F$ is the robust Wald test (HC3 or clustered by FSA/municipality) that the 20 semantic coefficients are jointly zero; all $p < 0.001$. ``Sig.'' counts similarities individually significant at the 5\% level. The unit-corrected lot area converts the raw field to square metres (m$^2$, sq.\ ft., acres, hectares) and enters in logs with a missing-value indicator; the floor-area subsample is restricted to the 6{,}228 listings reporting interior floor area.
33 +\end{minipage}
34 +\end{table}
modified paper/tables/tab_text_comparison.tex +2 −1
@@ -15,8 +15,9 @@ PCA on embeddings (20 PC) & +0.070 & None & Low \\
15 15 PCA on embeddings (20 PC) + length & +0.078 & None & Low \\
16 16 Reference cosine (20 dim) & +0.044 & High & High \\
17 17 \textbf{Reference cosine (20 dim) + length} & \textbf{+0.060} & \textbf{High} & \textbf{High} \\
18 +Multilingual reference cosine (20 dim) + length & +0.069 & High & High \\
18 19 \bottomrule
19 −\multicolumn{4}{p{0.95\textwidth}}{\footnotesize{\textit{Notes:} All specifications include the six structural variables and are estimated on the same $n = 17{,}087$ sample. The 20 principal components capture 49.5\% of the variance of the raw 384-dimensional embeddings. PCA achieves a larger fit improvement than the reference projections but produces features with no economic interpretation; the reference-based approach trades roughly two percentage points of $R^2$ for coefficient-level interpretability (see Section~\ref{sec:robustness}).}} \\
20 +\multicolumn{4}{p{0.95\textwidth}}{\footnotesize{\textit{Notes:} All specifications include the six structural variables and are estimated on the same $n = 17{,}087$ sample. The 20 principal components capture 49.5\% of the variance of the raw 384-dimensional embeddings. PCA achieves a larger fit improvement than the baseline reference projections but produces features with no economic interpretation; the reference-based approach trades roughly two percentage points of $R^2$ for named features. The multilingual row uses the similarities computed with paraphrase-multilingual-MiniLM-L12-v2 (Section~\ref{sec:extended}) and closes most of the gap. None of these rows controls for the language of the listing; see Table~\ref{tab:spec_summary} for specifications that do.}} \\
20 21 \end{tabular}
21 22 \end{adjustbox}
22 23 \end{table}
added results/revision_block_tests.csv +15 −0
@@ -0,0 +1,15 @@
1 +spec,domain,n_dims,F,p_value
2 +D-L (HC3),Quality & Standing,2,51.5953178869557,4.570314873207407e-23
3 +D-L + FSA FE (clustered),Quality & Standing,2,18.768592668723123,1.5758383545448515e-08
4 +D-L (HC3),Condition,2,4.192821455287402,0.015119179953021747
5 +D-L + FSA FE (clustered),Condition,2,7.845144852177614,0.00045276614487643117
6 +D-L (HC3),Physical Attributes,4,13.157145515505551,1.0581421133849553e-10
7 +D-L + FSA FE (clustered),Physical Attributes,4,8.509849141604777,1.318333277152132e-06
8 +D-L (HC3),Location & Setting,5,40.39364734732215,1.9159201114106362e-41
9 +D-L + FSA FE (clustered),Location & Setting,5,67.79674996201946,1.1550489755737271e-51
10 +D-L (HC3),Style & Character,5,22.7358050143384,8.171927836658972e-23
11 +D-L + FSA FE (clustered),Style & Character,5,17.288068812876816,1.5077856593315384e-15
12 +D-L (HC3),Market Signals,2,6.853058340575464,0.0010591310890604598
13 +D-L + FSA FE (clustered),Market Signals,2,3.1061590197781,0.04581770573516728
14 +D-L + FSA FE (clustered),All 20 dimensions,20,31.44154004816345,2.2970034321369838e-70
15 +D-L (HC3),All 20 dimensions,20,22.606273130501318,4.433385981941355e-82
added results/revision_language.csv +15 −0
@@ -0,0 +1,15 @@
1 +model,language,n,share,mean_similarity,mean_log_price,median_price,mean_length
2 +all-MiniLM-L6-v2,fr,9843,0.5760519693334114,0.43378791293819974,13.127918291162068,499900.0,520.8576653459311
3 +all-MiniLM-L6-v2,en,6779,0.3967343594545561,0.20419805651983788,13.605352371250062,749900.0,527.1392535772238
4 +all-MiniLM-L6-v2,mixed,465,0.02721367121203254,0.07965018920955859,13.259639143410977,599000.0,33.08387096774194
5 +all-MiniLM-L6-v2,eta2_language_on_mean_similarity,17087,,0.8620645774016473,,,
6 +all-MiniLM-L6-v2,corr_mean_similarity_length,17087,,0.1989197032441645,,,
7 +all-MiniLM-L6-v2,corr_mean_similarity_english,17087,,-0.8148240056548604,,,
8 +all-MiniLM-L6-v2,pc1_share_of_similarity_variance,17087,,0.8618594518944256,,,
9 +paraphrase-multilingual-MiniLM-L12-v2,fr,9843,0.5760519693334114,0.3949248194694519,13.127918291162068,499900.0,520.8576653459311
10 +paraphrase-multilingual-MiniLM-L12-v2,en,6779,0.3967343594545561,0.35166680812835693,13.605352371250062,749900.0,527.1392535772238
11 +paraphrase-multilingual-MiniLM-L12-v2,mixed,465,0.02721367121203254,0.07286527752876282,13.259639143410977,599000.0,33.08387096774194
12 +paraphrase-multilingual-MiniLM-L12-v2,eta2_language_on_mean_similarity,17087,,0.5247482353129636,,,
13 +paraphrase-multilingual-MiniLM-L12-v2,corr_mean_similarity_length,17087,,0.5299844857440362,,,
14 +paraphrase-multilingual-MiniLM-L12-v2,corr_mean_similarity_english,17087,,-0.18929780686588185,,,
15 +paraphrase-multilingual-MiniLM-L12-v2,pc1_share_of_similarity_variance,17087,,0.5220856666564941,,,
added results/revision_language_by_dimension.csv +21 −0
@@ -0,0 +1,21 @@
1 +variable,label,mean_fr,mean_en,sd_all
2 +sim_luxe,Luxury,0.456381430083308,0.18185575687402272,0.1569390285412916
3 +sim_entree_de_gamme,Entry-Level,0.4463041125896577,0.136528038711127,0.16749407399860475
4 +sim_renove,Renovated,0.4827329630813776,0.1792726557120608,0.16770710274442457
5 +sim_a_renover,Needs Renovation,0.42444398595143756,0.19217373457539016,0.1381266562207684
6 +sim_lumineux_spacieux,Bright & Spacious,0.4698578458173321,0.21860121794544032,0.15262280699645325
7 +sim_terrain_nature,Land & Nature,0.40378961900335264,0.23682637619579586,0.11592614331745262
8 +sim_vue_panoramique,Panoramic View,0.3922421470348471,0.2281914610472282,0.12017677279048082
9 +sim_localisation_premium,Premium Location,0.42996985352230016,0.17654207434577962,0.14117590912058145
10 +sim_tranquillite,Quiet & Peaceful,0.4325708442558163,0.2632195296829326,0.11136767606579469
11 +sim_revenu_investissement,Income/Investment,0.45233076241897796,0.2309957811343856,0.12571666609180746
12 +sim_garage_stationnement,Garage & Parking,0.381770457500762,0.2210733137545213,0.11162070546195776
13 +sim_sous_sol_amenage,Finished Basement,0.40487299953977446,0.1743698086514914,0.13859268598826147
14 +sim_moderne_contemporain,Modern/Contemporary,0.43938805701412165,0.2775497931612096,0.11546138456077855
15 +sim_cachet_patrimonial,Heritage/Character,0.4693921648003658,0.23452845240660866,0.1426352792139395
16 +sim_ecoefficace,Energy Efficient,0.39804520211622474,0.1664075409157501,0.13448369357863163
17 +sim_urgence_motivation,Motivated Seller,0.3852732631524941,0.07558167351884629,0.1651052533225368
18 +sim_familial,Family-Friendly,0.4473431693091538,0.23198722073405664,0.1422264766937309
19 +sim_bord_eau,Waterfront,0.4379773655298182,0.19531706535927423,0.15078835767148935
20 +sim_neuf_construction,New Construction,0.4545454813725489,0.27195833188892166,0.12168099224926686
21 +sim_piscine_amenagement,Pool & Landscaping,0.4665265346703242,0.19098130378191477,0.15804520071504666
added results/revision_multilingual.csv +21 −0
@@ -0,0 +1,21 @@
1 +variable,label,corr_minilm_multilingual,mean_fr_multi,mean_en_multi
2 +sim_luxe,Luxury,0.5034177762240634,0.45920363,0.40335953
3 +sim_entree_de_gamme,Entry-Level,0.33197025341753233,0.2877104,0.24705054
4 +sim_renove,Renovated,0.4182927453983366,0.3294325,0.26609972
5 +sim_a_renover,Needs Renovation,0.5394952671467899,0.28623343,0.20558082
6 +sim_lumineux_spacieux,Bright & Spacious,0.4959277588481052,0.5117897,0.48074368
7 +sim_terrain_nature,Land & Nature,0.4773845218592132,0.5281967,0.5007931
8 +sim_vue_panoramique,Panoramic View,0.5118039289856126,0.38571015,0.3643038
9 +sim_localisation_premium,Premium Location,0.4062693951666361,0.4114835,0.36588416
10 +sim_tranquillite,Quiet & Peaceful,0.4287050140536155,0.43674755,0.41827214
11 +sim_revenu_investissement,Income/Investment,0.33357090964326697,0.28797373,0.26016054
12 +sim_garage_stationnement,Garage & Parking,0.5043282489528028,0.33510435,0.2903586
13 +sim_sous_sol_amenage,Finished Basement,0.36758210988545653,0.4720565,0.42317227
14 +sim_moderne_contemporain,Modern/Contemporary,0.588048604032201,0.4530643,0.40339547
15 +sim_cachet_patrimonial,Heritage/Character,0.3901933860015598,0.4720848,0.4564962
16 +sim_ecoefficace,Energy Efficient,0.5285315309345664,0.3006625,0.23174286
17 +sim_urgence_motivation,Motivated Seller,0.3858344780238723,0.18621925,0.11642462
18 +sim_familial,Family-Friendly,0.5528773328579434,0.5222587,0.49696472
19 +sim_bord_eau,Waterfront,0.46984751788975354,0.29447573,0.26297313
20 +sim_neuf_construction,New Construction,0.4974114357665053,0.3676969,0.31543487
21 +sim_piscine_amenagement,Pool & Landscaping,0.45148273323299426,0.57039225,0.52412575
added results/revision_oos.csv +21 −0
@@ -0,0 +1,21 @@
1 +scheme,specification,r2_oos,rmse_log,mdape_pct
2 +random_5fold,A (raw lot-size field),-1.0356981850532918,1.002864343743045,27.469947501050278
3 +random_5fold,A: structural,0.47976834885312136,0.5069718920083567,27.280105195607852
4 +random_5fold,B: + length,0.488958366521125,0.5024740492188648,27.147602293256156
5 +random_5fold,B-L: + length + language,0.5231179612347959,0.485390171875387,26.87819200634442
6 +random_5fold,D: + length + 20 similarities,0.5278408659143787,0.4829806077099266,26.909152824247016
7 +random_5fold,D-L: D + language,0.5336297653091817,0.4800106885255776,26.596563223904223
8 +random_5fold,PCA-20 + length,0.5436253297548761,0.47483886896985744,26.471887639857787
9 +random_5fold,PCA-20 + length + language,0.5438267882054246,0.4747340528305597,26.464619107999255
10 +random_5fold,ML-D: multilingual similarities,0.534013867926465,0.47981297935998923,26.75415341096124
11 +random_5fold,ML-D-L: multilingual similarities + language,0.5512872775124276,0.4708360281759994,26.384212999361395
12 +spatial_fsa_5fold,A (raw lot-size field),-1.3089739300966117,1.0680584258948016,27.570836817593026
13 +spatial_fsa_5fold,A: structural,0.4750956444888388,0.5092436051096814,27.31627287247535
14 +spatial_fsa_5fold,B: + length,0.48424640177457423,0.5047852184768896,27.302100683462584
15 +spatial_fsa_5fold,B-L: + length + language,0.5184296622942568,0.4877703081510286,26.9857670727494
16 +spatial_fsa_5fold,D: + length + 20 similarities,0.5220353152479628,0.4859408403409894,27.04308826285844
17 +spatial_fsa_5fold,D-L: D + language,0.5276520830607864,0.4830771528560948,26.682326954815412
18 +spatial_fsa_5fold,PCA-20 + length,0.5373047668926683,0.4781157037777328,26.716595902064316
19 +spatial_fsa_5fold,PCA-20 + length + language,0.5373193576995665,0.4781081651773677,26.66727516907744
20 +spatial_fsa_5fold,ML-D: multilingual similarities,0.5278283966461847,0.48298698519426847,26.786371255976256
21 +spatial_fsa_5fold,ML-D-L: multilingual similarities + language,0.5454021915480024,0.4739135920586627,26.45924696726078
added results/revision_reference_sensitivity.csv +61 −0
@@ -0,0 +1,61 @@
1 +variant,variable,label,coefficient,std_error,p_value,corr_similarity_with_baseline
2 +first_half,sim_luxe,Luxury,0.21089092677958043,0.019406907322867883,1.659235578676276e-27,0.9589339374476573
3 +first_half,sim_entree_de_gamme,Entry-Level,0.029887336640457063,0.026612415285964548,0.26141205231759457,0.9937748331560924
4 +first_half,sim_renove,Renovated,0.08454330832795688,0.019527165351478422,1.4943277441432032e-05,0.9956950596364087
5 +first_half,sim_a_renover,Needs Renovation,-0.3217977526488656,0.02180958079703573,2.8619899746213242e-49,0.954347345686688
6 +first_half,sim_lumineux_spacieux,Bright & Spacious,0.0535710693178619,0.01637240590607005,0.0010677672217862444,0.9829695221006393
7 +first_half,sim_terrain_nature,Land & Nature,0.07690895271012378,0.007605404563650103,4.867307651862859e-24,0.9360886525833751
8 +first_half,sim_vue_panoramique,Panoramic View,-0.007044336136362073,0.016044438643112897,0.6606241624992478,0.9622359497523124
9 +first_half,sim_localisation_premium,Premium Location,-0.12749865496930698,0.015183503947617142,4.573186515367581e-17,0.9778534867425551
10 +first_half,sim_tranquillite,Quiet & Peaceful,-0.004714331548415274,0.013779004445250919,0.7322464664651126,0.9064142517131946
11 +first_half,sim_revenu_investissement,Income/Investment,-0.041260610516286225,0.01631432792333421,0.011435456600341091,0.9729569285580797
12 +first_half,sim_garage_stationnement,Garage & Parking,0.007355276344891498,0.00809944063526165,0.3638140215756407,0.9725865035983249
13 +first_half,sim_sous_sol_amenage,Finished Basement,-0.039010824877411795,0.012477155562490707,0.0017685238831073985,0.985312630097056
14 +first_half,sim_moderne_contemporain,Modern/Contemporary,0.04985433613187851,0.012047740855375548,3.502469838663435e-05,0.9760156797117872
15 +first_half,sim_cachet_patrimonial,Heritage/Character,-0.06109282726608933,0.013942891856547995,1.1778565016217271e-05,0.9751694333267771
16 +first_half,sim_ecoefficace,Energy Efficient,-0.0605309810575157,0.01030436049207309,4.246148261708435e-09,0.9680863399637587
17 +first_half,sim_urgence_motivation,Motivated Seller,0.008389948355624538,0.013854890944458983,0.5448079010798161,0.9670015047649215
18 +first_half,sim_familial,Family-Friendly,-0.08865949685639028,0.01403100208596689,2.635534384591679e-10,0.9883471696937544
19 +first_half,sim_bord_eau,Waterfront,0.11876449929961531,0.01620892556400056,2.351775923441707e-13,0.9456760626884952
20 +first_half,sim_neuf_construction,New Construction,-0.06179762121065141,0.014175514300908396,1.303823689937164e-05,0.9828612360898362
21 +first_half,sim_piscine_amenagement,Pool & Landscaping,0.05158675728388602,0.01672751554217902,0.0020427456128899475,0.9923274801271135
22 +second_half,sim_luxe,Luxury,-0.036030166819777,0.012925524290038504,0.005311305707774766,0.9700051136268316
23 +second_half,sim_entree_de_gamme,Entry-Level,0.05055219445854541,0.01710306799659382,0.00311921553150963,0.9785761087233874
24 +second_half,sim_renove,Renovated,0.0568332300547455,0.019293531029279064,0.0032220987198928524,0.9591309620296115
25 +second_half,sim_a_renover,Needs Renovation,-0.05107686973113654,0.00917547261903284,2.5964671018153424e-08,0.8557325841503292
26 +second_half,sim_lumineux_spacieux,Bright & Spacious,-0.04069797152465077,0.015055070293484444,0.006866023913573521,0.9362957474363321
27 +second_half,sim_terrain_nature,Land & Nature,-0.13637405450023238,0.020716785544749736,4.617301823647235e-11,0.775219547032676
28 +second_half,sim_vue_panoramique,Panoramic View,0.010816478501821214,0.009425757358666334,0.25115654359812534,0.942003220042437
29 +second_half,sim_localisation_premium,Premium Location,-0.08749134555580979,0.014007805435756896,4.2136794310697557e-10,0.9593932122145791
30 +second_half,sim_tranquillite,Quiet & Peaceful,-0.01259573331893283,0.00879133780865186,0.15193111357136188,0.8890646221205778
31 +second_half,sim_revenu_investissement,Income/Investment,0.013102391410377178,0.01261320090890074,0.2989051998849095,0.9428985824248959
32 +second_half,sim_garage_stationnement,Garage & Parking,-0.01297138157418666,0.010428816874206045,0.21357250455524057,0.9416645342825412
33 +second_half,sim_sous_sol_amenage,Finished Basement,-0.07833636776716973,0.014527928371237432,6.963031581668576e-08,0.9413753801655996
34 +second_half,sim_moderne_contemporain,Modern/Contemporary,-0.053548015439530194,0.015055724125496606,0.00037560700367275337,0.9081261390218569
35 +second_half,sim_cachet_patrimonial,Heritage/Character,0.01741162791580353,0.017362589856748174,0.31594561722867065,0.9664688826123439
36 +second_half,sim_ecoefficace,Energy Efficient,0.024416095977098443,0.01723394877035877,0.15655774596214075,0.9635373036391423
37 +second_half,sim_urgence_motivation,Motivated Seller,-0.016882659628106894,0.019321613517654088,0.3822431437740649,0.9751782811690536
38 +second_half,sim_familial,Family-Friendly,0.017794527265595453,0.020354047971562737,0.38198209998811306,0.9049132240168014
39 +second_half,sim_bord_eau,Waterfront,0.15824520716869261,0.016599025403803303,1.522094092325248e-21,0.9818025528952853
40 +second_half,sim_neuf_construction,New Construction,-0.017378772471639853,0.014046581488451611,0.21600380869544045,0.8721170081552962
41 +second_half,sim_piscine_amenagement,Pool & Landscaping,0.045315948147616414,0.014978393677782767,0.0024828718249805966,0.9079034605963924
42 +reversed,sim_luxe,Luxury,0.011671606495244569,0.01871936660931168,0.5329531451061742,0.989667157154188
43 +reversed,sim_entree_de_gamme,Entry-Level,0.061638479977749516,0.028627080697234856,0.0313066689852354,0.9979932866219107
44 +reversed,sim_renove,Renovated,0.10340306969388674,0.025922986238473854,6.639259431437847e-05,0.9979100759078177
45 +reversed,sim_a_renover,Needs Renovation,-0.1286038102460773,0.01832061748628655,2.2246922869666147e-12,0.9943945925061504
46 +reversed,sim_lumineux_spacieux,Bright & Spacious,0.009447661626172166,0.017444895363846448,0.588113592292383,0.9929672591942491
47 +reversed,sim_terrain_nature,Land & Nature,0.07706063883172433,0.021621516310343245,0.00036514585619038843,0.9500140590311889
48 +reversed,sim_vue_panoramique,Panoramic View,0.0194115184377448,0.010449115630033836,0.06320895884869243,0.982618346801352
49 +reversed,sim_localisation_premium,Premium Location,-0.029528764806096015,0.015881011058185908,0.06297391483466415,0.9901925887810441
50 +reversed,sim_tranquillite,Quiet & Peaceful,-0.0634869275726998,0.011082356455556015,1.0123375549248444e-08,0.9515704294379114
51 +reversed,sim_revenu_investissement,Income/Investment,0.005064842806807149,0.015936900760320047,0.750632093256991,0.9912644596765052
52 +reversed,sim_garage_stationnement,Garage & Parking,-0.016564407708007364,0.009915402328666922,0.09480596365504085,0.9873186436773159
53 +reversed,sim_sous_sol_amenage,Finished Basement,-0.022163204685719327,0.013474351363897501,0.10000200581961118,0.9951727600984039
54 +reversed,sim_moderne_contemporain,Modern/Contemporary,0.10022192812309569,0.017456964773271015,9.407155144827519e-09,0.9960532170721952
55 +reversed,sim_cachet_patrimonial,Heritage/Character,-0.002988365275169255,0.01545626685553168,0.8466901359860246,0.9965116564121401
56 +reversed,sim_ecoefficace,Energy Efficient,-0.029104089837427793,0.013300028165982624,0.02864973717057443,0.9948771556943948
57 +reversed,sim_urgence_motivation,Motivated Seller,-0.11285852503291871,0.023790405345960813,2.0967627161143234e-06,0.9957128386131588
58 +reversed,sim_familial,Family-Friendly,-0.09265351284423606,0.01599620589099692,6.946286719678611e-09,0.9812082650887114
59 +reversed,sim_bord_eau,Waterfront,0.03321640239282596,0.015070018137035027,0.027514627576533383,0.9945981708639101
60 +reversed,sim_neuf_construction,New Construction,-0.048825106846514754,0.020298736591956888,0.016157983655250854,0.9778360840461413
61 +reversed,sim_piscine_amenagement,Pool & Landscaping,-0.017688308652312634,0.021999172761284484,0.421371412293327,0.9897366803742347
added results/revision_reference_sensitivity_summary.csv +4 −0
@@ -0,0 +1,4 @@
1 +variant,r2,delta_r2_sims,block_F,corr_coef_with_baseline,sign_agreement_sig16,n_sig_5pct,mean_abs_coef_change,mean_corr_similarity
2 +first_half,0.5185247138846281,0.05378800491980251,63.450854293800475,0.6253543861260321,0.8125,15,0.06538590728464835,0.9697327003719411
3 +second_half,0.5079670878064624,0.04323037884163683,52.645094242056224,0.023936991707186828,0.625,11,0.07869370187130786,0.9285703233177987
4 +reversed,0.5066437133412374,0.041907004376411816,51.64450425844545,0.8045821427411749,0.875,11,0.043099832264913686,0.9873808863526461
added results/revision_spec_summary.csv +15 −0
@@ -0,0 +1,15 @@
1 +n,r2,r2_without_sims,delta_r2_sims,r2_within,block_F,block_p,block_df,n_sig_5pct,spec,fe,cov,note
2 +17087,0.5122282152161219,0.46473670896482555,0.04749150625129639,,54.32433311611412,1.271751996950278e-210,20,16,D (baseline),none,HC3,
3 +17087,0.5176533790399737,0.5002869509165772,0.017366428123396505,,22.606273130501318,4.433385981941355e-82,20,16,D-L: + language,none,HC3,
4 +17087,0.5176533790399737,0.5002869509165772,0.017366428123396505,,17.640994877456652,8.968865243516545e-44,20,15,"D-L, FSA-clustered SE",none,fsa_id,
5 +17087,0.6671431754337149,0.6474068438005859,0.019736331633129045,0.4576948599656133,31.44154004816345,2.2970034321369838e-70,20,18,D-L + FSA FE,fsa_id,fsa_id,
6 +17087,0.709620346748135,0.6938819868226034,0.01573835992553163,0.4561272212234957,28.281847696791807,2.8352371387773835e-84,20,14,D-L + municipality FE,mun_id,mun_id,
7 +17087,0.7251492777729148,0.7125532751722012,0.012596002600713585,0.552200981307417,25.51318073807577,7.408692605695492e-60,20,14,"D-L + FSA FE, lot area (m2)",fsa_id,fsa_id,land_size replaced by unit-corrected lot area
8 +6228,0.7731644268731169,0.7617350248581135,0.01142940201500342,0.5883604347192042,12.285528136789035,1.587554735228068e-30,20,10,"D-L + FSA FE, floor-area subsample",fsa_id,fsa_id,listings reporting interior floor area
9 +9843,0.5986241878655532,0.5699243875289712,0.028699800336581927,0.4129739454591763,24.386719092497582,3.7739780519562077e-56,20,15,"French-only, D + FSA FE",fsa_id,fsa_id,
10 +6779,0.6903823689537304,0.6662612041627448,0.024121164790985583,0.5001219916342265,23.76359471792773,1.562521400690154e-52,20,15,"English-only, D + FSA FE",fsa_id,fsa_id,
11 +17087,0.5122282152161219,0.46473670896482555,0.04749150625129639,,20.052274987766065,5.360924877509286e-49,20,14,"D (baseline), FSA-clustered SE",none,fsa_id,
12 +17087,0.5219149963044116,0.46473670896482555,0.057178287339586076,,65.25677330397261,2.5334940395603473e-254,20,17,ML-D: multilingual similarities,none,HC3,
13 +17087,0.5380521119555324,0.5002869509165772,0.03776516103895522,,53.95784182869052,3.7757017254081364e-209,20,16,ML-D-L: + language,none,HC3,
14 +17087,0.6865960980582048,0.6474068438005859,0.03918925425761888,0.48938842653645964,70.60623774553646,9.117134474795003e-120,20,15,ML-D-L + FSA FE,fsa_id,fsa_id,
15 +17087,0.7407811681231111,0.7125532751722012,0.028227892950909883,0.5776691521836228,51.97285453045871,1.4995307492550798e-99,20,13,"ML-D-L + FSA FE, lot area (m2)",fsa_id,fsa_id,
added results/revision_specifications.csv +401 −0
@@ -0,0 +1,401 @@
1 +spec,variable,label,coefficient,std_error,p_value,impact_pct
2 +D (baseline),sim_luxe,Luxury,0.13302767513624159,0.018189664572979443,2.6053203462952673e-13,14.22816106926561
3 +D (baseline),sim_entree_de_gamme,Entry-Level,0.09909068025717205,0.025104381911900585,7.908807394940488e-05,10.416642111431651
4 +D (baseline),sim_renove,Renovated,0.050148954159303316,0.026701523515245563,0.060363271564756425,5.14276992414191
5 +D (baseline),sim_a_renover,Needs Renovation,-0.08267657263757641,0.016997896058291648,1.1507776085974207e-06,-7.93511378938514
6 +D (baseline),sim_lumineux_spacieux,Bright & Spacious,-0.09363534955276323,0.01848243511045256,4.058774012921762e-07,-8.938524221538701
7 +D (baseline),sim_terrain_nature,Land & Nature,0.12246056220267565,0.012220545036757098,1.2340470542470092e-23,13.027454365664525
8 +D (baseline),sim_vue_panoramique,Panoramic View,0.03003177740935259,0.011619086231196951,0.009746557871840842,3.048727964934539
9 +D (baseline),sim_localisation_premium,Premium Location,-0.06278200580427294,0.013861102757784448,5.916097588666791e-06,-6.085181977187871
10 +D (baseline),sim_tranquillite,Quiet & Peaceful,-0.09950647079921601,0.014190152331860514,2.343296248267464e-12,-9.47159080620371
11 +D (baseline),sim_revenu_investissement,Income/Investment,-0.03159128289655594,0.016178269114433735,0.05085532374949879,-3.1097491810533673
12 +D (baseline),sim_garage_stationnement,Garage & Parking,0.018962330637720064,0.008646812255471013,0.028308450973544435,1.9143257417747694
13 +D (baseline),sim_sous_sol_amenage,Finished Basement,-0.036991886118690004,0.014677015596754791,0.011722299286143803,-3.6316045465441094
14 +D (baseline),sim_moderne_contemporain,Modern/Contemporary,0.15168086020684507,0.015507955333018648,1.360738144810086e-22,16.37887658537329
15 +D (baseline),sim_cachet_patrimonial,Heritage/Character,0.010280833145417556,0.014670796973183341,0.4834474670703699,1.0333862483290934
16 +D (baseline),sim_ecoefficace,Energy Efficient,-0.08116151901604113,0.013649908523322204,2.7487704804701127e-09,-7.795524834440548
17 +D (baseline),sim_urgence_motivation,Motivated Seller,-0.08896927610037955,0.021572426521444154,3.7200495796830386e-05,-8.512631837018493
18 +D (baseline),sim_familial,Family-Friendly,-0.12365094148067936,0.012726960207181169,2.5854382091522054e-22,-11.631175403541361
19 +D (baseline),sim_bord_eau,Waterfront,0.0461844747419041,0.012850514015221415,0.00032566636619945906,4.726758755620675
20 +D (baseline),sim_neuf_construction,New Construction,-0.11053160085021901,0.017580467433391835,3.2328001501811506e-10,-10.464196433275463
21 +D (baseline),sim_piscine_amenagement,Pool & Landscaping,0.024584387749493897,0.01613737926366,0.1276477518475808,2.4889075540599714
22 +D (baseline),bedrooms,Bedrooms,0.031361825945882715,0.007078664712443264,9.402704737112851e-06,3.185878963279243
23 +D (baseline),bathrooms,Bathrooms,0.2965921212218176,0.01104123193902946,6.070330029949193e-159,34.52664818812274
24 +D (baseline),half_baths,Half-bathrooms,0.1580223318079423,0.0072082518706523485,1.587846097570319e-106,17.119234925823633
25 +D (baseline),parking,Parking,0.09137930012830353,0.009438374661485838,3.607473151652128e-22,9.568451973005132
26 +D (baseline),stories,Stories,0.07440621383479015,0.005738795985108444,1.9203799101867084e-38,7.724430817181238
27 +D (baseline),land_size,Lot size (raw field),0.0033359400952781837,0.7561010299645798,0.9964797211524664,0.33415105359342334
28 +D (baseline),remarks_length,Description length,0.10134517255307976,0.004639491646613843,8.859561078716114e-106,10.665856400701944
29 +D-L: + language,sim_luxe,Luxury,0.15291770807420113,0.018236973537779387,5.0709562486826295e-17,16.52290860516985
30 +D-L: + language,sim_entree_de_gamme,Entry-Level,0.144843584872971,0.025461345239910536,1.2796214781093146e-08,15.585876233270435
31 +D-L: + language,sim_renove,Renovated,0.056251322458295894,0.02676830844895583,0.035604560341829836,5.78635151896838
32 +D-L: + language,sim_a_renover,Needs Renovation,-0.047207460284264514,0.017459649258064393,0.006855081972131693,-4.611051712191506
33 +D-L: + language,sim_lumineux_spacieux,Bright & Spacious,-0.07828106355784331,0.018398670384888273,2.093172458872411e-05,-7.529551071790664
34 +D-L: + language,sim_terrain_nature,Land & Nature,0.15002293037144773,0.012463918849467221,2.2822813010323888e-33,16.18608843244793
35 +D-L: + language,sim_vue_panoramique,Panoramic View,-0.014538448050239683,0.012445031295672381,0.24272083511486064,-1.4433275115038224
36 +D-L: + language,sim_localisation_premium,Premium Location,-0.05830598111178319,0.013760380524708715,2.2628814802267606e-05,-5.6638747453408245
37 +D-L: + language,sim_tranquillite,Quiet & Peaceful,-0.13659167890958412,0.014556397210441479,6.37465774193179e-21,-12.767365733434833
38 +D-L: + language,sim_revenu_investissement,Income/Investment,-0.04826401735283704,0.016561527281288985,0.0035657277430703976,-4.711782356560946
39 +D-L: + language,sim_garage_stationnement,Garage & Parking,0.032799788402431404,0.008699509426326137,0.00016304932275501866,3.3343631150067
40 +D-L: + language,sim_sous_sol_amenage,Finished Basement,-0.055398557776390106,0.014572444742937214,0.00014376661033627689,-5.389200589867782
41 +D-L: + language,sim_moderne_contemporain,Modern/Contemporary,0.13762105175864447,0.01541641716378687,4.38052180509481e-19,14.754060937353275
42 +D-L: + language,sim_cachet_patrimonial,Heritage/Character,0.018314591119533846,0.01462864404417686,0.21058160192714848,1.8483331808246906
43 +D-L: + language,sim_ecoefficace,Energy Efficient,-0.06301327716718491,0.013553495241350624,3.3318122509626315e-06,-6.106899273758448
44 +D-L: + language,sim_urgence_motivation,Motivated Seller,-0.02959968492298215,0.021936733234518842,0.17723402819023937,-2.9165904704613888
45 +D-L: + language,sim_familial,Family-Friendly,-0.08068857389825831,0.012988098462358547,5.214786864580178e-10,-7.751906864433322
46 +D-L: + language,sim_bord_eau,Waterfront,0.07782544406037481,0.013144155196846218,3.2015258635179098e-09,8.093395875837327
47 +D-L: + language,sim_neuf_construction,New Construction,-0.12881519339089054,0.01765404179353597,2.9504210034569634e-13,-12.086357924541302
48 +D-L: + language,sim_piscine_amenagement,Pool & Landscaping,0.02480777813625116,0.016094834376420758,0.12323154786519071,2.5118051482127868
49 +D-L: + language,bedrooms,Bedrooms,0.029288348366238646,0.007003963656024704,2.893605604009625e-05,2.9721470174868037
50 +D-L: + language,bathrooms,Bathrooms,0.29247702494960515,0.010900377728387528,1.3747483247088998e-158,33.974195557135054
51 +D-L: + language,half_baths,Half-bathrooms,0.15643567116836474,0.0070932445645830655,8.710153988806766e-108,16.933553791057633
52 +D-L: + language,parking,Parking,0.08999363816561162,0.009353115299015249,6.470028987029184e-22,9.416732277176765
53 +D-L: + language,stories,Stories,0.0727367147705572,0.005663294935239334,9.350784532177847e-38,7.5447350234544075
54 +D-L: + language,land_size,Lot size (raw field),0.0038297928508343668,0.7501191644679694,0.9959263548300706,0.38371358785738163
55 +D-L: + language,remarks_length,Description length,0.09339225584454285,0.005081385999179007,1.9247901860809583e-75,9.78923054892251
56 +D-L: + language,lang_en,English listing,0.17791769065690125,0.013994109304283082,4.959393404428079e-37,19.47269799947491
57 +D-L: + language,lang_mixed,Mixed / uninformative,0.07098228347573729,0.008241088040587439,7.103815718432349e-18,7.356220590900553
58 +"D-L, FSA-clustered SE",sim_luxe,Luxury,0.15291770807420113,0.027901144920083852,4.2365462547700124e-08,16.52290860516985
59 +"D-L, FSA-clustered SE",sim_entree_de_gamme,Entry-Level,0.144843584872971,0.0342501218383582,2.347378404146963e-05,15.585876233270435
60 +"D-L, FSA-clustered SE",sim_renove,Renovated,0.056251322458295894,0.03602864176892747,0.11845426616493962,5.78635151896838
61 +"D-L, FSA-clustered SE",sim_a_renover,Needs Renovation,-0.047207460284264514,0.022891141390315034,0.03918309282678186,-4.611051712191506
62 +"D-L, FSA-clustered SE",sim_lumineux_spacieux,Bright & Spacious,-0.07828106355784331,0.030045397863346614,0.009176006773475529,-7.529551071790664
63 +"D-L, FSA-clustered SE",sim_terrain_nature,Land & Nature,0.15002293037144773,0.019478437373337907,1.3395257936795537e-14,16.18608843244793
64 +"D-L, FSA-clustered SE",sim_vue_panoramique,Panoramic View,-0.014538448050239683,0.0191939450821584,0.44878048680755556,-1.4433275115038224
65 +"D-L, FSA-clustered SE",sim_localisation_premium,Premium Location,-0.05830598111178319,0.02216328292215877,0.008519753537808006,-5.6638747453408245
66 +"D-L, FSA-clustered SE",sim_tranquillite,Quiet & Peaceful,-0.13659167890958412,0.019840436864497286,5.798692638472957e-12,-12.767365733434833
67 +"D-L, FSA-clustered SE",sim_revenu_investissement,Income/Investment,-0.04826401735283704,0.021574642726456688,0.025281670386987774,-4.711782356560946
68 +"D-L, FSA-clustered SE",sim_garage_stationnement,Garage & Parking,0.032799788402431404,0.01071260265710904,0.002200144084586668,3.3343631150067
69 +"D-L, FSA-clustered SE",sim_sous_sol_amenage,Finished Basement,-0.055398557776390106,0.01793338790975265,0.002007439106461385,-5.389200589867782
70 +"D-L, FSA-clustered SE",sim_moderne_contemporain,Modern/Contemporary,0.13762105175864447,0.028696034465732642,1.620097054658359e-06,14.754060937353275
71 +"D-L, FSA-clustered SE",sim_cachet_patrimonial,Heritage/Character,0.018314591119533846,0.01945286900775886,0.34645619508561254,1.8483331808246906
72 +"D-L, FSA-clustered SE",sim_ecoefficace,Energy Efficient,-0.06301327716718491,0.02055925753187473,0.0021769998872558554,-6.106899273758448
73 +"D-L, FSA-clustered SE",sim_urgence_motivation,Motivated Seller,-0.02959968492298215,0.030117128417789348,0.32569654709376117,-2.9165904704613888
74 +"D-L, FSA-clustered SE",sim_familial,Family-Friendly,-0.08068857389825831,0.01721150488502925,2.758066692188814e-06,-7.751906864433322
75 +"D-L, FSA-clustered SE",sim_bord_eau,Waterfront,0.07782544406037481,0.022629615744432594,0.0005836580217960531,8.093395875837327
76 +"D-L, FSA-clustered SE",sim_neuf_construction,New Construction,-0.12881519339089054,0.036020940196513265,0.000348732038246628,-12.086357924541302
77 +"D-L, FSA-clustered SE",sim_piscine_amenagement,Pool & Landscaping,0.02480777813625116,0.020192302676049136,0.21923082428631435,2.5118051482127868
78 +"D-L, FSA-clustered SE",bedrooms,Bedrooms,0.029288348366238646,0.009114068604699578,0.001311133245727391,2.9721470174868037
79 +"D-L, FSA-clustered SE",bathrooms,Bathrooms,0.29247702494960515,0.017041873368621317,5.089594568702072e-66,33.974195557135054
80 +"D-L, FSA-clustered SE",half_baths,Half-bathrooms,0.15643567116836474,0.00893830089061603,1.3899859087858431e-68,16.933553791057633
81 +"D-L, FSA-clustered SE",parking,Parking,0.08999363816561162,0.009109125472432115,5.108532401300134e-23,9.416732277176765
82 +"D-L, FSA-clustered SE",stories,Stories,0.0727367147705572,0.007623988434281888,1.421357657181475e-21,7.5447350234544075
83 +"D-L, FSA-clustered SE",land_size,Lot size (raw field),0.0038297928508343668,0.002257528197204616,0.08979992533958847,0.38371358785738163
84 +"D-L, FSA-clustered SE",remarks_length,Description length,0.09339225584454285,0.0080719907744821,5.853990222651122e-31,9.78923054892251
85 +"D-L, FSA-clustered SE",lang_en,English listing,0.17791769065690125,0.02323725766147638,1.909646386477023e-14,19.47269799947491
86 +"D-L, FSA-clustered SE",lang_mixed,Mixed / uninformative,0.07098228347573729,0.011230045277096241,2.6030062731147104e-10,7.356220590900553
87 +D-L + FSA FE,sim_luxe,Luxury,0.1013883171634769,0.019534033475165823,2.099080141899138e-07,10.670631138961983
88 +D-L + FSA FE,sim_entree_de_gamme,Entry-Level,0.09296848746438179,0.02454944973518029,0.0001524840636982072,9.742715201096575
89 +D-L + FSA FE,sim_renove,Renovated,0.0908057588363396,0.023577239844781373,0.00011743681131278855,9.505627959307205
90 +D-L + FSA FE,sim_a_renover,Needs Renovation,-0.036333967703641466,0.016217054342337882,0.025059850582288653,-3.56818114312184
91 +D-L + FSA FE,sim_lumineux_spacieux,Bright & Spacious,-0.04482043666397698,0.01817495512222152,0.0136610404148812,-4.383084065680065
92 +D-L + FSA FE,sim_terrain_nature,Land & Nature,0.1413566201848758,0.012408093741441164,4.5681590431945116e-30,15.183534248220031
93 +D-L + FSA FE,sim_vue_panoramique,Panoramic View,-0.03430330236232817,0.013947859508177847,0.013917122242710946,-3.372161432912446
94 +D-L + FSA FE,sim_localisation_premium,Premium Location,-0.1345360578853227,0.016148816272786345,8.015102954708678e-17,-12.587864065942156
95 +D-L + FSA FE,sim_tranquillite,Quiet & Peaceful,-0.12488113960755609,0.015014932893244315,9.011935604148958e-17,-11.739819725311918
96 +D-L + FSA FE,sim_revenu_investissement,Income/Investment,0.028266999842968744,0.014511927850509553,0.05143339914844021,2.867030256754477
97 +D-L + FSA FE,sim_garage_stationnement,Garage & Parking,0.007870958459367729,0.007636714485755019,0.30269400421077564,0.7902015883325841
98 +D-L + FSA FE,sim_sous_sol_amenage,Finished Basement,-0.05050488357961212,0.0128882416937891,8.903555257850096e-05,-4.925071439883788
99 +D-L + FSA FE,sim_moderne_contemporain,Modern/Contemporary,0.08897638376706277,0.014102116329038666,2.8005628325839237e-10,9.305484218374872
100 +D-L + FSA FE,sim_cachet_patrimonial,Heritage/Character,-0.026501062006150294,0.01339160594266202,0.04782379337122561,-2.615299039652774
101 +D-L + FSA FE,sim_ecoefficace,Energy Efficient,-0.052214862897531696,0.014012593133453561,0.00019432557494600071,-5.087508679633112
102 +D-L + FSA FE,sim_urgence_motivation,Motivated Seller,-0.0408188743894593,0.019888136617870797,0.040128544973164454,-3.999700466976308
103 +D-L + FSA FE,sim_familial,Family-Friendly,-0.06649637160648572,0.01336047393351904,6.454505860223701e-07,-6.433368918425463
104 +D-L + FSA FE,sim_bord_eau,Waterfront,0.14390471490356838,0.015329121920291703,6.1343054395762725e-21,15.47740705238394
105 +D-L + FSA FE,sim_neuf_construction,New Construction,-0.08287621210677681,0.014456161106291944,9.870826845805498e-09,-7.953491739857044
106 +D-L + FSA FE,sim_piscine_amenagement,Pool & Landscaping,0.034813046483904264,0.014096078685831256,0.013522745101197433,3.5426114150889143
107 +D-L + FSA FE,bedrooms,Bedrooms,0.03223757827900496,0.006974338496375654,3.7948412047461336e-06,3.2762838178798326
108 +D-L + FSA FE,bathrooms,Bathrooms,0.23301001798292326,0.008247716615276277,1.3658427935259853e-175,26.23941259067104
109 +D-L + FSA FE,half_baths,Half-bathrooms,0.1163281948409872,0.005671919030390749,1.771238389550794e-93,12.336449407153927
110 +D-L + FSA FE,parking,Parking,0.12432520896316125,0.00949660627603189,3.680645640750411e-39,13.238407257484619
111 +D-L + FSA FE,stories,Stories,0.03467614081145373,0.006344002636080491,4.603769968739272e-08,3.528436814559588
112 +D-L + FSA FE,land_size,Lot size (raw field),0.005442430103177732,0.002855259412228033,0.056636317855609804,0.5457267029992163
113 +D-L + FSA FE,remarks_length,Description length,0.07642787515262764,0.005768521682502962,4.564836078807664e-40,7.942433421416362
114 +D-L + FSA FE,lang_en,English listing,0.08672048424826856,0.016641724858073127,1.8779770890394885e-07,9.059179952417828
115 +D-L + FSA FE,lang_mixed,Mixed / uninformative,0.037202916005306896,0.008003419833758874,3.3455635028831074e-06,3.790360672558135
116 +D-L + municipality FE,sim_luxe,Luxury,0.08785043138430981,0.017567772689195082,5.713484283616018e-07,9.182480709013463
117 +D-L + municipality FE,sim_entree_de_gamme,Entry-Level,0.07773895291520803,0.024051241058832495,0.0012283154506928173,8.08404715853952
118 +D-L + municipality FE,sim_renove,Renovated,0.09386564453699515,0.022799712687201348,3.838924905911473e-05,9.841215832869388
119 +D-L + municipality FE,sim_a_renover,Needs Renovation,-0.030155516638169982,0.015840166858438264,0.05694440475551239,-2.9705375143685986
120 +D-L + municipality FE,sim_lumineux_spacieux,Bright & Spacious,-0.03179351155490523,0.01797387278425236,0.07691494756460442,-3.12934118538446
121 +D-L + municipality FE,sim_terrain_nature,Land & Nature,0.1260261192727761,0.011075615148435502,5.338869094096765e-30,13.431179529529969
122 +D-L + municipality FE,sim_vue_panoramique,Panoramic View,-0.04476850818125917,0.012760919017319673,0.00045106309083154,-4.378118695392475
123 +D-L + municipality FE,sim_localisation_premium,Premium Location,-0.13157981147706038,0.01337628634007684,7.815970599186679e-23,-12.329069911879643
124 +D-L + municipality FE,sim_tranquillite,Quiet & Peaceful,-0.11199388936976645,0.014782179372821272,3.556114291150968e-14,-10.595027930908095
125 +D-L + municipality FE,sim_revenu_investissement,Income/Investment,0.02406301022096726,0.015234221618691526,0.11421303437160184,2.4354860683292845
126 +D-L + municipality FE,sim_garage_stationnement,Garage & Parking,0.014255619784487764,0.007897868456184214,0.0710753314974933,1.4357715702183027
127 +D-L + municipality FE,sim_sous_sol_amenage,Finished Basement,-0.05595610027247788,0.011604829719762913,1.4227271259655428e-06,-5.441935428804834
128 +D-L + municipality FE,sim_moderne_contemporain,Modern/Contemporary,0.08160070807876545,0.014031401465532924,6.04247700220704e-09,8.502248261161306
129 +D-L + municipality FE,sim_cachet_patrimonial,Heritage/Character,-0.02487640907085163,0.013910516782156358,0.07372493163308504,-2.45695410643334
130 +D-L + municipality FE,sim_ecoefficace,Energy Efficient,-0.050025869396478656,0.013251260228656152,0.00015989328645421675,-4.879518291211971
131 +D-L + municipality FE,sim_urgence_motivation,Motivated Seller,-0.02239434788134785,0.020358148189726144,0.2713238849478431,-2.2145455859736596
132 +D-L + municipality FE,sim_familial,Family-Friendly,-0.057030750237009584,0.01283150024240262,8.805987621055783e-06,-5.543497667839881
133 +D-L + municipality FE,sim_bord_eau,Waterfront,0.14727581834767536,0.013246924205468101,1.0284774105322797e-28,15.867350237134215
134 +D-L + municipality FE,sim_neuf_construction,New Construction,-0.07816814535678855,0.01635512188514853,1.7579365552524953e-06,-7.519108885501613
135 +D-L + municipality FE,sim_piscine_amenagement,Pool & Landscaping,0.03207738205956133,0.014747842969336808,0.029625931726801415,3.2597406727640443
136 +D-L + municipality FE,bedrooms,Bedrooms,0.04016502157194824,0.0061171334316072615,5.168915649583354e-11,4.09825445949672
137 +D-L + municipality FE,bathrooms,Bathrooms,0.22209326796812434,0.008829564858852054,1.2983371372690505e-139,24.868783501053127
138 +D-L + municipality FE,half_baths,Half-bathrooms,0.11096883400077565,0.005967055658767363,3.403309187376792e-77,11.73600826683261
139 +D-L + municipality FE,parking,Parking,0.1244374333119314,0.010307687516950926,1.479517195936319e-33,13.25111607710101
140 +D-L + municipality FE,stories,Stories,0.034427470331124824,0.005574497487298279,6.579275183174724e-10,3.5026955491282763
141 +D-L + municipality FE,land_size,Lot size (raw field),0.007284140245115483,0.0028558947915433178,0.010754901317546802,0.7310734126643847
142 +D-L + municipality FE,remarks_length,Description length,0.06910602825943563,0.00515676742378094,5.96246193630621e-41,7.1549817687449835
143 +D-L + municipality FE,lang_en,English listing,0.09262809385937325,0.015021918679259904,6.995239943671152e-10,9.705365839748348
144 +D-L + municipality FE,lang_mixed,Mixed / uninformative,0.041503713465345565,0.007986755218160987,2.0300179271056775e-07,4.237703267527415
145 +"D-L + FSA FE, lot area (m2)",sim_luxe,Luxury,0.09882307727425776,0.01599153404104302,6.421858182041118e-10,10.387098241829374
146 +"D-L + FSA FE, lot area (m2)",sim_entree_de_gamme,Entry-Level,0.04734730563038565,0.022754894052529256,0.03745655409847581,4.848609097492651
147 +"D-L + FSA FE, lot area (m2)",sim_renove,Renovated,-0.012499718095015516,0.020364477185741203,0.5393474324080604,-1.2421921102974798
148 +"D-L + FSA FE, lot area (m2)",sim_a_renover,Needs Renovation,-0.014738512412796573,0.01653927560968524,0.3728637218977292,-1.4630432170901542
149 +"D-L + FSA FE, lot area (m2)",sim_lumineux_spacieux,Bright & Spacious,-0.06743943328557907,0.017291009811550247,9.608945428434153e-05,-6.521566428257852
150 +"D-L + FSA FE, lot area (m2)",sim_terrain_nature,Land & Nature,0.041478392135345724,0.01225147538842605,0.0007102711356615519,4.235063863661304
151 +"D-L + FSA FE, lot area (m2)",sim_vue_panoramique,Panoramic View,-0.01812126928844221,0.01224863408062829,0.13901948346407011,-1.7958066389572869
152 +"D-L + FSA FE, lot area (m2)",sim_localisation_premium,Premium Location,-0.08446913780555855,0.016248311384492824,2.0075081198676673e-07,-8.099998270360054
153 +"D-L + FSA FE, lot area (m2)",sim_tranquillite,Quiet & Peaceful,-0.08205722215355873,0.013788894229829665,2.665666573796869e-09,-7.8780756960875165
154 +"D-L + FSA FE, lot area (m2)",sim_revenu_investissement,Income/Investment,-0.014797655095978081,0.012986946615615592,0.2545258229036653,-1.468870784776144
155 +"D-L + FSA FE, lot area (m2)",sim_garage_stationnement,Garage & Parking,0.022442480362888824,0.0062637935405364465,0.00033981432713249934,2.2696207357891574
156 +"D-L + FSA FE, lot area (m2)",sim_sous_sol_amenage,Finished Basement,0.0238417575987322,0.011140477775572376,0.032346532986495584,2.412824455489826
157 +"D-L + FSA FE, lot area (m2)",sim_moderne_contemporain,Modern/Contemporary,0.09173766906527528,0.011694034719644168,4.3355377800892184e-15,9.607724939349627
158 +"D-L + FSA FE, lot area (m2)",sim_cachet_patrimonial,Heritage/Character,-0.05574288361428405,0.013483239480528847,3.56138570557854e-05,-5.421771924750606
159 +"D-L + FSA FE, lot area (m2)",sim_ecoefficace,Energy Efficient,-0.03602694616359332,0.011310735993957984,0.0014465444619345133,-3.5385699521826464
160 +"D-L + FSA FE, lot area (m2)",sim_urgence_motivation,Motivated Seller,-0.015511829931657568,0.018788114712452716,0.4090200890121646,-1.539214116084342
161 +"D-L + FSA FE, lot area (m2)",sim_familial,Family-Friendly,-0.09344686532575229,0.01289612904310326,4.2888832557513296e-13,-8.92135895202567
162 +"D-L + FSA FE, lot area (m2)",sim_bord_eau,Waterfront,0.10305683624772237,0.015591597946108862,3.8492426922222985e-11,10.855441335877813
163 +"D-L + FSA FE, lot area (m2)",sim_neuf_construction,New Construction,-0.011876377531803324,0.01313239018755796,0.3658057866274429,-1.180613172374878
164 +"D-L + FSA FE, lot area (m2)",sim_piscine_amenagement,Pool & Landscaping,0.1100448336761851,0.013990579476481177,3.672210128280443e-15,11.632811843032375
165 +"D-L + FSA FE, lot area (m2)",bedrooms,Bedrooms,0.03004449642655661,0.00675015502334996,8.549750397521636e-06,3.0500386518137024
166 +"D-L + FSA FE, lot area (m2)",bathrooms,Bathrooms,0.20980711787318432,0.009087677234831254,6.256044023436711e-118,23.344012845583762
167 +"D-L + FSA FE, lot area (m2)",half_baths,Half-bathrooms,0.10910692348993703,0.00542406843909124,5.41779830651078e-90,11.528159376664071
168 +"D-L + FSA FE, lot area (m2)",parking,Parking,0.05640579706276208,0.00602622918972914,7.970015225961474e-21,5.802694086000493
169 +"D-L + FSA FE, lot area (m2)",stories,Stories,0.05050726961761313,0.005448253992168118,1.8552069425990513e-20,5.180450954379889
170 +"D-L + FSA FE, lot area (m2)",log_lot_sqm,log lot area (m2),0.3354044209008147,0.010573348044113173,7.805730791573301e-221,39.85058558687109
171 +"D-L + FSA FE, lot area (m2)",lot_missing,Lot area missing,0.18353774843735393,0.007917621399521664,7.093126628062453e-119,20.146031780523586
172 +"D-L + FSA FE, lot area (m2)",remarks_length,Description length,0.06589268429604155,0.005323111385699088,3.412292590943719e-35,6.811208581483541
173 +"D-L + FSA FE, lot area (m2)",lang_en,English listing,0.066683628901921,0.013698159801678397,1.126922453073318e-06,6.8957237497607515
174 +"D-L + FSA FE, lot area (m2)",lang_mixed,Mixed / uninformative,0.03176958227881472,0.006797831721728944,2.9612758813343345e-06,3.2279622381735207
175 +"D-L + FSA FE, floor-area subsample",sim_luxe,Luxury,0.10862021547684633,0.033802842444766334,0.001311983110966673,11.473890935324093
176 +"D-L + FSA FE, floor-area subsample",sim_entree_de_gamme,Entry-Level,0.016652065049357564,0.0403247060759768,0.6796436526563105,1.6791483477741842
177 +"D-L + FSA FE, floor-area subsample",sim_renove,Renovated,-0.0017249396729644532,0.04229820490269475,0.9674709279940936,-0.17234528195604337
178 +"D-L + FSA FE, floor-area subsample",sim_a_renover,Needs Renovation,-0.03557526305518521,0.021707314817802466,0.10124229426524478,-3.4949901122192872
179 +"D-L + FSA FE, floor-area subsample",sim_lumineux_spacieux,Bright & Spacious,-0.05634007286077694,0.02336761479494627,0.015907441797042586,-5.478236163913186
180 +"D-L + FSA FE, floor-area subsample",sim_terrain_nature,Land & Nature,0.04811163311965753,0.01617989584979905,0.0029438214382597563,4.92877840553787
181 +"D-L + FSA FE, floor-area subsample",sim_vue_panoramique,Panoramic View,-0.029944303356289774,0.020314344828038317,0.14046887997490984,-2.950041438712425
182 +"D-L + FSA FE, floor-area subsample",sim_localisation_premium,Premium Location,-0.08086179371659416,0.020897621160386553,0.00010909199121545607,-7.767884678491111
183 +"D-L + FSA FE, floor-area subsample",sim_tranquillite,Quiet & Peaceful,-0.06279386284537386,0.020056178535103625,0.0017427227606712906,-6.086295522443463
184 +"D-L + FSA FE, floor-area subsample",sim_revenu_investissement,Income/Investment,-0.025707591686302746,0.025345801737392367,0.31045195196568665,-2.537996505255946
185 +"D-L + FSA FE, floor-area subsample",sim_garage_stationnement,Garage & Parking,0.024351608995628778,0.012796813070051044,0.057047951251854946,2.465053090388425
186 +"D-L + FSA FE, floor-area subsample",sim_sous_sol_amenage,Finished Basement,0.02894219080429415,0.015858300622583046,0.06799349153412101,2.9365085987369977
187 +"D-L + FSA FE, floor-area subsample",sim_moderne_contemporain,Modern/Contemporary,0.07719795218822531,0.02370800938643689,0.001129153245710619,8.025589424715562
188 +"D-L + FSA FE, floor-area subsample",sim_cachet_patrimonial,Heritage/Character,-0.06817541241600843,0.021315074274393588,0.0013816369981842012,-6.5903392937107
189 +"D-L + FSA FE, floor-area subsample",sim_ecoefficace,Energy Efficient,-0.008810880683446286,0.017590073964117246,0.616440996970397,-0.8772178624055882
190 +"D-L + FSA FE, floor-area subsample",sim_urgence_motivation,Motivated Seller,-0.019013202660806604,0.031867275439087836,0.5507496150621574,-1.8833591849989673
191 +"D-L + FSA FE, floor-area subsample",sim_familial,Family-Friendly,-0.07078683255673393,0.022666002185976034,0.001789933906070086,-6.833952935787813
192 +"D-L + FSA FE, floor-area subsample",sim_bord_eau,Waterfront,0.09434675181063298,0.016038967956624493,4.044927364085351e-09,9.894073954945748
193 +"D-L + FSA FE, floor-area subsample",sim_neuf_construction,New Construction,-0.003563415000662742,0.024154593425005044,0.8827173672746456,-0.35570735720461544
194 +"D-L + FSA FE, floor-area subsample",sim_piscine_amenagement,Pool & Landscaping,0.09717060889698541,0.017258607716323645,1.7992847953175544e-08,10.204837684104096
195 +"D-L + FSA FE, floor-area subsample",bedrooms,Bedrooms,0.005018797475224679,0.010358867157179128,0.6280361098141742,0.5031412734921581
196 +"D-L + FSA FE, floor-area subsample",bathrooms,Bathrooms,0.21224294403264832,0.011306058530554067,1.2678507247970124e-78,23.644823631344703
197 +"D-L + FSA FE, floor-area subsample",half_baths,Half-bathrooms,0.10417581146819327,0.009553287221755363,1.0944359707402882e-27,10.979555255036754
198 +"D-L + FSA FE, floor-area subsample",parking,Parking,0.033110338633001044,0.00988163339520521,0.0008060906141911682,3.3664586086713744
199 +"D-L + FSA FE, floor-area subsample",stories,Stories,0.019617665957454292,0.008036093089759883,0.014638769671034805,1.981135688087976
200 +"D-L + FSA FE, floor-area subsample",log_lot_sqm,log lot area (m2),0.28419881982641,0.017540050411515348,4.814255814495769e-59,32.86970758152519
201 +"D-L + FSA FE, floor-area subsample",lot_missing,Lot area missing,0.14072659849386365,0.013575947883544815,3.5449356784963216e-25,15.11098897814267
202 +"D-L + FSA FE, floor-area subsample",log_floor_sqm,log floor area (m2),0.11678094918906098,0.023832981847084357,9.585020263191603e-07,12.387321738535784
203 +"D-L + FSA FE, floor-area subsample",remarks_length,Description length,0.06534064225041494,0.00848179918728498,1.3225447915457193e-14,6.752260575788238
204 +"D-L + FSA FE, floor-area subsample",lang_en,English listing,0.05602167997688885,0.021822883409224714,0.010255091874018886,5.762061267850083
205 +"D-L + FSA FE, floor-area subsample",lang_mixed,Mixed / uninformative,0.03112165382698573,0.01030192830910206,0.002519794524987588,3.1610995678674536
206 +"French-only, D + FSA FE",sim_luxe,Luxury,0.043351626936303456,0.010570639287545642,4.11127230945924e-05,4.430503607885972
207 +"French-only, D + FSA FE",sim_entree_de_gamme,Entry-Level,0.006681698050405046,0.01031765778553974,0.5172447714887126,0.6704070395484374
208 +"French-only, D + FSA FE",sim_renove,Renovated,0.04222781741837437,0.010269445344499303,3.9226977160358325e-05,4.313209534412077
209 +"French-only, D + FSA FE",sim_a_renover,Needs Renovation,-0.006289510059905902,0.007131062063118662,0.37778338054534,-0.6269772493063264
210 +"French-only, D + FSA FE",sim_lumineux_spacieux,Bright & Spacious,-0.030492950980636292,0.009416467773996315,0.0012026205016816142,-3.0032730638823724
211 +"French-only, D + FSA FE",sim_terrain_nature,Land & Nature,0.09713105912646618,0.010084238105139642,5.8596289252331e-22,10.200479194252798
212 +"French-only, D + FSA FE",sim_vue_panoramique,Panoramic View,0.00730193987907095,0.007475341300745475,0.3286664209403297,0.7328664048563249
213 +"French-only, D + FSA FE",sim_localisation_premium,Premium Location,-0.06431580748633782,0.008771435157215526,2.2604092221648536e-13,-6.229118269960021
214 +"French-only, D + FSA FE",sim_tranquillite,Quiet & Peaceful,-0.09881923959441678,0.011180105974129316,9.671195868727802e-19,-9.409355475903801
215 +"French-only, D + FSA FE",sim_revenu_investissement,Income/Investment,0.02054475016852645,0.008556976174814058,0.016353206691059368,2.0757246279931696
216 +"French-only, D + FSA FE",sim_garage_stationnement,Garage & Parking,0.022790242637166072,0.00684100275595109,0.0008640461951150943,2.3051924365749876
217 +"French-only, D + FSA FE",sim_sous_sol_amenage,Finished Basement,-0.03491174121927484,0.009194414269074193,0.00014642244981328173,-3.4309356824776427
218 +"French-only, D + FSA FE",sim_moderne_contemporain,Modern/Contemporary,0.0727924071326736,0.008862758335895555,2.152083931249487e-16,7.550724610566628
219 +"French-only, D + FSA FE",sim_cachet_patrimonial,Heritage/Character,-0.01092314449584468,0.007945150442037212,0.16918753840358602,-1.086370357711608
220 +"French-only, D + FSA FE",sim_ecoefficace,Energy Efficient,-0.02002647834683076,0.008889433253347703,0.0242691856284764,-1.9827280390072533
221 +"French-only, D + FSA FE",sim_urgence_motivation,Motivated Seller,-0.012995664835095526,0.008458034300631486,0.12441883635713034,-1.2911585797937053
222 +"French-only, D + FSA FE",sim_familial,Family-Friendly,-0.024440976059896636,0.007239815837175697,0.000735716353536736,-2.4144713957461095
223 +"French-only, D + FSA FE",sim_bord_eau,Waterfront,0.04745672989740708,0.009307216929973166,3.4160165341172223e-07,4.860082707425595
224 +"French-only, D + FSA FE",sim_neuf_construction,New Construction,-0.06366441394183817,0.009173985619859477,3.93022633798568e-12,-6.168016624490836
225 +"French-only, D + FSA FE",sim_piscine_amenagement,Pool & Landscaping,0.024132687648792644,0.00844487307865588,0.004267596328349771,2.442623758181628
226 +"French-only, D + FSA FE",bedrooms,Bedrooms,0.020281670031111306,0.00776938753305187,0.0090420727646201,2.0488740644111214
227 +"French-only, D + FSA FE",bathrooms,Bathrooms,0.18233815153193306,0.011807201309302774,8.414658140806279e-54,20.00199138508063
228 +"French-only, D + FSA FE",half_baths,Half-bathrooms,0.10518501514257518,0.00671101988513196,2.296645780334401e-55,11.091612764895942
229 +"French-only, D + FSA FE",parking,Parking,0.11543121939049249,0.010074717213849548,2.1561359415977325e-30,12.235731547316654
230 +"French-only, D + FSA FE",stories,Stories,0.04330267170769674,0.00651436438649856,2.985999618048234e-11,4.4253913138461165
231 +"French-only, D + FSA FE",land_size,Lot size (raw field),0.0043300906800544684,0.0019075123312331658,0.023206384290468198,0.433947906867016
232 +"French-only, D + FSA FE",remarks_length,Description length,0.07417553646000291,0.006459182626817778,1.5925077288384268e-30,7.69958409417848
233 +"English-only, D + FSA FE",sim_luxe,Luxury,0.07368256402839525,0.014202211867335689,2.1244500467577338e-07,7.646504252848629
234 +"English-only, D + FSA FE",sim_entree_de_gamme,Entry-Level,0.09797803676464395,0.015275011431629262,1.4149989472464145e-10,10.29385607432931
235 +"English-only, D + FSA FE",sim_renove,Renovated,0.04894677235625826,0.022563395494978523,0.030059920255216793,5.016445147305504
236 +"English-only, D + FSA FE",sim_a_renover,Needs Renovation,-0.03719588911315656,0.015769742157905737,0.018339706757754974,-3.65126198263247
237 +"English-only, D + FSA FE",sim_lumineux_spacieux,Bright & Spacious,-0.01825126702798931,0.014173527898429817,0.1978500412772256,-1.8085721323476522
238 +"English-only, D + FSA FE",sim_terrain_nature,Land & Nature,0.10488044681639419,0.014611768672410388,7.083876848648706e-13,11.057782930352932
239 +"English-only, D + FSA FE",sim_vue_panoramique,Panoramic View,-0.047366899611922274,0.014082808466383934,0.0007697324431861851,-4.626259249600507
240 +"English-only, D + FSA FE",sim_localisation_premium,Premium Location,-0.04630628069598379,0.011850914906790978,9.329411949698532e-05,-4.525050393550822
241 +"English-only, D + FSA FE",sim_tranquillite,Quiet & Peaceful,-0.05454329702662784,0.014034140885277768,0.00010171160958308806,-5.308249074236171
242 +"English-only, D + FSA FE",sim_revenu_investissement,Income/Investment,-0.01580682394970439,0.01577691139915011,0.31639383921059394,-1.56825517525232
243 +"English-only, D + FSA FE",sim_garage_stationnement,Garage & Parking,-0.014038631545060323,0.007552561118924468,0.06305678911915201,-1.3940549473038466
244 +"English-only, D + FSA FE",sim_sous_sol_amenage,Finished Basement,0.0037403260654207153,0.010563452292999143,0.7232775908758238,0.37473298143375633
245 +"English-only, D + FSA FE",sim_moderne_contemporain,Modern/Contemporary,0.030569027533491284,0.01487928463458451,0.03993033045830763,3.1041057813633977
246 +"English-only, D + FSA FE",sim_cachet_patrimonial,Heritage/Character,-0.03669073042104414,0.014851878907870077,0.013494556526576605,-3.6025782846876186
247 +"English-only, D + FSA FE",sim_ecoefficace,Energy Efficient,-0.03996226277453269,0.013195214941920162,0.0024573690879404154,-3.917430263584709
248 +"English-only, D + FSA FE",sim_urgence_motivation,Motivated Seller,-0.036902765830563636,0.01526720911692313,0.015643607328576024,-3.623015784664241
249 +"English-only, D + FSA FE",sim_familial,Family-Friendly,-0.04205071602059042,0.011849399084643145,0.0003870444036081126,-4.117884825390982
250 +"English-only, D + FSA FE",sim_bord_eau,Waterfront,0.08991006188428988,0.011909347674688948,4.3680801574883013e-14,9.40758801570567
251 +"English-only, D + FSA FE",sim_neuf_construction,New Construction,-0.045659809558013915,0.015100377169147342,0.0024966024624037907,-4.46330863925033
252 +"English-only, D + FSA FE",sim_piscine_amenagement,Pool & Landscaping,0.0037433308299444044,0.011959992220473998,0.7542899833150644,0.37503458432361914
253 +"English-only, D + FSA FE",bedrooms,Bedrooms,0.05342917401421082,0.009035135954814765,3.349365962258254e-09,5.488227604462281
254 +"English-only, D + FSA FE",bathrooms,Bathrooms,0.26862836072924123,0.013630235720718824,1.831223243919526e-86,30.81688837659207
255 +"English-only, D + FSA FE",half_baths,Half-bathrooms,0.11990087399425964,0.011556280692397189,3.2091251695594046e-25,12.738509285918308
256 +"English-only, D + FSA FE",parking,Parking,0.12555882909622534,0.018362155438721123,8.035493314494587e-12,13.378186636114808
257 +"English-only, D + FSA FE",stories,Stories,0.01946828034229819,0.00933273059615448,0.03697664000155505,1.965902311250911
258 +"English-only, D + FSA FE",land_size,Lot size (raw field),0.052784631334111036,0.010973727784828042,1.5086145445702036e-06,5.420257846581156
259 +"English-only, D + FSA FE",remarks_length,Description length,0.06486208336055194,0.007883453203904501,1.9096450124600114e-16,6.701185554654199
260 +"D (baseline), FSA-clustered SE",sim_luxe,Luxury,0.13302767513624159,0.028114641701235586,2.227399943689139e-06,14.22816106926561
261 +"D (baseline), FSA-clustered SE",sim_entree_de_gamme,Entry-Level,0.09909068025717205,0.03566290943719285,0.005460445035619407,10.416642111431651
262 +"D (baseline), FSA-clustered SE",sim_renove,Renovated,0.050148954159303316,0.03512646564662689,0.1533872507024376,5.14276992414191
263 +"D (baseline), FSA-clustered SE",sim_a_renover,Needs Renovation,-0.08267657263757641,0.02407810198514912,0.0005954398241461869,-7.93511378938514
264 +"D (baseline), FSA-clustered SE",sim_lumineux_spacieux,Bright & Spacious,-0.09363534955276323,0.02911096641324329,0.0012976568187714759,-8.938524221538701
265 +"D (baseline), FSA-clustered SE",sim_terrain_nature,Land & Nature,0.12246056220267565,0.019315972592787924,2.2997402698293998e-10,13.027454365664525
266 +"D (baseline), FSA-clustered SE",sim_vue_panoramique,Panoramic View,0.03003177740935259,0.018447315440535825,0.1035300827764251,3.048727964934539
267 +"D (baseline), FSA-clustered SE",sim_localisation_premium,Premium Location,-0.06278200580427294,0.022913855153021884,0.006145515414891972,-6.085181977187871
268 +"D (baseline), FSA-clustered SE",sim_tranquillite,Quiet & Peaceful,-0.09950647079921601,0.019809150279312595,5.080225034855976e-07,-9.47159080620371
269 +"D (baseline), FSA-clustered SE",sim_revenu_investissement,Income/Investment,-0.03159128289655594,0.02121661268275589,0.1364905136743357,-3.1097491810533673
270 +"D (baseline), FSA-clustered SE",sim_garage_stationnement,Garage & Parking,0.018962330637720064,0.011444131766445551,0.09752999938592255,1.9143257417747694
271 +"D (baseline), FSA-clustered SE",sim_sous_sol_amenage,Finished Basement,-0.036991886118690004,0.018293208926889938,0.04315931277617915,-3.6316045465441094
272 +"D (baseline), FSA-clustered SE",sim_moderne_contemporain,Modern/Contemporary,0.15168086020684507,0.027260027205889284,2.6332359981362313e-08,16.37887658537329
273 +"D (baseline), FSA-clustered SE",sim_cachet_patrimonial,Heritage/Character,0.010280833145417556,0.0209413102195269,0.6234720493768229,1.0333862483290934
274 +"D (baseline), FSA-clustered SE",sim_ecoefficace,Energy Efficient,-0.08116151901604113,0.02016242812793412,5.688237459443384e-05,-7.795524834440548
275 +"D (baseline), FSA-clustered SE",sim_urgence_motivation,Motivated Seller,-0.08896927610037955,0.03183032383608697,0.005188195958909799,-8.512631837018493
276 +"D (baseline), FSA-clustered SE",sim_familial,Family-Friendly,-0.12365094148067936,0.01661066265803097,9.762946211082197e-14,-11.631175403541361
277 +"D (baseline), FSA-clustered SE",sim_bord_eau,Waterfront,0.0461844747419041,0.023298371759619144,0.047445134395434393,4.726758755620675
278 +"D (baseline), FSA-clustered SE",sim_neuf_construction,New Construction,-0.11053160085021901,0.03645085687011731,0.002426610836356995,-10.464196433275463
279 +"D (baseline), FSA-clustered SE",sim_piscine_amenagement,Pool & Landscaping,0.024584387749493897,0.019755607797927937,0.21334289770540282,2.4889075540599714
280 +"D (baseline), FSA-clustered SE",bedrooms,Bedrooms,0.031361825945882715,0.009184710889159209,0.0006388309044676171,3.185878963279243
281 +"D (baseline), FSA-clustered SE",bathrooms,Bathrooms,0.2965921212218176,0.0170251948281092,5.739250854880222e-68,34.52664818812274
282 +"D (baseline), FSA-clustered SE",half_baths,Half-bathrooms,0.1580223318079423,0.00894199787188994,6.899939456569752e-70,17.119234925823633
283 +"D (baseline), FSA-clustered SE",parking,Parking,0.09137930012830353,0.009168213111026117,2.1261742622934808e-23,9.568451973005132
284 +"D (baseline), FSA-clustered SE",stories,Stories,0.07440621383479015,0.007835573394559408,2.1821230182006158e-21,7.724430817181238
285 +"D (baseline), FSA-clustered SE",land_size,Lot size (raw field),0.0033359400952781837,0.0022671709970308925,0.14118003002837876,0.33415105359342334
286 +"D (baseline), FSA-clustered SE",remarks_length,Description length,0.10134517255307976,0.008259246100647448,1.3042711472008394e-34,10.665856400701944
287 +ML-D: multilingual similarities,ml_luxe,Luxury,0.0851548960443597,0.01558659023072237,4.672492717980097e-08,8.888571772680853
288 +ML-D: multilingual similarities,ml_entree_de_gamme,Entry-Level,-0.06182571149559535,0.009804602146622017,2.867371550432518e-10,-5.995328815025925
289 +ML-D: multilingual similarities,ml_renove,Renovated,0.013355331113277746,0.011916671219874943,0.2624042311957284,1.3444911897297906
290 +ML-D: multilingual similarities,ml_a_renover,Needs Renovation,-0.17343272729068493,0.014232885358992147,3.720405324149524e-34,-15.922628961516772
291 +ML-D: multilingual similarities,ml_lumineux_spacieux,Bright & Spacious,-0.011009720638681941,0.015142851427374766,0.46719085633664414,-1.0949335475507582
292 +ML-D: multilingual similarities,ml_terrain_nature,Land & Nature,0.24207546762816656,0.0261702773313293,2.2446038654925838e-20,27.389032667015044
293 +ML-D: multilingual similarities,ml_vue_panoramique,Panoramic View,-0.03633642279075583,0.01186399157255697,0.002193142722136808,-3.56841789134712
294 +ML-D: multilingual similarities,ml_localisation_premium,Premium Location,0.12993195134332808,0.013263373609480496,1.167884345805856e-22,13.875089021963749
295 +ML-D: multilingual similarities,ml_tranquillite,Quiet & Peaceful,-0.09203219087560624,0.014376113470206675,1.536125862314482e-10,-8.792421144573792
296 +ML-D: multilingual similarities,ml_revenu_investissement,Income/Investment,0.07488596235801764,0.008775914336744031,1.4244827081776345e-17,7.776123852618544
297 +ML-D: multilingual similarities,ml_garage_stationnement,Garage & Parking,0.03849116266201538,0.009505331430650146,5.134279942054589e-05,3.9241544188628685
298 +ML-D: multilingual similarities,ml_sous_sol_amenage,Finished Basement,-0.17750079818087203,0.012975575226588367,1.344131516838259e-42,-16.2639669029512
299 +ML-D: multilingual similarities,ml_moderne_contemporain,Modern/Contemporary,0.0432451625029318,0.016018107068021984,0.00693879794873487,4.419386065314579
300 +ML-D: multilingual similarities,ml_cachet_patrimonial,Heritage/Character,0.07587850229349284,0.01353169601700878,2.053123479081149e-08,7.883149064245121
301 +ML-D: multilingual similarities,ml_ecoefficace,Energy Efficient,-0.005763708673914861,0.008766918198136702,0.5108990672987737,-0.5747130371204001
302 +ML-D: multilingual similarities,ml_urgence_motivation,Motivated Seller,-0.027963228507331406,0.009284497553300292,0.0025968717018208017,-2.7575876369640318
303 +ML-D: multilingual similarities,ml_familial,Family-Friendly,-0.151717834512092,0.016398944588992978,2.209855551527315e-20,-14.076930821312683
304 +ML-D: multilingual similarities,ml_bord_eau,Waterfront,-0.10487759503578666,0.01374652369417948,2.358664717183056e-14,-9.956526647772158
305 +ML-D: multilingual similarities,ml_neuf_construction,New Construction,0.03688168331015068,0.01127796685410669,0.0010745543175891396,3.7570251697814028
306 +ML-D: multilingual similarities,ml_piscine_amenagement,Pool & Landscaping,-0.12359365625980517,0.020886775110550936,3.2723688320271255e-09,-11.626113030907781
307 +ML-D: multilingual similarities,bedrooms,Bedrooms,0.026938642548190984,0.007231051612278784,0.00019499688889287626,2.7304768026886306
308 +ML-D: multilingual similarities,bathrooms,Bathrooms,0.294828237487137,0.010921613834145158,1.6948488527639173e-160,34.28956797393812
309 +ML-D: multilingual similarities,half_baths,Half-bathrooms,0.15286253466511768,0.00734184871329337,2.809658919396832e-96,16.516479816416528
310 +ML-D: multilingual similarities,parking,Parking,0.07849657451294971,0.008477919594879,2.0646586261821332e-20,8.165964994480701
311 +ML-D: multilingual similarities,stories,Stories,0.07281651748514681,0.005444881944275179,8.650918588728868e-41,7.55331772770611
312 +ML-D: multilingual similarities,land_size,Lot size (raw field),0.002753781730139085,0.6881202171039728,0.9968069619131076,0.27575768699104053
313 +ML-D: multilingual similarities,remarks_length,Description length,0.1306703319621478,0.0054465844950605715,3.432288085889893e-127,13.959203230993156
314 +ML-D-L: + language,ml_luxe,Luxury,0.06878501372117217,0.015428215125249395,8.257721357165345e-06,7.12058898233745
315 +ML-D-L: + language,ml_entree_de_gamme,Entry-Level,-0.10420054876773624,0.010412394022467365,1.4148114396021554e-23,-9.895542407930291
316 +ML-D-L: + language,ml_renove,Renovated,-0.002828633390494717,0.011882501703775009,0.8118420622950243,-0.2824636576461148
317 +ML-D-L: + language,ml_a_renover,Needs Renovation,-0.13136521637362591,0.015082288539785903,3.041445166072446e-18,-12.310254140755216
318 +ML-D-L: + language,ml_lumineux_spacieux,Bright & Spacious,0.029191877016000983,0.015249205191428172,0.05557912527212485,2.9622136345782923
319 +ML-D-L: + language,ml_terrain_nature,Land & Nature,0.22382654740357044,0.026169422283139405,1.1995060835661738e-17,25.085403673037487
320 +ML-D-L: + language,ml_vue_panoramique,Panoramic View,-0.002320951108043673,0.011942476517905766,0.845906374600553,-0.2318259783567589
321 +ML-D-L: + language,ml_localisation_premium,Premium Location,0.09437040233589251,0.013151519268037799,7.197632260227918e-13,9.896673038252413
322 +ML-D-L: + language,ml_tranquillite,Quiet & Peaceful,-0.07429588571119608,0.014132004361802541,1.4620265217538832e-07,-7.160304619548274
323 +ML-D-L: + language,ml_revenu_investissement,Income/Investment,0.05920155923205317,0.008763789083633304,1.4259220176609055e-11,6.098907133210463
324 +ML-D-L: + language,ml_garage_stationnement,Garage & Parking,0.05652715209322201,0.009548913251502249,3.2243693583382394e-09,5.815534554275992
325 +ML-D-L: + language,ml_sous_sol_amenage,Finished Basement,-0.13903969717061734,0.012833809946464173,2.3791076686781156e-27,-12.980651644659813
326 +ML-D-L: + language,ml_moderne_contemporain,Modern/Contemporary,0.029148677784136795,0.015787685086564435,0.06484980851323516,2.957765842109561
327 +ML-D-L: + language,ml_cachet_patrimonial,Heritage/Character,0.04359875724054314,0.013480458998115036,0.0012197586514736927,4.456314739239509
328 +ML-D-L: + language,ml_ecoefficace,Energy Efficient,0.02446301978737778,0.008733456601261715,0.005093353262924641,2.4764694390202235
329 +ML-D-L: + language,ml_urgence_motivation,Motivated Seller,0.056503297765546606,0.010889850618153061,2.1185810997944306e-07,5.813010425947396
330 +ML-D-L: + language,ml_familial,Family-Friendly,-0.11064005914511657,0.01637832111903498,1.4256483247800428e-11,-10.473906807267774
331 +ML-D-L: + language,ml_bord_eau,Waterfront,-0.0738141064188621,0.013784264656966718,8.557807397785627e-08,-7.1155656005062795
332 +ML-D-L: + language,ml_neuf_construction,New Construction,0.04737051303228468,0.011125278708154043,2.0634055081563157e-05,4.851042389537619
333 +ML-D-L: + language,ml_piscine_amenagement,Pool & Landscaping,-0.14739370989956485,0.0206816368738765,1.0273567626317335e-12,-13.704584306908995
334 +ML-D-L: + language,bedrooms,Bedrooms,0.029566907687127178,0.0069986620995147655,2.3931091661555846e-05,3.00083486427849
335 +ML-D-L: + language,bathrooms,Bathrooms,0.2747473005192874,0.010726769789931194,1.0864013137652317e-144,31.619803028106762
336 +ML-D-L: + language,half_baths,Half-bathrooms,0.14675567587904892,0.007115492850752952,1.643810875143253e-94,15.807098378682284
337 +ML-D-L: + language,parking,Parking,0.07779943529751995,0.008535166341257788,7.85520587854893e-20,8.090584536897705
338 +ML-D-L: + language,stories,Stories,0.0644598722767471,0.005294228141758259,4.198159050235619e-34,6.658277784737754
339 +ML-D-L: + language,land_size,Lot size (raw field),0.003681742255539598,0.6996657469267935,0.995801435530636,0.36885281940275405
340 +ML-D-L: + language,remarks_length,Description length,0.10873632546449646,0.0054468814977584575,1.1546445216108414e-88,11.486834918872258
341 +ML-D-L: + language,lang_en,English listing,0.12300609997033893,0.005665136492989182,1.5522832911566395e-104,13.08913193299539
342 +ML-D-L: + language,lang_mixed,Mixed / uninformative,0.020891774688885964,0.007742814157288772,0.006971247183307838,2.111153554370082
343 +ML-D-L + FSA FE,ml_luxe,Luxury,0.04433725089273513,0.014576909058934358,0.002353177180734761,4.533483555439122
344 +ML-D-L + FSA FE,ml_entree_de_gamme,Entry-Level,-0.049741071041624264,0.012589982847396671,7.78757431417651e-05,-4.852424276526079
345 +ML-D-L + FSA FE,ml_renove,Renovated,-0.05726442092311921,0.012299028327032944,3.223934766402933e-06,-5.565566804991729
346 +ML-D-L + FSA FE,ml_a_renover,Needs Renovation,-0.04617767909059453,0.01592812230274176,0.003742010661004769,-4.512771372222968
347 +ML-D-L + FSA FE,ml_lumineux_spacieux,Bright & Spacious,0.03488200717872679,0.013889059541964902,0.012022825838083132,3.5497520317239406
348 +ML-D-L + FSA FE,ml_terrain_nature,Land & Nature,0.19980568198072293,0.022046021598878206,1.2677446557378454e-19,22.116544065374534
349 +ML-D-L + FSA FE,ml_vue_panoramique,Panoramic View,0.0028984258840220123,0.011198888050340824,0.7957789709066655,0.290263038148475
350 +ML-D-L + FSA FE,ml_localisation_premium,Premium Location,-0.006417022288085609,0.013365897034318326,0.631153355894229,-0.6396477170212744
351 +ML-D-L + FSA FE,ml_tranquillite,Quiet & Peaceful,-0.06205130852774416,0.013304213704452146,3.10069723912751e-06,-6.0165335978954015
352 +ML-D-L + FSA FE,ml_revenu_investissement,Income/Investment,0.04564626083424947,0.010244408394712957,8.36103724031708e-06,4.670408523154479
353 +ML-D-L + FSA FE,ml_garage_stationnement,Garage & Parking,0.05782247602358987,0.008993730567614546,1.2827880957376796e-10,5.952688758773261
354 +ML-D-L + FSA FE,ml_sous_sol_amenage,Finished Basement,-0.10874622603044745,0.011802718004586862,3.1519153939195555e-20,-10.304198678638487
355 +ML-D-L + FSA FE,ml_moderne_contemporain,Modern/Contemporary,-0.0017150633156954274,0.01761096879646314,0.9224197942412735,-0.17135934350398507
356 +ML-D-L + FSA FE,ml_cachet_patrimonial,Heritage/Character,0.042492443521637495,0.009417812430333135,6.42425435448695e-06,4.34081718526147
357 +ML-D-L + FSA FE,ml_ecoefficace,Energy Efficient,0.017741084308971606,0.008791628561679034,0.04359626216084903,1.7899392143703396
358 +ML-D-L + FSA FE,ml_urgence_motivation,Motivated Seller,0.0034988433078709724,0.011293977252563044,0.7567151286132012,0.35049714051171854
359 +ML-D-L + FSA FE,ml_familial,Family-Friendly,-0.07668495153851848,0.01691698300311926,5.814745896652286e-06,-7.381840026495324
360 +ML-D-L + FSA FE,ml_bord_eau,Waterfront,0.002204481946180309,0.012375106081281,0.858614263310728,0.22069136030253844
361 +ML-D-L + FSA FE,ml_neuf_construction,New Construction,0.06914450575527807,0.013313686859233459,2.0638751736815758e-07,7.159104903433944
362 +ML-D-L + FSA FE,ml_piscine_amenagement,Pool & Landscaping,-0.12718311755995793,0.016842609682957983,4.3102942254048465e-14,-11.942759043844442
363 +ML-D-L + FSA FE,bedrooms,Bedrooms,0.03706357488119585,0.0066385008799041845,2.3623591955328947e-08,3.7758994145774993
364 +ML-D-L + FSA FE,bathrooms,Bathrooms,0.21584218886009837,0.007835452144698878,4.8243107459294625e-167,24.090653467312183
365 +ML-D-L + FSA FE,half_baths,Half-bathrooms,0.10777804021312273,0.005720658642938562,3.539924064822876e-79,11.38004990267203
366 +ML-D-L + FSA FE,parking,Parking,0.11406293513583507,0.008387923645150239,4.088932728919418e-42,12.082266179097179
367 +ML-D-L + FSA FE,stories,Stories,0.027323823004011857,0.006095022722730803,7.361020618345805e-06,2.77005419630012
368 +ML-D-L + FSA FE,land_size,Lot size (raw field),0.0045001052606704044,0.0026151660092300576,0.08529214854027718,0.45102459400176986
369 +ML-D-L + FSA FE,remarks_length,Description length,0.08857309052134568,0.005990444556093854,1.8108564087798262e-49,9.261410942694326
370 +ML-D-L + FSA FE,lang_en,English listing,0.041938451848777016,0.006852578112642467,9.35176321565568e-10,4.28302924989683
371 +ML-D-L + FSA FE,lang_mixed,Mixed / uninformative,0.005314348447075984,0.006373183878098046,0.4043594078410446,0.532849464495766
372 +"ML-D-L + FSA FE, lot area (m2)",ml_luxe,Luxury,0.09523492651097991,0.012478210100581026,2.3096315490525984e-14,9.99172244919244
373 +"ML-D-L + FSA FE, lot area (m2)",ml_entree_de_gamme,Entry-Level,-0.017557894575956134,0.009723912685848357,0.07097444769922309,-1.740465292263682
374 +"ML-D-L + FSA FE, lot area (m2)",ml_renove,Renovated,0.0015170013599882176,0.010080315926972496,0.8803768958568432,0.15181525886160951
375 +"ML-D-L + FSA FE, lot area (m2)",ml_a_renover,Needs Renovation,-0.10991146852576746,0.014782136735093987,1.0423232036250293e-13,-10.408655167600834
376 +"ML-D-L + FSA FE, lot area (m2)",ml_lumineux_spacieux,Bright & Spacious,0.03707253455082954,0.011944428455205136,0.001910839237311444,3.776829216517541
377 +"ML-D-L + FSA FE, lot area (m2)",ml_terrain_nature,Land & Nature,-0.00914192898653889,0.019580551889949876,0.640579854945009,-0.9100268602488915
378 +"ML-D-L + FSA FE, lot area (m2)",ml_vue_panoramique,Panoramic View,0.053356126408070664,0.010808587198414437,7.95545498127161e-07,5.480522223393036
379 +"ML-D-L + FSA FE, lot area (m2)",ml_localisation_premium,Premium Location,6.983382887611883e-05,0.010963752888453563,0.9949178937460109,0.006983626731460468
380 +"ML-D-L + FSA FE, lot area (m2)",ml_tranquillite,Quiet & Peaceful,-0.07629460557325704,0.011906764003700842,1.4776101935597277e-10,-7.345679844408282
381 +"ML-D-L + FSA FE, lot area (m2)",ml_revenu_investissement,Income/Investment,0.023970764301945793,0.008527741342257585,0.004940068633052756,2.42603724859074
382 +"ML-D-L + FSA FE, lot area (m2)",ml_garage_stationnement,Garage & Parking,0.0583530009795509,0.007870634135309444,1.225318828131434e-13,6.008914217496719
383 +"ML-D-L + FSA FE, lot area (m2)",ml_sous_sol_amenage,Finished Basement,-0.13883285631171707,0.011131275474227254,1.0569990201224862e-35,-12.96265062629618
384 +"ML-D-L + FSA FE, lot area (m2)",ml_moderne_contemporain,Modern/Contemporary,0.031246320516854966,0.014417530480584473,0.030216179534030076,3.173961122360902
385 +"ML-D-L + FSA FE, lot area (m2)",ml_cachet_patrimonial,Heritage/Character,-0.02830501111181222,0.009929963014079819,0.0043655367299878555,-2.7908177228713305
386 +"ML-D-L + FSA FE, lot area (m2)",ml_ecoefficace,Energy Efficient,-8.079511270449487e-05,0.009109131018488445,0.9929231089513773,-0.008079184886722324
387 +"ML-D-L + FSA FE, lot area (m2)",ml_urgence_motivation,Motivated Seller,-0.005576445154504483,0.009414305043089254,0.553624663330083,-0.5560925645521464
388 +"ML-D-L + FSA FE, lot area (m2)",ml_familial,Family-Friendly,-0.007712506253048174,0.01633828621099616,0.6368903029605703,-0.7682841189682432
389 +"ML-D-L + FSA FE, lot area (m2)",ml_bord_eau,Waterfront,0.062292869658708505,0.011958997184084903,1.8999348252455138e-07,6.427399265069567
390 +"ML-D-L + FSA FE, lot area (m2)",ml_neuf_construction,New Construction,0.06606824726641805,0.010944204411408915,1.5717597411807776e-09,6.829962320714533
391 +"ML-D-L + FSA FE, lot area (m2)",ml_piscine_amenagement,Pool & Landscaping,-0.04621656294386885,0.016170885182987715,0.004263060108395826,-4.516484211425286
392 +"ML-D-L + FSA FE, lot area (m2)",bedrooms,Bedrooms,0.03323634554793076,0.0063334062637291485,1.539399629906244e-07,3.3794843178753364
393 +"ML-D-L + FSA FE, lot area (m2)",bathrooms,Bathrooms,0.19403396898050762,0.008566929932418203,1.4211996979100852e-113,21.41375252696789
394 +"ML-D-L + FSA FE, lot area (m2)",half_baths,Half-bathrooms,0.10141165565815874,0.005261546137577876,8.859957343821327e-83,10.673214055038827
395 +"ML-D-L + FSA FE, lot area (m2)",parking,Parking,0.05000187826148436,0.00566717887002756,1.1137028667333933e-18,5.127307093988831
396 +"ML-D-L + FSA FE, lot area (m2)",stories,Stories,0.04076093872337987,0.005318188238766026,1.7961208035033307e-14,4.160306881978326
397 +"ML-D-L + FSA FE, lot area (m2)",log_lot_sqm,log lot area (m2),0.34197368534377426,0.009855809503430497,8.540418516566026e-264,40.77232532732307
398 +"ML-D-L + FSA FE, lot area (m2)",lot_missing,Lot area missing,0.18811954118588925,0.007858079069334606,1.1848384096746234e-126,20.697779028242746
399 +"ML-D-L + FSA FE, lot area (m2)",remarks_length,Description length,0.06760759737245087,0.005302861930922996,3.1469419445249548e-37,6.994537671584178
400 +"ML-D-L + FSA FE, lot area (m2)",lang_en,English listing,0.0363800786876966,0.006001529419402326,1.3460546441125697e-09,3.704993217169106
401 +"ML-D-L + FSA FE, lot area (m2)",lang_mixed,Mixed / uninformative,-0.016311131686021524,0.005996905638140265,0.00652967865218717,-1.617882550880112
modified scripts/06_tables.py +7 −9
@@ -66,7 +66,7 @@ def tab_descriptive():
66 66 ("half_baths", "Half-bathrooms", 1),
67 67 ("parking", "Parking spaces", 1),
68 68 ("stories", "Stories", 1),
69 − ("land_size", "Lot size (sq.\\ ft.)", 0),
69 + ("land_size", "Lot size (raw field, mixed units)", 0),
70 70 ("remarks_length", "Description length (char.)", 0),
71 71 ]
72 72 lines = []
@@ -84,7 +84,6 @@ def tab_descriptive():
84 84 \centering
85 85 \caption{{Descriptive statistics for structural and textual variables ($n = 17{{,}}087$).}}
86 86 \label{{tab:descriptive}}
87 −\begin{{threeparttable}}
88 87 \small
89 88 \begin{{adjustbox}}{{max width=\textwidth}}
90 89 \begin{{tabular}}{{lR{{1.6cm}}R{{1.7cm}}R{{1.2cm}}R{{1.4cm}}R{{1.4cm}}R{{1.4cm}}R{{1.9cm}}}}
@@ -95,11 +94,10 @@ def tab_descriptive():
95 94 \bottomrule
96 95 \end{{tabular}}
97 96 \end{{adjustbox}}
98 −\begin{{tablenotes}}
99 −\footnotesize
100 −\item \textit{{Notes:}} The sample is restricted to single-family houses with a positive listing price and a description of at least 20 characters. Descriptions are truncated at approximately 700 characters in the data export, which bounds the description-length variable. The lot-size field is noisy (units are not standardized at the source), which motivates its cautious interpretation in the regressions.
101 −\end{{tablenotes}}
102 −\end{{threeparttable}}
97 +\begin{{minipage}}{{\textwidth}}
98 +\vspace{{4pt}}\footnotesize
99 +\textit{{Notes:}} The sample is restricted to single-family houses with a positive listing price and a description of at least 20 characters. Descriptions are truncated at approximately 700 characters in the data export, which bounds the description-length variable. The raw lot-size field mixes units at the source (61\\% of values are reported in m$^2$, 32\\% in sq.\\ ft., 2\\% in acres or hectares, 4\\% missing) and is used as reported in the baseline models for comparability with the first version of the paper; a unit-corrected lot area is used in Section~\\ref{{sec:extended}}.
100 +\end{{minipage}}
103 101 \end{{table}}
104 102 """
105 103 write("tab_descriptive.tex", content)
@@ -231,7 +229,7 @@ def tab_full_results():
231 229
232 230 content = rf"""\begin{{table}}[!htbp]
233 231 \centering
234 −\caption{{Full model (D) coefficient estimates. HC3 robust standard errors. All variables standardized.}}
232 +\caption{{Full model (D) coefficient estimates. HC3 robust standard errors. All variables standardised.}}
235 233 \label{{tab:full_results}}
236 234 \small
237 235 \begin{{adjustbox}}{{max width=\textwidth}}
@@ -319,7 +317,7 @@ def tab_parsimonious():
319 317
320 318 content = rf"""\begin{{table}}[!htbp]
321 319 \centering
322 −\caption{{Parsimonious model (E) coefficient estimates. HC3 robust standard errors. All variables standardized.}}
320 +\caption{{Parsimonious model (E) coefficient estimates. HC3 robust standard errors. All variables standardised.}}
323 321 \label{{tab:parsimonious}}
324 322 \small
325 323 \begin{{adjustbox}}{{max width=\textwidth}}
added scripts/07_revision_extensions.py +412 −0
@@ -0,0 +1,412 @@
1 +#!/usr/bin/env python3
2 +# Author: Simon-Pierre Boucher — contact@spboucher.ai
3 +#
4 +"""Step 7 — Revision extensions (editorial-board review, 2026-10-17).
5 +
6 +Addresses the identification and inference issues raised in the review:
7 + (a) language of the listing (French / English / mixed) and its effect on the
8 + similarity scores computed against French references;
9 + (b) extended specifications: language controls, FSA (forward sortation area)
10 + and municipality fixed effects, cluster-robust standard errors, unit-
11 + corrected lot size, floor-area subsample, French-only / English-only;
12 + (c) domain-level block tests of the semantic dimensions;
13 + (d) out-of-sample validation: random 5-fold and spatial (FSA-grouped) CV;
14 + (e) sensitivity of the estimates to the phrasing of the reference texts;
15 + (f) a multilingual embedding model (paraphrase-multilingual-MiniLM-L12-v2).
16 +
17 +Inputs : data/processed/houses.parquet, hedonic_maison_results.csv,
18 + embeddings_maisons.npy, data/raw/louka.db
19 +Outputs: results/revision_language.csv
20 + results/revision_specifications.csv, revision_spec_summary.csv
21 + results/revision_block_tests.csv
22 + results/revision_oos.csv
23 + results/revision_reference_sensitivity.csv (+ _summary)
24 + results/revision_multilingual.csv
25 + data/processed/embeddings_multilingual.npy (cache)
26 +"""
27 +
28 +import sys
29 +import time
30 +from pathlib import Path
31 +
32 +import numpy as np
33 +import pandas as pd
34 +import statsmodels.api as sm
35 +from sklearn.decomposition import PCA
36 +from sklearn.model_selection import GroupKFold, KFold
37 +
38 +sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
39 +
40 +from src import config
41 +from src.extensions import (block_f_test, detect_language, load_revision_fields,
42 + ols, oos_metrics, within, zscore)
43 +from src.references import ENGLISH_LABELS, REFERENCES, SIM_COLS
44 +
45 +STRUCT = config.STRUCTURAL_VARS
46 +LEN = ["remarks_length"]
47 +LANG = ["lang_en", "lang_mixed"]
48 +MULTI_MODEL = "paraphrase-multilingual-MiniLM-L12-v2"
49 +EMB_MULTI = config.DATA_PROCESSED / "embeddings_multilingual.npy"
50 +
51 +DOMAINS = {
52 + "Quality & Standing": ["sim_luxe", "sim_entree_de_gamme"],
53 + "Condition": ["sim_renove", "sim_a_renover"],
54 + "Physical Attributes": ["sim_lumineux_spacieux", "sim_garage_stationnement",
55 + "sim_sous_sol_amenage", "sim_piscine_amenagement"],
56 + "Location & Setting": ["sim_terrain_nature", "sim_vue_panoramique",
57 + "sim_localisation_premium", "sim_tranquillite", "sim_bord_eau"],
58 + "Style & Character": ["sim_moderne_contemporain", "sim_cachet_patrimonial",
59 + "sim_neuf_construction", "sim_ecoefficace", "sim_familial"],
60 + "Market Signals": ["sim_revenu_investissement", "sim_urgence_motivation"],
61 +}
62 +
63 +T0 = time.time()
64 +
65 +
66 +def log(msg):
67 + print(f"[{time.time() - T0:6.1f}s] {msg}", flush=True)
68 +
69 +
70 +# --------------------------------------------------------------------------
71 +# Data assembly
72 +# --------------------------------------------------------------------------
73 +def build_dataset():
74 + df = pd.read_csv(config.ANALYSIS_CSV)
75 + houses = pd.read_parquet(config.HOUSES_PARQUET)
76 + df["id"] = df["id"].astype(str)
77 + assert (df["id"].values == houses["id"].astype(str).values).all()
78 + df["remarks"] = houses["remarks"].values
79 + df["latitude"] = houses["latitude"].values
80 + df["longitude"] = houses["longitude"].values
81 + extra = load_revision_fields(config.DB_PATH, df["id"].tolist())
82 + for c in ["fsa", "municipality", "lot_sqm", "floor_sqm", "scraped_at"]:
83 + df[c] = extra[c].values
84 + df["lang"] = [detect_language(t) for t in df["remarks"]]
85 + df["lang_en"] = (df["lang"] == "en").astype(float)
86 + df["lang_mixed"] = (df["lang"] == "mixed").astype(float)
87 + df["log_lot_sqm"] = np.where(df["lot_sqm"] > 0, np.log(df["lot_sqm"].fillna(1.0)), 0.0)
88 + df["lot_missing"] = (~(df["lot_sqm"] > 0)).astype(float)
89 + df["log_floor_sqm"] = np.where(df["floor_sqm"] > 0, np.log(df["floor_sqm"].fillna(1.0)), np.nan)
90 + df["fsa_id"] = pd.factorize(df["fsa"])[0]
91 + df["mun_id"] = pd.factorize(df["municipality"])[0]
92 + return df
93 +
94 +
95 +# --------------------------------------------------------------------------
96 +# Estimation helpers
97 +# --------------------------------------------------------------------------
98 +def design(df, columns, fe=None):
99 + """Standardized design (z-scores on the estimation sample), optional FE demeaning."""
100 + X = zscore(df, columns)
101 + if fe is not None:
102 + X = X - X.groupby(df[fe].values).transform("mean")
103 + return X # no constant after within transformation
104 + return sm.add_constant(X)
105 +
106 +
107 +def fit_spec(df, columns, sims, fe=None, cluster=None):
108 + """Fit y on columns (+sims); return model, model-without-sims and summary dict."""
109 + y = df["log_price"]
110 + if fe is not None:
111 + y = y - y.groupby(df[fe].values).transform("mean")
112 + groups = df[cluster].values if cluster else None
113 + cov = "cluster" if cluster else "HC3"
114 + m_full = ols(y, design(df, columns + sims, fe), cov, groups)
115 + m_base = ols(y, design(df, columns, fe), cov, groups)
116 + f, p, q = block_f_test(m_full, sims)
117 + # R² relative to total variance of log price (not within variance) when FE
118 + if fe is not None:
119 + yfull = df["log_price"]
120 + sst = float(((yfull - yfull.mean()) ** 2).sum())
121 + r2_full = 1 - float((m_full.resid ** 2).sum()) / sst
122 + r2_base = 1 - float((m_base.resid ** 2).sum()) / sst
123 + r2_within_full = m_full.rsquared
124 + else:
125 + r2_full, r2_base, r2_within_full = m_full.rsquared, m_base.rsquared, np.nan
126 + summ = {"n": int(m_full.nobs), "r2": r2_full, "r2_without_sims": r2_base,
127 + "delta_r2_sims": r2_full - r2_base, "r2_within": r2_within_full,
128 + "block_F": f, "block_p": p, "block_df": q,
129 + "n_sig_5pct": int(sum(m_full.pvalues[s] < 0.05 for s in sims))}
130 + return m_full, summ
131 +
132 +
133 +def coef_rows(spec, model, sims, label_map):
134 + rows = []
135 + for v in sims + [c for c in model.params.index if c in STRUCT + LEN + LANG + ["log_lot_sqm", "lot_missing", "log_floor_sqm"]]:
136 + if v not in model.params.index:
137 + continue
138 + rows.append({"spec": spec, "variable": v, "label": label_map.get(v, v),
139 + "coefficient": model.params[v], "std_error": model.bse[v],
140 + "p_value": model.pvalues[v],
141 + "impact_pct": (np.exp(model.params[v]) - 1) * 100})
142 + return rows
143 +
144 +
145 +LABELS = {**{f"sim_{k}": v for k, v in ENGLISH_LABELS.items()},
146 + "bedrooms": "Bedrooms", "bathrooms": "Bathrooms", "half_baths": "Half-bathrooms",
147 + "parking": "Parking", "stories": "Stories", "land_size": "Lot size (raw field)",
148 + "remarks_length": "Description length", "lang_en": "English listing",
149 + "lang_mixed": "Mixed / uninformative", "log_lot_sqm": "log lot area (m2)",
150 + "lot_missing": "Lot area missing", "log_floor_sqm": "log floor area (m2)"}
151 +
152 +
153 +# --------------------------------------------------------------------------
154 +# (a) Language
155 +# --------------------------------------------------------------------------
156 +def language_analysis(df, S, tag, out_rows):
157 + msim = S.mean(axis=1)
158 + for lang in ["fr", "en", "mixed"]:
159 + mask = (df["lang"] == lang).values
160 + out_rows.append({"model": tag, "language": lang, "n": int(mask.sum()),
161 + "share": mask.mean(), "mean_similarity": msim[mask].mean(),
162 + "mean_log_price": df.loc[mask, "log_price"].mean(),
163 + "median_price": df.loc[mask, "price"].median(),
164 + "mean_length": df.loc[mask, "remarks_length"].mean()})
165 + # eta² of language on mean similarity
166 + grand = msim.mean()
167 + ss_b = sum(((df["lang"] == l).sum()) * (msim[(df["lang"] == l).values].mean() - grand) ** 2
168 + for l in ["fr", "en", "mixed"])
169 + ss_t = ((msim - grand) ** 2).sum()
170 + out_rows.append({"model": tag, "language": "eta2_language_on_mean_similarity",
171 + "n": len(df), "share": np.nan, "mean_similarity": ss_b / ss_t,
172 + "mean_log_price": np.nan, "median_price": np.nan, "mean_length": np.nan})
173 + # correlation of mean similarity with length and with English dummy
174 + out_rows.append({"model": tag, "language": "corr_mean_similarity_length",
175 + "n": len(df), "share": np.nan,
176 + "mean_similarity": np.corrcoef(msim, df["remarks_length"])[0, 1],
177 + "mean_log_price": np.nan, "median_price": np.nan, "mean_length": np.nan})
178 + out_rows.append({"model": tag, "language": "corr_mean_similarity_english",
179 + "n": len(df), "share": np.nan,
180 + "mean_similarity": np.corrcoef(msim, df["lang_en"])[0, 1],
181 + "mean_log_price": np.nan, "median_price": np.nan, "mean_length": np.nan})
182 + # first PC share of the 20 similarities
183 + pc = PCA(1).fit(S)
184 + out_rows.append({"model": tag, "language": "pc1_share_of_similarity_variance",
185 + "n": len(df), "share": np.nan,
186 + "mean_similarity": pc.explained_variance_ratio_[0],
187 + "mean_log_price": np.nan, "median_price": np.nan, "mean_length": np.nan})
188 +
189 +
190 +# --------------------------------------------------------------------------
191 +# (d) Out-of-sample
192 +# --------------------------------------------------------------------------
193 +def oos_validation(df, E, sim_sets, out_rows):
194 + y = df["log_price"].values
195 + folds = {"random_5fold": list(KFold(5, shuffle=True, random_state=config.SEED).split(df)),
196 + "spatial_fsa_5fold": list(GroupKFold(5).split(df, groups=df["fsa_id"]))}
197 + # The raw lot-size field (mixed units, max 7.2e8) makes out-of-sample
198 + # predictions explode when an extreme value falls in the test fold; all
199 + # specifications below therefore use the unit-corrected lot area, except
200 + # the first row, kept to document the breakdown.
201 + STRUCT_OOS = STRUCT[:-1] + ["log_lot_sqm", "lot_missing"]
202 + specs = {"A (raw lot-size field)": (STRUCT, None, False),
203 + "A: structural": (STRUCT_OOS, None, False),
204 + "B: + length": (STRUCT_OOS + LEN, None, False),
205 + "B-L: + length + language": (STRUCT_OOS + LEN + LANG, None, False),
206 + "D: + length + 20 similarities": (STRUCT_OOS + LEN, "base", False),
207 + "D-L: D + language": (STRUCT_OOS + LEN + LANG, "base", False),
208 + "PCA-20 + length": (STRUCT_OOS + LEN, None, True),
209 + "PCA-20 + length + language": (STRUCT_OOS + LEN + LANG, None, True),
210 + "ML-D: multilingual similarities": (STRUCT_OOS + LEN, "multi", False),
211 + "ML-D-L: multilingual similarities + language": (STRUCT_OOS + LEN + LANG, "multi", False)}
212 + for scheme, splits in folds.items():
213 + for name, (cols, simkey, use_pca) in specs.items():
214 + if simkey == "multi" and "multi" not in sim_sets:
215 + continue
216 + preds = np.full(len(df), np.nan)
217 + for tr, te in splits:
218 + Xtr = df.iloc[tr][cols].values.astype(float)
219 + Xte = df.iloc[te][cols].values.astype(float)
220 + if simkey:
221 + Xtr = np.hstack([Xtr, sim_sets[simkey][tr]])
222 + Xte = np.hstack([Xte, sim_sets[simkey][te]])
223 + if use_pca:
224 + p = PCA(20, random_state=config.SEED).fit(E[tr])
225 + Xtr = np.hstack([Xtr, p.transform(E[tr])])
226 + Xte = np.hstack([Xte, p.transform(E[te])])
227 + Xtr = np.hstack([np.ones((len(tr), 1)), Xtr])
228 + Xte = np.hstack([np.ones((len(te), 1)), Xte])
229 + beta, *_ = np.linalg.lstsq(Xtr, y[tr], rcond=None)
230 + preds[te] = Xte @ beta
231 + met = oos_metrics(pd.Series(y), pd.Series(preds))
232 + out_rows.append({"scheme": scheme, "specification": name, **met})
233 + log(f" OOS {scheme:18s} {name:48s} R2={met['r2_oos']:.4f} MdAPE={met['mdape_pct']:.1f}")
234 +
235 +
236 +# --------------------------------------------------------------------------
237 +# (e) Reference phrasing sensitivity
238 +# --------------------------------------------------------------------------
239 +def reference_variants():
240 + """Three systematic perturbations of each reference text."""
241 + variants = {"first_half": {}, "second_half": {}, "reversed": {}}
242 + for key, text in REFERENCES.items():
243 + phrases = [p.strip() for p in text.replace(".", ",").split(",") if p.strip()]
244 + h = int(np.ceil(len(phrases) / 2))
245 + variants["first_half"][key] = ", ".join(phrases[:h]) + "."
246 + variants["second_half"][key] = ", ".join(phrases[h:]) + "."
247 + variants["reversed"][key] = ", ".join(phrases[::-1]) + "."
248 + return variants
249 +
250 +
251 +def reference_sensitivity(df, E, base_model, out_rows, summ_rows):
252 + from sentence_transformers import SentenceTransformer
253 + model = SentenceTransformer(config.EMBEDDING_MODEL)
254 + base_coef = base_model.params[SIM_COLS]
255 + sig = [s for s in SIM_COLS if base_model.pvalues[s] < 0.05]
256 + for vname, refs in reference_variants().items():
257 + R = model.encode([refs[k] for k in REFERENCES], normalize_embeddings=True)
258 + S_v = E @ R.T
259 + dv = df.copy()
260 + for i, c in enumerate(SIM_COLS):
261 + dv[c] = S_v[:, i]
262 + m, s = fit_spec(dv, STRUCT + LEN, SIM_COLS)
263 + coef = m.params[SIM_COLS]
264 + for c in SIM_COLS:
265 + out_rows.append({"variant": vname, "variable": c, "label": LABELS[c],
266 + "coefficient": coef[c], "std_error": m.bse[c],
267 + "p_value": m.pvalues[c],
268 + "corr_similarity_with_baseline": np.corrcoef(S_v[:, SIM_COLS.index(c)], df[c])[0, 1]})
269 + summ_rows.append({"variant": vname, "r2": s["r2"], "delta_r2_sims": s["delta_r2_sims"],
270 + "block_F": s["block_F"],
271 + "corr_coef_with_baseline": np.corrcoef(coef, base_coef)[0, 1],
272 + "sign_agreement_sig16": np.mean([np.sign(coef[c]) == np.sign(base_coef[c]) for c in sig]),
273 + "n_sig_5pct": s["n_sig_5pct"],
274 + "mean_abs_coef_change": float(np.mean(np.abs(coef - base_coef))),
275 + "mean_corr_similarity": float(np.mean([np.corrcoef(S_v[:, i], df[c])[0, 1] for i, c in enumerate(SIM_COLS)]))})
276 + log(f" variant {vname}: R2={s['r2']:.4f} corr(coef)={summ_rows[-1]['corr_coef_with_baseline']:.3f}")
277 +
278 +
279 +# --------------------------------------------------------------------------
280 +# (f) Multilingual embeddings
281 +# --------------------------------------------------------------------------
282 +def multilingual_similarities(df):
283 + from sentence_transformers import SentenceTransformer
284 + model = SentenceTransformer(MULTI_MODEL)
285 + R = model.encode(list(REFERENCES.values()), normalize_embeddings=True)
286 + if EMB_MULTI.exists():
287 + E = np.load(EMB_MULTI)
288 + if len(E) != len(df):
289 + E = None
290 + else:
291 + E = None
292 + if E is None:
293 + log(f" encoding {len(df):,} descriptions with {MULTI_MODEL} ...")
294 + E = model.encode(df["remarks"].tolist(), batch_size=128,
295 + show_progress_bar=False, normalize_embeddings=True)
296 + np.save(EMB_MULTI, E)
297 + return E @ R.T, E
298 +
299 +
300 +def main():
301 + log("assembling dataset ...")
302 + df = build_dataset()
303 + E = np.load(config.EMBEDDINGS_NPY)
304 + S = df[SIM_COLS].values
305 + log(f"n={len(df):,}; FSA={df['fsa'].nunique()}, municipalities={df['municipality'].nunique()}; "
306 + f"lot area parsed for {(df['lot_sqm'] > 0).mean():.1%}; floor area for {(df['floor_sqm'] > 0).mean():.1%}")
307 + log(f"language shares: {df['lang'].value_counts(normalize=True).round(3).to_dict()}")
308 +
309 + config.RESULTS_DIR.mkdir(parents=True, exist_ok=True)
310 +
311 + # (a) language ----------------------------------------------------------
312 + lang_rows = []
313 + language_analysis(df, S, "all-MiniLM-L6-v2", lang_rows)
314 + per_dim = []
315 + for c in SIM_COLS:
316 + per_dim.append({"variable": c, "label": LABELS[c],
317 + "mean_fr": df.loc[df.lang == "fr", c].mean(),
318 + "mean_en": df.loc[df.lang == "en", c].mean(),
319 + "sd_all": df[c].std(ddof=0)})
320 + pd.DataFrame(per_dim).to_csv(config.RESULTS_DIR / "revision_language_by_dimension.csv", index=False)
321 +
322 + # (b) specifications ----------------------------------------------------
323 + spec_rows, summ_rows = [], []
324 +
325 + def run(spec, data, cols, sims=SIM_COLS, fe=None, cluster=None, note=""):
326 + m, s = fit_spec(data, cols, sims, fe, cluster)
327 + s.update({"spec": spec, "fe": fe or "none", "cov": cluster or "HC3", "note": note})
328 + summ_rows.append(s)
329 + spec_rows.extend(coef_rows(spec, m, sims, LABELS))
330 + log(f" {spec:34s} n={s['n']:6d} R2={s['r2']:.4f} dR2(sims)={s['delta_r2_sims']:.4f} "
331 + f"F={s['block_F']:6.2f} sig={s['n_sig_5pct']:2d}/20")
332 + return m
333 +
334 + log("extended specifications ...")
335 + mD = run("D (baseline)", df, STRUCT + LEN)
336 + run("D-L: + language", df, STRUCT + LEN + LANG)
337 + run("D-L, FSA-clustered SE", df, STRUCT + LEN + LANG, cluster="fsa_id")
338 + run("D-L + FSA FE", df, STRUCT + LEN + LANG, fe="fsa_id", cluster="fsa_id")
339 + run("D-L + municipality FE", df, STRUCT + LEN + LANG, fe="mun_id", cluster="mun_id")
340 + run("D-L + FSA FE, lot area (m2)", df, STRUCT[:-1] + ["log_lot_sqm", "lot_missing"] + LEN + LANG,
341 + fe="fsa_id", cluster="fsa_id", note="land_size replaced by unit-corrected lot area")
342 + dff = df[df["floor_sqm"] > 0].copy()
343 + run("D-L + FSA FE, floor-area subsample", dff,
344 + STRUCT[:-1] + ["log_lot_sqm", "lot_missing", "log_floor_sqm"] + LEN + LANG,
345 + fe="fsa_id", cluster="fsa_id", note="listings reporting interior floor area")
346 + dfr = df[df["lang"] == "fr"].copy()
347 + run("French-only, D + FSA FE", dfr, STRUCT + LEN, fe="fsa_id", cluster="fsa_id")
348 + dfe = df[df["lang"] == "en"].copy()
349 + run("English-only, D + FSA FE", dfe, STRUCT + LEN, fe="fsa_id", cluster="fsa_id")
350 + run("D (baseline), FSA-clustered SE", df, STRUCT + LEN, cluster="fsa_id")
351 +
352 + # (c) domain block tests under the preferred specification ---------------
353 + log("domain block tests ...")
354 + y_w = df["log_price"] - df["log_price"].groupby(df["fsa_id"].values).transform("mean")
355 + X_w = design(df, STRUCT + LEN + LANG + SIM_COLS, fe="fsa_id")
356 + m_fe = ols(y_w, X_w, "cluster", df["fsa_id"].values)
357 + m_hc = ols(df["log_price"], design(df, STRUCT + LEN + LANG + SIM_COLS), "HC3")
358 + block_rows = []
359 + for dom, vars_ in DOMAINS.items():
360 + for spec, m in [("D-L (HC3)", m_hc), ("D-L + FSA FE (clustered)", m_fe)]:
361 + f, p, q = block_f_test(m, vars_)
362 + block_rows.append({"spec": spec, "domain": dom, "n_dims": q, "F": f, "p_value": p})
363 + f, p, q = block_f_test(m_fe, SIM_COLS)
364 + block_rows.append({"spec": "D-L + FSA FE (clustered)", "domain": "All 20 dimensions", "n_dims": q, "F": f, "p_value": p})
365 + f, p, q = block_f_test(m_hc, SIM_COLS)
366 + block_rows.append({"spec": "D-L (HC3)", "domain": "All 20 dimensions", "n_dims": q, "F": f, "p_value": p})
367 + pd.DataFrame(block_rows).to_csv(config.RESULTS_DIR / "revision_block_tests.csv", index=False)
368 +
369 + # (e) reference phrasing sensitivity -------------------------------------
370 + log("reference phrasing sensitivity ...")
371 + sens_rows, sens_summ = [], []
372 + reference_sensitivity(df, E, mD, sens_rows, sens_summ)
373 + pd.DataFrame(sens_rows).to_csv(config.RESULTS_DIR / "revision_reference_sensitivity.csv", index=False)
374 + pd.DataFrame(sens_summ).to_csv(config.RESULTS_DIR / "revision_reference_sensitivity_summary.csv", index=False)
375 +
376 + # (f) multilingual model -------------------------------------------------
377 + log("multilingual embeddings ...")
378 + S_multi, E_multi = multilingual_similarities(df)
379 + language_analysis(df, S_multi, MULTI_MODEL, lang_rows)
380 + pd.DataFrame(lang_rows).to_csv(config.RESULTS_DIR / "revision_language.csv", index=False)
381 + ML_COLS = [c.replace("sim_", "ml_") for c in SIM_COLS]
382 + for i, c in enumerate(ML_COLS):
383 + df[c] = S_multi[:, i]
384 + ml_labels = {c.replace("sim_", "ml_"): v for c, v in LABELS.items() if c.startswith("sim_")}
385 + LABELS.update(ml_labels)
386 + corr_models = pd.DataFrame({"variable": SIM_COLS, "label": [LABELS[c] for c in SIM_COLS],
387 + "corr_minilm_multilingual": [np.corrcoef(df[c], df[m])[0, 1] for c, m in zip(SIM_COLS, ML_COLS)],
388 + "mean_fr_multi": [df.loc[df.lang == "fr", m].mean() for m in ML_COLS],
389 + "mean_en_multi": [df.loc[df.lang == "en", m].mean() for m in ML_COLS]})
390 + corr_models.to_csv(config.RESULTS_DIR / "revision_multilingual.csv", index=False)
391 + run("ML-D: multilingual similarities", df, STRUCT + LEN, sims=ML_COLS)
392 + run("ML-D-L: + language", df, STRUCT + LEN + LANG, sims=ML_COLS)
393 + run("ML-D-L + FSA FE", df, STRUCT + LEN + LANG, sims=ML_COLS, fe="fsa_id", cluster="fsa_id")
394 + run("ML-D-L + FSA FE, lot area (m2)", df, STRUCT[:-1] + ["log_lot_sqm", "lot_missing"] + LEN + LANG,
395 + sims=ML_COLS, fe="fsa_id", cluster="fsa_id")
396 +
397 + pd.DataFrame(spec_rows).to_csv(config.RESULTS_DIR / "revision_specifications.csv", index=False)
398 + pd.DataFrame(summ_rows).to_csv(config.RESULTS_DIR / "revision_spec_summary.csv", index=False)
399 +
400 + # (d) out-of-sample -------------------------------------------------------
401 + log("out-of-sample validation ...")
402 + oos_rows = []
403 + oos_validation(df, E, {"base": S, "multi": S_multi}, oos_rows)
404 + pd.DataFrame(oos_rows).to_csv(config.RESULTS_DIR / "revision_oos.csv", index=False)
405 +
406 + df[["id", "lang", "fsa", "municipality", "lot_sqm", "floor_sqm"]].to_csv(
407 + config.DATA_PROCESSED / "revision_fields.csv", index=False)
408 + log("done.")
409 +
410 +
411 +if __name__ == "__main__":
412 + main()
added scripts/08_revision_tables.py +387 −0
@@ -0,0 +1,387 @@
1 +#!/usr/bin/env python3
2 +# Author: Simon-Pierre Boucher — contact@spboucher.ai
3 +#
4 +"""Step 8 — LaTeX tables and figure for the revision extensions (step 7).
5 +
6 +Inputs : results/revision_*.csv
7 +Outputs: paper/tables/tab_language.tex
8 + paper/tables/tab_spec_summary.tex
9 + paper/tables/tab_extended_specs.tex
10 + paper/tables/tab_block_tests.tex
11 + paper/tables/tab_oos.tex
12 + paper/tables/tab_reference_sensitivity.tex
13 + figures/fig12_specification_stability.{pdf,png}
14 +"""
15 +
16 +import sys
17 +from pathlib import Path
18 +
19 +import matplotlib
20 +import numpy as np
21 +import pandas as pd
22 +
23 +matplotlib.use("Agg")
24 +import matplotlib.pyplot as plt
25 +
26 +sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
27 +
28 +from src import config
29 +from src.references import ENGLISH_LABELS, REFERENCES
30 +
31 +TABLES_DIR = config.ROOT / "paper" / "tables"
32 +HEADER = ("% Author: Simon-Pierre Boucher — contact@spboucher.ai\n"
33 + "% Generated by scripts/08_revision_tables.py — do not edit by hand.\n")
34 +R = config.RESULTS_DIR
35 +
36 +plt.rcParams.update({
37 + "font.family": "serif", "font.serif": ["Times New Roman", "Times", "DejaVu Serif"],
38 + "font.size": 10, "axes.labelsize": 11, "xtick.labelsize": 9, "ytick.labelsize": 9,
39 + "legend.fontsize": 8.5, "figure.dpi": 300, "savefig.dpi": 300, "savefig.bbox": "tight",
40 + "savefig.pad_inches": 0.08, "axes.spines.top": False, "axes.spines.right": False,
41 +})
42 +
43 +
44 +def tex(label):
45 + return label.replace("&", "\\&")
46 +
47 +
48 +def num(x, dec=3):
49 + s = f"{x:,.{dec}f}".replace(",", "{,}")
50 + return s.replace("-", "$-$")
51 +
52 +
53 +def stars(p):
54 + return "***" if p < 0.001 else "**" if p < 0.01 else "*" if p < 0.05 else ""
55 +
56 +
57 +def write(name, content):
58 + (TABLES_DIR / name).write_text(HEADER + content)
59 + print(f" -> {TABLES_DIR / name}")
60 +
61 +
62 +# --------------------------------------------------------------------------
63 +def tab_language():
64 + d = pd.read_csv(R / "revision_language.csv")
65 + base = d[d.model == "all-MiniLM-L6-v2"].set_index("language")
66 + multi = d[d.model == "paraphrase-multilingual-MiniLM-L12-v2"].set_index("language")
67 + rows = []
68 + for lang, name in [("fr", "French"), ("en", "English"), ("mixed", "Mixed / uninformative")]:
69 + b, m = base.loc[lang], multi.loc[lang]
70 + n_tex = f"{int(b['n']):,}".replace(",", "{,}")
71 + price_tex = f"{b['median_price']:,.0f}".replace(",", "{,}")
72 + rows.append(f"{name} & {n_tex} & {b['share'] * 100:.1f} & {b['mean_length']:.0f} & "
73 + f"\\${price_tex} & {b['mean_log_price']:.3f} & "
74 + f"{b['mean_similarity']:.3f} & {m['mean_similarity']:.3f} \\\\")
75 + body = "\n".join(rows)
76 + e_b = base.loc["eta2_language_on_mean_similarity", "mean_similarity"]
77 + e_m = multi.loc["eta2_language_on_mean_similarity", "mean_similarity"]
78 + c_b = base.loc["corr_mean_similarity_english", "mean_similarity"]
79 + c_m = multi.loc["corr_mean_similarity_english", "mean_similarity"]
80 + l_b = base.loc["corr_mean_similarity_length", "mean_similarity"]
81 + l_m = multi.loc["corr_mean_similarity_length", "mean_similarity"]
82 + p_b = base.loc["pc1_share_of_similarity_variance", "mean_similarity"]
83 + p_m = multi.loc["pc1_share_of_similarity_variance", "mean_similarity"]
84 + content = rf"""\begin{{table}}[!htbp]
85 +\centering
86 +\caption{{Language of the listing descriptions and mean cosine similarity to the 20 French references.}}
87 +\label{{tab:language}}
88 +\small
89 +\begin{{adjustbox}}{{max width=\textwidth}}
90 +\begin{{tabular}}{{lR{{1.2cm}}R{{1.1cm}}R{{1.3cm}}R{{1.6cm}}R{{1.3cm}}R{{1.5cm}}R{{1.7cm}}}}
91 +\toprule
92 +& & & & & & \multicolumn{{2}}{{c}}{{\textbf{{Mean similarity}}}} \\
93 +\cmidrule(lr){{7-8}}
94 +\textbf{{Language}} & $\boldsymbol{{n}}$ & \textbf{{\%}} & \textbf{{Length}} & \textbf{{Median price}} & $\boldsymbol{{\overline{{\ln P}}}}$ & \textbf{{MiniLM-L6}} & \textbf{{Multilingual}} \\
95 +\midrule
96 +{body}
97 +\midrule
98 +\multicolumn{{6}}{{l}}{{Share of the variance of the mean similarity explained by language ($\eta^2$)}} & {e_b:.3f} & {e_m:.3f} \\
99 +\multicolumn{{6}}{{l}}{{Correlation of the mean similarity with the English indicator}} & {num(c_b)} & {num(c_m)} \\
100 +\multicolumn{{6}}{{l}}{{Correlation of the mean similarity with description length}} & {l_b:.3f} & {l_m:.3f} \\
101 +\multicolumn{{6}}{{l}}{{Share of the variance of the 20 similarities on their first principal component}} & {p_b:.3f} & {p_m:.3f} \\
102 +\bottomrule
103 +\end{{tabular}}
104 +\end{{adjustbox}}
105 +\begin{{minipage}}{{\textwidth}}
106 +\vspace{{4pt}}\footnotesize
107 +\textit{{Notes:}} Language is classified from French and English stop-word counts (ratio rule of 1.5; ``mixed'' listings are mostly short boilerplate such as ``See listing broker(s)''). Length is the mean number of characters. MiniLM-L6 is the paper's baseline encoder (all-MiniLM-L6-v2); Multilingual is paraphrase-multilingual-MiniLM-L12-v2 \citep{{reimers2020multilingual}}. The mean similarity is the average of the 20 cosine similarities of a listing.
108 +\end{{minipage}}
109 +\end{{table}}
110 +"""
111 + write("tab_language.tex", content)
112 +
113 +
114 +# --------------------------------------------------------------------------
115 +SPEC_ORDER = [
116 + ("D (baseline)", "D: baseline (Table~\\ref{tab:model_comparison})"),
117 + ("D (baseline), FSA-clustered SE", "D, standard errors clustered by FSA"),
118 + ("D-L: + language", "D-L: D + language indicators"),
119 + ("D-L, FSA-clustered SE", "D-L, standard errors clustered by FSA"),
120 + ("D-L + FSA FE", "D-L + FSA fixed effects"),
121 + ("D-L + municipality FE", "D-L + municipality fixed effects"),
122 + ("D-L + FSA FE, lot area (m2)", "D-L + FSA FE, unit-corrected lot area"),
123 + ("D-L + FSA FE, floor-area subsample", "D-L + FSA FE + floor area (subsample)"),
124 + ("French-only, D + FSA FE", "French listings only, D + FSA FE"),
125 + ("English-only, D + FSA FE", "English listings only, D + FSA FE"),
126 + ("ML-D: multilingual similarities", "ML-D: multilingual encoder, as D"),
127 + ("ML-D-L: + language", "ML-D-L: multilingual encoder + language"),
128 + ("ML-D-L + FSA FE", "ML-D-L + FSA fixed effects"),
129 + ("ML-D-L + FSA FE, lot area (m2)", "ML-D-L + FSA FE, unit-corrected lot area"),
130 +]
131 +
132 +
133 +def tab_spec_summary():
134 + s = pd.read_csv(R / "revision_spec_summary.csv").set_index("spec")
135 + rows = []
136 + for key, label in SPEC_ORDER:
137 + r = s.loc[key]
138 + cov = "cluster" if r["cov"] != "HC3" else "HC3"
139 + r2w = "---" if pd.isna(r["r2_within"]) else f"{r['r2_within']:.3f}"
140 + n_tex = f"{int(r['n']):,}".replace(",", "{,}")
141 + rows.append(f"{label} & {n_tex} & {r['r2']:.3f} & {r2w} & {r['delta_r2_sims']:.3f} & "
142 + f"{r['block_F']:.1f} & {int(r['n_sig_5pct'])}/20 & {cov} \\\\")
143 + body = "\n".join(rows)
144 + content = rf"""\begin{{table}}[!htbp]
145 +\centering
146 +\caption{{Incremental explanatory power of the 20 semantic similarities across extended specifications.}}
147 +\label{{tab:spec_summary}}
148 +\small
149 +\begin{{adjustbox}}{{max width=\textwidth}}
150 +\begin{{tabular}}{{lR{{1.2cm}}R{{1.0cm}}R{{1.2cm}}R{{1.4cm}}R{{1.3cm}}R{{1.1cm}}l}}
151 +\toprule
152 +\textbf{{Specification}} & $\boldsymbol{{n}}$ & $\boldsymbol{{R^2}}$ & \textbf{{Within}} $\boldsymbol{{R^2}}$ & $\boldsymbol{{\Delta R^2}}$ \textbf{{(sem.)}} & \textbf{{Block}} $\boldsymbol{{F}}$ & \textbf{{Sig.}} & \textbf{{Cov.}} \\
153 +\midrule
154 +{body}
155 +\bottomrule
156 +\end{{tabular}}
157 +\end{{adjustbox}}
158 +\begin{{minipage}}{{\textwidth}}
159 +\vspace{{4pt}}\footnotesize
160 +\textit{{Notes:}} All specifications include the six structural variables and description length; ``D-L'' adds indicators for English and mixed-language listings; ``ML'' replaces the all-MiniLM-L6-v2 similarities by those computed with paraphrase-multilingual-MiniLM-L12-v2. Fixed effects are absorbed by within-group demeaning (415 forward sortation areas, FSA, or 1{{,}}061 municipalities); $R^2$ is then measured against the total variance of log price and ``Within $R^2$'' against the within-group variance. $\Delta R^2$ (sem.) is the gain in $R^2$ from adding the 20 similarities to the otherwise identical specification. Block $F$ is the robust Wald test (HC3 or clustered by FSA/municipality) that the 20 semantic coefficients are jointly zero; all $p < 0.001$. ``Sig.'' counts similarities individually significant at the 5\% level. The unit-corrected lot area converts the raw field to square metres (m$^2$, sq.\ ft., acres, hectares) and enters in logs with a missing-value indicator; the floor-area subsample is restricted to the 6{{,}}228 listings reporting interior floor area.
161 +\end{{minipage}}
162 +\end{{table}}
163 +"""
164 + write("tab_spec_summary.tex", content)
165 +
166 +
167 +# --------------------------------------------------------------------------
168 +EXT_COLS = [("D (baseline)", "D"), ("D-L: + language", "D-L"), ("D-L + FSA FE", "D-L + FSA FE"),
169 + ("French-only, D + FSA FE", "French only"), ("English-only, D + FSA FE", "English only"),
170 + ("ML-D-L + FSA FE", "ML-D-L + FSA FE")]
171 +DIM_ORDER = [ENGLISH_LABELS[k] for k in REFERENCES]
172 +
173 +
174 +def tab_extended_specs():
175 + sp = pd.read_csv(R / "revision_specifications.csv")
176 + sims = sp[sp.variable.str.startswith(("sim_", "ml_"))]
177 + imp = sims.pivot_table(index="label", columns="spec", values="impact_pct")
178 + pv = sims.pivot_table(index="label", columns="spec", values="p_value")
179 + summ = pd.read_csv(R / "revision_spec_summary.csv").set_index("spec")
180 + rows = []
181 + for lab in DIM_ORDER:
182 + cells = []
183 + for key, _ in EXT_COLS:
184 + v, p = imp.loc[lab, key], pv.loc[lab, key]
185 + cells.append(f"{num(v, 1)}{stars(p)}")
186 + rows.append(f"{tex(lab)} & " + " & ".join(cells) + " \\\\")
187 + body = "\n".join(rows)
188 + foot_n = " & ".join(f"{int(summ.loc[k, 'n']):,}".replace(",", "{,}") for k, _ in EXT_COLS)
189 + foot_r2 = " & ".join(f"{summ.loc[k, 'r2']:.3f}" for k, _ in EXT_COLS)
190 + foot_d = " & ".join(f"{summ.loc[k, 'delta_r2_sims']:.3f}" for k, _ in EXT_COLS)
191 + head = " & ".join(f"\\textbf{{{lbl}}}" for _, lbl in EXT_COLS)
192 + content = rf"""\begin{{table}}[!htbp]
193 +\centering
194 +\caption{{Semantic implicit price gradients (\% per standard deviation) across specifications and encoders.}}
195 +\label{{tab:extended_specs}}
196 +\small
197 +\begin{{adjustbox}}{{max width=\textwidth}}
198 +\begin{{tabular}}{{lR{{1.5cm}}R{{1.5cm}}R{{1.8cm}}R{{1.6cm}}R{{1.6cm}}R{{1.9cm}}}}
199 +\toprule
200 +\textbf{{Dimension}} & {head} \\
201 +\midrule
202 +{body}
203 +\midrule
204 +$n$ & {foot_n} \\
205 +$R^2$ & {foot_r2} \\
206 +$\Delta R^2$ (semantic block) & {foot_d} \\
207 +\bottomrule
208 +\end{{tabular}}
209 +\end{{adjustbox}}
210 +\begin{{minipage}}{{\textwidth}}
211 +\vspace{{4pt}}\footnotesize
212 +\textit{{Notes:}} Entries are $100\,(e^{{\hat\gamma_j}} - 1)$ for a one-standard-deviation increase in similarity $j$ (standard deviation computed on the estimation sample). D is the baseline full model (HC3 standard errors); D-L adds English and mixed-language indicators (HC3); ``+ FSA FE'' absorbs 415 forward-sortation-area fixed effects with standard errors clustered by FSA; the French-only and English-only columns re-estimate D with FSA fixed effects on each language subsample; ML-D-L replaces the encoder by paraphrase-multilingual-MiniLM-L12-v2. \signote
213 +\end{{minipage}}
214 +\end{{table}}
215 +"""
216 + write("tab_extended_specs.tex", content)
217 +
218 +
219 +# --------------------------------------------------------------------------
220 +def tab_block_tests():
221 + b = pd.read_csv(R / "revision_block_tests.csv")
222 + order = ["Quality & Standing", "Condition", "Physical Attributes", "Location & Setting",
223 + "Style & Character", "Market Signals", "All 20 dimensions"]
224 + hc = b[b.spec == "D-L (HC3)"].set_index("domain")
225 + fe = b[b.spec == "D-L + FSA FE (clustered)"].set_index("domain")
226 + rows = []
227 + for dom in order:
228 + rows.append(f"{tex(dom)} & {int(hc.loc[dom, 'n_dims'])} & {hc.loc[dom, 'F']:.2f} & "
229 + f"{'$< 0.001$' if hc.loc[dom, 'p_value'] < 0.001 else f'{hc.loc[dom, 'p_value']:.3f}'} & "
230 + f"{fe.loc[dom, 'F']:.2f} & "
231 + f"{'$< 0.001$' if fe.loc[dom, 'p_value'] < 0.001 else f'{fe.loc[dom, 'p_value']:.3f}'} \\\\")
232 + body = "\n".join(rows)
233 + content = rf"""\begin{{table}}[!htbp]
234 +\centering
235 +\caption{{Domain-level block tests of the semantic dimensions.}}
236 +\label{{tab:block_tests}}
237 +\small
238 +\begin{{tabular}}{{lR{{1.0cm}}R{{1.4cm}}R{{1.6cm}}R{{1.4cm}}R{{1.6cm}}}}
239 +\toprule
240 +& & \multicolumn{{2}}{{c}}{{\textbf{{D-L (HC3)}}}} & \multicolumn{{2}}{{c}}{{\textbf{{D-L + FSA FE (clustered)}}}} \\
241 +\cmidrule(lr){{3-4}} \cmidrule(lr){{5-6}}
242 +\textbf{{Domain}} & $\boldsymbol{{q}}$ & $\boldsymbol{{F}}$ & $\boldsymbol{{p}}$ & $\boldsymbol{{F}}$ & $\boldsymbol{{p}}$ \\
243 +\midrule
244 +{body}
245 +\bottomrule
246 +\end{{tabular}}
247 +\begin{{minipage}}{{\textwidth}}
248 +\vspace{{4pt}}\footnotesize
249 +\textit{{Notes:}} Wald tests that the $q$ coefficients of the dimensions belonging to each domain of Table~\ref{{tab:references}} are jointly zero, under the D-L specification with HC3 standard errors and under D-L with 415 FSA fixed effects and standard errors clustered by FSA.
250 +\end{{minipage}}
251 +\end{{table}}
252 +"""
253 + write("tab_block_tests.tex", content)
254 +
255 +
256 +# --------------------------------------------------------------------------
257 +def tab_oos():
258 + o = pd.read_csv(R / "revision_oos.csv")
259 + rnd = o[o.scheme == "random_5fold"].set_index("specification")
260 + spa = o[o.scheme == "spatial_fsa_5fold"].set_index("specification")
261 + order = ["A (raw lot-size field)", "A: structural", "B: + length", "B-L: + length + language",
262 + "D: + length + 20 similarities", "D-L: D + language", "PCA-20 + length",
263 + "PCA-20 + length + language", "ML-D: multilingual similarities",
264 + "ML-D-L: multilingual similarities + language"]
265 + names = {"A (raw lot-size field)": "A, raw lot-size field (for reference)",
266 + "A: structural": "A: structural", "B: + length": "B: A + description length",
267 + "B-L: + length + language": "B-L: B + language indicators",
268 + "D: + length + 20 similarities": "D: B + 20 similarities",
269 + "D-L: D + language": "D-L: D + language indicators",
270 + "PCA-20 + length": "B + 20 principal components of the embeddings",
271 + "PCA-20 + length + language": "B-L + 20 principal components",
272 + "ML-D: multilingual similarities": "ML-D: B + 20 multilingual similarities",
273 + "ML-D-L: multilingual similarities + language": "ML-D-L: B-L + 20 multilingual similarities"}
274 + rows = []
275 + for k in order:
276 + r, s = rnd.loc[k], spa.loc[k]
277 + rows.append(f"{names[k]} & {num(r['r2_oos'])} & {r['rmse_log']:.3f} & {r['mdape_pct']:.1f} & "
278 + f"{num(s['r2_oos'])} & {s['rmse_log']:.3f} & {s['mdape_pct']:.1f} \\\\")
279 + body = "\n".join(rows)
280 + content = rf"""\begin{{table}}[!htbp]
281 +\centering
282 +\caption{{Out-of-sample performance: random and spatial five-fold cross-validation.}}
283 +\label{{tab:oos}}
284 +\small
285 +\begin{{adjustbox}}{{max width=\textwidth}}
286 +\begin{{tabular}}{{lR{{1.3cm}}R{{1.3cm}}R{{1.4cm}}R{{1.3cm}}R{{1.3cm}}R{{1.4cm}}}}
287 +\toprule
288 +& \multicolumn{{3}}{{c}}{{\textbf{{Random folds}}}} & \multicolumn{{3}}{{c}}{{\textbf{{FSA-grouped folds}}}} \\
289 +\cmidrule(lr){{2-4}} \cmidrule(lr){{5-7}}
290 +\textbf{{Specification}} & $\boldsymbol{{R^2_{{\text{{oos}}}}}}$ & \textbf{{RMSE}} & \textbf{{MdAPE}} & $\boldsymbol{{R^2_{{\text{{oos}}}}}}$ & \textbf{{RMSE}} & \textbf{{MdAPE}} \\
291 +\midrule
292 +{body}
293 +\bottomrule
294 +\end{{tabular}}
295 +\end{{adjustbox}}
296 +\begin{{minipage}}{{\textwidth}}
297 +\vspace{{4pt}}\footnotesize
298 +\textit{{Notes:}} Five-fold cross-validation on the $n = 17{{,}}087$ listings; predictions for each fold are made from a model estimated on the other four folds, and the metrics are computed on the pooled out-of-fold predictions (Equations~\ref{{eq:r2oos}}--\ref{{eq:mdape}}). Random folds are drawn with seed 42; FSA-grouped folds hold out entire forward sortation areas, so that no held-out listing shares an FSA with the training data. RMSE is in log points; MdAPE is the median absolute percentage error of the price level. Except for the first row, the lot-size variable is the unit-corrected log lot area with a missing indicator; the raw field (mixed units, maximum $7.2 \times 10^8$) yields exploding out-of-fold predictions and a negative $R^2$. Principal components are estimated on the training folds only.
299 +\end{{minipage}}
300 +\end{{table}}
301 +"""
302 + write("tab_oos.tex", content)
303 +
304 +
305 +# --------------------------------------------------------------------------
306 +def tab_reference_sensitivity():
307 + s = pd.read_csv(R / "revision_reference_sensitivity_summary.csv").set_index("variant")
308 + names = {"first_half": "First half of each reference's phrases",
309 + "second_half": "Second half of each reference's phrases",
310 + "reversed": "Phrases in reverse order"}
311 + rows = []
312 + for k in ["first_half", "second_half", "reversed"]:
313 + r = s.loc[k]
314 + rows.append(f"{names[k]} & {r['mean_corr_similarity']:.3f} & {r['r2']:.4f} & {r['delta_r2_sims']:.3f} & "
315 + f"{r['block_F']:.1f} & {r['corr_coef_with_baseline']:.3f} & "
316 + f"{r['sign_agreement_sig16'] * 100:.0f}\\% & {int(r['n_sig_5pct'])}/20 \\\\")
317 + body = "\n".join(rows)
318 + content = rf"""\begin{{table}}[!htbp]
319 +\centering
320 +\caption{{Sensitivity of Model~D to the phrasing of the reference descriptions.}}
321 +\label{{tab:reference_sensitivity}}
322 +\small
323 +\begin{{adjustbox}}{{max width=\textwidth}}
324 +\begin{{tabular}}{{lR{{1.6cm}}R{{1.1cm}}R{{1.4cm}}R{{1.3cm}}R{{1.7cm}}R{{1.6cm}}R{{1.1cm}}}}
325 +\toprule
326 +\textbf{{Reference variant}} & \textbf{{Corr.\ of similarities}} & $\boldsymbol{{R^2}}$ & $\boldsymbol{{\Delta R^2}}$ \textbf{{(sem.)}} & \textbf{{Block}} $\boldsymbol{{F}}$ & \textbf{{Corr.\ of coefficients}} & \textbf{{Sign agreement}} & \textbf{{Sig.}} \\
327 +\midrule
328 +Baseline (full references) & 1.000 & 0.5122 & 0.048 & 54.3 & 1.000 & 100\% & 16/20 \\
329 +{body}
330 +\bottomrule
331 +\end{{tabular}}
332 +\end{{adjustbox}}
333 +\begin{{minipage}}{{\textwidth}}
334 +\vspace{{4pt}}\footnotesize
335 +\textit{{Notes:}} Each reference text in Appendix Table~\ref{{tab:reference_texts}} is split into its comma-separated phrases and re-encoded with all-MiniLM-L6-v2 after the indicated perturbation; Model~D is then re-estimated with the 20 perturbed similarities. ``Corr.\ of similarities'' is the mean, over the 20 dimensions, of the correlation between perturbed and baseline similarity scores; ``Corr.\ of coefficients'' is the correlation between the 20 perturbed and baseline semantic coefficients; ``Sign agreement'' is the share of the 16 dimensions significant in the baseline whose coefficient keeps its sign; ``Sig.'' counts dimensions significant at 5\%. Block $F$ is the HC3 Wald test of the 20 semantic coefficients.
336 +\end{{minipage}}
337 +\end{{table}}
338 +"""
339 + write("tab_reference_sensitivity.tex", content)
340 +
341 +
342 +# --------------------------------------------------------------------------
343 +def fig12_specification_stability():
344 + sp = pd.read_csv(R / "revision_specifications.csv")
345 + sims = sp[sp.variable.str.startswith(("sim_", "ml_"))]
346 + imp = sims.pivot_table(index="label", columns="spec", values="impact_pct")
347 + pv = sims.pivot_table(index="label", columns="spec", values="p_value")
348 + order = imp["D (baseline)"].sort_values().index.tolist()
349 + specs = [("D (baseline)", "D: baseline (MiniLM-L6)", "#1565C0", "o"),
350 + ("D-L + FSA FE", "D-L + FSA FE (MiniLM-L6)", "#2E7D32", "s"),
351 + ("ML-D-L + FSA FE", "ML-D-L + FSA FE (multilingual)", "#C62828", "D")]
352 + fig, ax = plt.subplots(figsize=(6.4, 6.0))
353 + yy = np.arange(len(order))
354 + for j, (key, lbl, col, mk) in enumerate(specs):
355 + off = (j - 1) * 0.24
356 + vals = imp.loc[order, key].values
357 + sig = pv.loc[order, key].values < 0.05
358 + ax.scatter(vals[sig], yy[sig] + off, s=26, color=col, marker=mk, label=lbl, zorder=3)
359 + ax.scatter(vals[~sig], yy[~sig] + off, s=26, facecolors="none", edgecolors=col,
360 + marker=mk, zorder=3)
361 + for y in yy[:-1]:
362 + ax.axhline(y + 0.5, color="#DDDDDD", lw=0.5, zorder=1)
363 + ax.axvline(0, color="black", lw=0.8)
364 + ax.set_yticks(yy)
365 + ax.set_yticklabels(order, fontsize=8.5)
366 + ax.set_xlabel("Price impact of a one-standard-deviation increase in similarity (%)")
367 + ax.legend(loc="lower right", frameon=False)
368 + ax.set_ylim(-0.7, len(order) - 0.3)
369 + plt.tight_layout()
370 + for ext in ("pdf", "png"):
371 + plt.savefig(config.FIGURES_DIR / f"fig12_specification_stability.{ext}")
372 + plt.close()
373 + print(" -> figures/fig12_specification_stability")
374 +
375 +
376 +def main():
377 + tab_language()
378 + tab_spec_summary()
379 + tab_extended_specs()
380 + tab_block_tests()
381 + tab_oos()
382 + tab_reference_sensitivity()
383 + fig12_specification_stability()
384 +
385 +
386 +if __name__ == "__main__":
387 + main()
added src/extensions.py +127 −0
@@ -0,0 +1,127 @@
1 +# Author: Simon-Pierre Boucher — contact@spboucher.ai
2 +#
3 +"""Helpers for the 2026-10-17 revision extensions (scripts/07_revision_extensions.py).
4 +
5 +Language detection, unit-corrected lot size, floor area, forward sortation
6 +areas (FSA), fixed-effects / clustered OLS and out-of-sample metrics.
7 +"""
8 +
9 +import json
10 +import re
11 +import sqlite3
12 +
13 +import numpy as np
14 +import pandas as pd
15 +import statsmodels.api as sm
16 +
17 +FR_STOPWORDS = set(
18 + "le la les des une un et est avec dans pour sur au aux du de à cette ce cet "
19 + "ses sa son vous nous très plus rez chaussée cuisine chambre salle bain terrain "
20 + "étage sous-sol près".split()
21 +)
22 +EN_STOPWORDS = set(
23 + "the and with for this that is are has have from your you in on at of to a an "
24 + "kitchen bedroom bathroom basement floor lot home house living room large new".split()
25 +)
26 +
27 +SQM_PER_UNIT = {"m2": 1.0, "sqft": 0.09290304, "ac": 4046.8564, "hec": 10000.0}
28 +
29 +
30 +def detect_language(text):
31 + """Return 'fr', 'en' or 'mixed' from stop-word counts (ratio rule 1.5)."""
32 + words = re.findall(r"[a-zàâçéèêëîïôûùüÿœ'-]+", text.lower())
33 + n_fr = sum(w in FR_STOPWORDS for w in words)
34 + n_en = sum(w in EN_STOPWORDS for w in words)
35 + if n_fr > 1.5 * n_en:
36 + return "fr"
37 + if n_en > 1.5 * n_fr:
38 + return "en"
39 + return "mixed"
40 +
41 +
42 +def _area_sqm(size_str):
43 + """Convert a Realtor.ca size string ('98900 m2', '5000 sqft', '2 ac') to m²."""
44 + if not size_str or not isinstance(size_str, str):
45 + return np.nan
46 + m = re.match(r"^\s*([\d.,]+)\s*([a-zA-Z0-9]*)", size_str)
47 + if not m:
48 + return np.nan
49 + try:
50 + value = float(m.group(1).replace(",", ""))
51 + except ValueError:
52 + return np.nan
53 + unit = m.group(2).lower()
54 + if unit not in SQM_PER_UNIT or value <= 0:
55 + return np.nan
56 + return value * SQM_PER_UNIT[unit]
57 +
58 +
59 +def load_revision_fields(db_path, ids):
60 + """Postal code / FSA, municipality, lot area (m²), floor area (m²) for the sample."""
61 + conn = sqlite3.connect(db_path)
62 + rows = conn.execute(
63 + "SELECT id, data FROM properties WHERE category = 'house'"
64 + ).fetchall()
65 + conn.close()
66 + wanted = set(ids)
67 + recs = {}
68 + for pid, data_json in rows:
69 + if pid not in wanted:
70 + continue
71 + try:
72 + d = json.loads(data_json)
73 + except (json.JSONDecodeError, TypeError):
74 + continue
75 + postal = d.get("PostalCode") or ""
76 + addr = d.get("Property", {}).get("Address", {}).get("AddressText", "")
77 + city = addr.split("|")[-1].split(",")[0].strip() if "|" in addr else ""
78 + recs[pid] = {
79 + "postal_code": postal,
80 + "fsa": postal[:3].upper(),
81 + "municipality": city,
82 + "lot_sqm": _area_sqm(d.get("Land", {}).get("SizeTotal", "")),
83 + "floor_sqm": _area_sqm(d.get("Building", {}).get("SizeInterior", "")),
84 + "scraped_at": d.get("scrapedAt"),
85 + }
86 + out = pd.DataFrame([recs.get(i, {}) for i in ids])
87 + out.index = pd.Index(ids)
88 + return out
89 +
90 +
91 +def ols(y, X, cov_type="HC3", groups=None):
92 + """OLS with HC3 or cluster-robust covariance."""
93 + if cov_type == "cluster":
94 + return sm.OLS(y, X).fit(cov_type="cluster", cov_kwds={"groups": groups})
95 + return sm.OLS(y, X).fit(cov_type=cov_type)
96 +
97 +
98 +def zscore(df, columns):
99 + X = (df[columns] - df[columns].mean()) / df[columns].std(ddof=0)
100 + return X
101 +
102 +
103 +def within(df, columns, group):
104 + """Demean columns within groups (fixed-effects transformation)."""
105 + return df[columns] - df.groupby(group)[columns].transform("mean")
106 +
107 +
108 +def block_f_test(model, variables):
109 + """Wald F-test that all coefficients in `variables` are zero (robust cov)."""
110 + names = list(model.params.index)
111 + R = np.zeros((len(variables), len(names)))
112 + for i, v in enumerate(variables):
113 + R[i, names.index(v)] = 1.0
114 + res = model.f_test(R)
115 + return float(np.squeeze(res.fvalue)), float(res.pvalue), int(res.df_num)
116 +
117 +
118 +def oos_metrics(y_true_log, y_pred_log):
119 + """Out-of-sample R² (log scale), RMSE (log), MdAPE (level)."""
120 + resid = y_true_log - y_pred_log
121 + ss_res = float(np.sum(resid ** 2))
122 + ss_tot = float(np.sum((y_true_log - y_true_log.mean()) ** 2))
123 + price = np.exp(y_true_log)
124 + mdape = float(np.median(np.abs(np.exp(y_pred_log) - price) / price)) * 100
125 + return {"r2_oos": 1 - ss_res / ss_tot,
126 + "rmse_log": float(np.sqrt(np.mean(resid ** 2))),
127 + "mdape_pct": mdape}
128
Menu

Theme