UQO Working Paper No. 3 — Hedonic housing price models for the US: parametric, quantile, and machine-learning approaches.
-
Wed, Nov 4, 2026 5
-
Stage F B1/B2 + N1..N14
…
Verification sign-off (Agent 11) corrections, numbers through macros/generators only. B1 SHAP rho macros renamed to the defined keys (d_shap_rho_xgb_lgb/_xgb_rf/_lgb_rf) + tests/test_inline_numbers.py (every \inum key used is defined, every numeric macro renders a number, committed inline_numbers.tex not stale). B2 make_inline_numbers.py: float() before round(), d() coerces numpy scalars, render guard rejects object representations (no np.float64 in the PDF). N1 one rounding rule: inline_numbers.json stores raw + digits, formatted macros/derived/README round once from raw (prose = tables: 0.637, 17.6, 0.767, 0.622, 0.523, 0.706, 0.8). N2 feasible correction on its own seed-42 baseline (0.635; share 82 -> 83 %), stated in 5.7.1. N3 trees-curve column "LOSO (mean of 51 state R2)" + legend/caption. N4 r2_ols_random_test_v12 refreshed via 10_stored_checks.py. N5 README written entirely by 08::t_readme. N6 title-page commit convention. N7 "monotonically"/"nothing out of state"/"under every rule" softened to the numbers. N8 SHAP beeswarm tercile markers. N9 cluster_se note -> tab:ols_results, 3.743 -> 3.7, \inumsci for the condition number. N10 eq:moran/iqr_test/mdape/within referenced. N11 abstract 149 words. N12 style flags removed, p. 66 widow gone. N13 run_meta.json restored from the M4BP48 log (5.67 h) with the re-run kept under previous_runs; 05 script no longer overwrites. N14 tab:contributions. Build: 89 pages, 0 errors, 0 undefined, 0 overfull > 5 pt, 0 float too large; 18 tests pass. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03 Stage E (exhibits): every table as a self-contained siunitx/threeparttable float (43 fragments, 36 inserted), 13 vector figures in one Okabe-Ito design system with float wrappers, generator rewritten (08 + 08b + src/wp3/exhibits.py), README tables generated from inline numbers, wrapper blocks replaced by single \input lines (EDIT-13, DATA-04, ADVE-09/11/13, ECON-11/12, THEO-07, EDIT-10 corrigenda table)
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-EDIT-02/ADVE-21: RF SHAP uses the Saabas approximation (exact TreeSHAP on 500 unpruned trees is intractable); flushed logging
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-ADVE-16: 05_geo_designs keeps trees_curves.csv on a cached --resume run
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-EDIT-03/THEO-04: ablation full-model specs exclude the auxiliary state/lat-lon columns (6_* rows re-run); RF skipped when cached
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
-
Tue, Nov 3, 2026 7
-
R03-ADVE-06: QR legacy check records that the stored pseudo-R2 equals 1 - R1(tau)
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-ADVE-08/ECON-02/THEO-06/ECON-04/THEO-05/EDIT-07/ADVE-14/ECON-07/EDIT-09/DATA-03/DATA-04: wild bootstrap, state regressions with SEs, full-sample Moran, Conley HAC; table generator, run_all.sh, test_tables
…
- wild cluster bootstrap by state (B = 9,999): 23 of 63 slopes at 5% (Webb and Rademacher), 9 after Holm - state-by-state OLS with ZIP3-cluster SEs: reversals with |t| > 2 are 0-12 per variable (v1.2: 19-23 by sign only); homogeneity rejected for every variable; EB shrinkage bands; fully interacted +6.1 pp over state FE (0.752 vs 0.690) - Moran's I on the full random test set (157,769 listings, k = 8): OLS 0.454, LightGBM 0.288, XGBoost 0.234; distance bands 0-1 / 1-5 / 5-25 km; Conley HAC 25/50/100 km on 100,000 listings (between HC0 and state-cluster SEs) - scripts/08_tables_figures_v2.py: every table as a v2_*.tex fragment + figures + inline_numbers.json (re-runnable as batches complete); run_all.sh entry point; tests/test_tables.py Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-DATA-06/EDIT-04/ADVE-05/ADVE-12/ECON-10/THEO-08/EDIT-02/ECON-08/ADVE-17: inference v2 (fast steps) and geo-inference script
…
- 06_inference_v2.py: zpid/split assertions pass; v2 OLS cluster SEs: 33 of 63 slopes |t|>1.96 under state clustering (t(50): 33; Holm 17; BH 26), CSS effective G (state: median 14.2, min 3.7); '000' cluster = 16 listings, nearest-ZIP3 reassignment; clustered Kennedy; lot recoding on v2 (0.0182 -> 0.0958, matches v1.2 Table 29); paired squared-error differences with ZIP3-cluster SEs (stored predictions) - 09_geo_inference.py: ZIP3-cluster bootstrap of the OLS-vs-ensemble gap per design, LOSO paired tests, SSE decomposition, feasible level correction, 2x2 region x rounds, duplicates re-score, gap range Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-EDIT-01: 05_geo_designs OLS/FE fits cast to float64 (float32 LinearRegression returns rank 1)
…
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-DATA-04/ADVE-13/ECON-12/ECON-09: legacy exhibits machine-generated; OLS predictions via centred least squares
…
- 04_export_tables.py --legacy-exhibits: Tables 2, 5, 9, 11, 17, 30 from stored artefacts / rebuilt sample (Table 9 reproduced: 0.634/0.630, 0.681/0.678, 0.729/0.725; Ridge/Lasso/ENet rows flagged not reproducible; Moran SD under both ddof conventions 0.0076 / 0.0094; z-statistics not stored) - OLS out-of-fold predictions use LinearRegression (centred): a raw-constant lstsq on the legacy design with the corrupt parking column gives 0.613 instead of the stored 0.630 on the random split (now reproduced to 1e-12) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-EDIT-01/ADVE-01/ADVE-03/ADVE-04/EDIT-03/THEO-01/ADVE-06/ECON-03/ADVE-05/THEO-15: geo-design runner, QR v2 and stored-estimate checks
…
- scripts/05_geo_designs.py: OLS/XGB/LGB under random, size-matched, ten-state, GroupKFold by state/ZIP3/ZIP5 and LOSO on the v2 design; nested inner GroupKFold(3) round selection; 5 seeds; factorial ablation; OOF predictions; resumable (smoke-tested on a 15k/30k subsample on the laptop) - scripts/07_qr_v2.py: QR at 5 tau on the trimmed v2 design with convergence flags, 10-seed stability, paired obs + ZIP3 bootstrap (999 draws), Holm/BH/Romano-Wolf, percentile/basic CIs, legacy check vs qr_results.pkl - scripts/10_stored_checks.py: counts over 62 slopes (|t|>1.96: 32 state / 34 ZIP3; t(50): 31; Holm 19; BH 29), oracle within-state R2 on the stored random split (XGB 0.802, LGB 0.774, OLS 0.599), '000' cluster = 16, Moran SD conventions, LOSO summaries, 0.547/0.542 traced to extended_results.pkl, duplicates (1,127 test rows, R2 change < 0.001), Zestimate selection, clustered Kennedy; results/inline_numbers.json (82 entries) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
R03-DATA-01/EDIT-05/ADVE-07/ADVE-10/DATA-06/THEO-15/DATA-02/DATA-08: rebuild the upstream stage (00_build_sample, 00b_design_matrix, 00c --legacy, tests, DAS, environment)
…
- scripts/00_build_sample.py + src/wp3/build.py: DuckDB -> analytical sample; all 68 columns equal analytical_sample.pkl bit-for-bit (max |d| = 0); attrition, descriptives, corrected Table 3 rules (stories/parking = state median), lot reconciliation (123,942 + 6,115 + 211 + 3 negative = 130,271), duplicates (6,787 rows / 3,152 groups), listing-type shares, data window (snapshot 2026-01-08) - data/ref/category_map.csv: frozen raw-string -> category lookup (30,038 strings) - scripts/00b_design_matrix.py + src/wp3/design.py: one design matrix (design_v2.parquet); legacy mode equals model_data.pkl::X_const (max |d| = 0, means/stds ddof=1); v2 = ln lot recoded + lot_missing, parking/stories winsorised, implausible flag (4,970), six missingness indicators - scripts/00c_primary_models.py --legacy --ols-only: baseline OLS reproduced (params rel 7e-12, HC3 SE rel 9e-8, R2 0.634277, F 18,712.47, skew 0.1776, kurtosis 5.5452; state-FE test R2 0.67757 vs 0.67754) - tests/: 13 assertions green; environment/: requirements.lock (laptop + M4M64c), README - data/DATA_AVAILABILITY.md: source, window, licence, SHA-256, sizes, listing types Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
-
Sat, Oct 17, 2026 1
-
révision scientifique complète (editorial board, 2026-10-17)
…
v1.1 → v1.2 (October 2026). Audit des données (variables scolaires imputées à 93 %, ln(lot)=0 pour 16,5 %, valeurs aberrantes), inférence groupée ZIP3/État, estimation État par État, bootstrap apparié des tests inter-quantiles, validation géographique étendue (courbe d'arbres, split apparié, GroupKFold, leave-one-state-out, R² within-state), OLS hors État corrigé (0,539), 23 références vérifiées ajoutées + 28 DOI, sections réécrites, docs/REVIEW-REPORT.md et docs/CHANGELOG-REVISION.md, scripts 05–08, 82 pages. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
-
-
Wed, Aug 5, 2026 1
-
Initial commit: WP3 research compendium (hedonic housing prices, US)
…
Restructured research project for UQO Working Paper No. 3: refactored analysis pipeline (src/wp3 + numbered scripts), 11 publication-ready figures regenerated from stored artifacts, LaTeX paper (52 pages, BibTeX bibliography, compiles clean), CSV table exports, and full audit/change documentation (AUDIT.md, CHANGES.md). Large data artifacts (DuckDB raw extract, processed pickles) are excluded from the repository and available on request. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-