SPB Git

spb/wp38_uqo

Public
6.3 KB · 71 lines markdown
1<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->2# 🗺️ The Economic Geography of Digital Retail Supply34**UQO Working Paper No. 38** — *Product Diversity, Regional Specialization, and the Hidden Structure of Quebec's Online Economy*56[![Paper](https://img.shields.io/badge/paper-PDF-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)7[![Python](https://img.shields.io/badge/python-3.12-3776AB?logo=python&logoColor=white)](pyproject.toml)8[![Data](https://img.shields.io/badge/data-390%20108%20listings%20·%201%20569%20stores%20·%2017%20regions-4051b5)](data/raw/README.md)9[![Reproducible](https://img.shields.io/badge/reproducible-make%20all-2e7d32)](Makefile)10[![Preregistered](https://img.shields.io/badge/preregistered-frozen%202026--11--01-6f42c1)](research/preregistration.md)11[![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca)1213> **TL;DR** — A read-only snapshot (1 Nov 2026) of Fabri-Ka, an aggregator of Quebec online stores, gives 370 054 cleaned listings from 1 557 merchants in 17 administrative regions. Regional specialization is real at the level of *which merchants* sell online (merchant-equal Cramér's V 0.112 vs a store-reshuffle null of 0.086, p < 0.001, in every sample/labelling/discovery-source variant and at MRC level) but is indistinguishable from chance once listing volumes are counted (trimmed-listing p = 0.43, a low-power comparison), so the preregistered joint criterion for H1 is not met. Catalogue sizes are extremely skewed (Gini 0.85; top 10 % of stores hold 79 % of listings). Total regional variety rises with size; rarefied (15-store) diversity does not (ρ = 0.04, CI [−0.65; 0.62], n = 16). Matched products (precision 0.98–1.00) differ across merchants by a median 4.7 log points; resellers post 11.6 log points below producers (p = 0.004), while the joint regional test does not reject equality under a correct wild cluster bootstrap (p = 0.098; one region drives the Wald). The ECI-type complexity indicator fails bootstrap validation at 17 × 20 and is withheld; the QDACI is published as components only. H6 is untestable. Results are reported under a validated classifier labelling (primary, A-002) and the platform's rule labels (46 % audited precision). Three adversarial referee reports and the response log are included.1415---1617## 📌 Status1819| Item | Value |20|---|---|21| Version | 1.0 (November 2026) |22| Snapshot | `fabrika.db` backup 2026-11-01T17:38:30Z, sha256 `8d963ba9…98fb`, commit `689c7bb` |23| Preregistration | `research/preregistration.md` (sha256 `b7cd3f17…`), amendments A-001, A-002 in `research/decisions.md` |24| SSRN / journal | not yet submitted |2526## 🗂 Repository layout27```28CLAUDE.md                     mandate (verbatim)29config/settings.yaml          paths, seed 20261101, snapshot identity, regions30research/                     preregistration (frozen), decision log + amendments31reports/                      00_source_audit, phase2_data_audit, sample_flow, data_dictionary, model_inventory,32                              hypothesis_registry_{rule,model}, limitations, referee_1_econometrics, referee_2_geography, referee_3_data_engineering, referee_responses, reproducibility33literature/                   seed references, Crossref-verified metadata (142/143), evidence matrix, review notes, references.bib34data/raw/                     snapshot (not committed; provenance in README.md) · data/external/ public covariates + manifest35data/interim/, data/processed{,_model}/   parquet/csv intermediates per category labelling (not committed)36src/ingest  src/clean  src/features  src/models  src/validation  src/reports  src/literature  src/audit37experiments{,_model}/         JSON summary of every step; hypothesis registry38paper/                        main.tex, sections/, tables{,_model}/, figures{,_model}/, references.bib, main.pdf39tests/                        pytest invariants of the cleaned panel40logs/                         run ledger (jsonl, every API call with usage), output manifest (sha256), pipeline log41```4243## ▶️ Reproduce44```45make env                                  # uv venv (Python 3.12) + pinned deps46make ingest clean match validate          # snapshot → parquet → samples → matching → audits (LLM labels are cached CSVs)47make features models robust tables figures paper          # rule labelling (preregistered)48WP38_LABEL=model make features models robust tables figures   # classifier labelling (A-002)49make test50```51Access requirements: the authorised snapshot in `data/raw/fabrika-snapshot-20261101/` (owner export; not redistributed) and, only to regenerate annotations, `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` in `.env`. External covariates re-download with `make external` from the URLs in `data/external/manifest.json`.5253## ✅ Hypotheses — final status (classifier labelling primary; rule labelling identical in status)5455| H | Statement | Status | Key statistic |56|---|---|---|---|57| H1 | Regional specialization beyond merchant counts | **not supported (preregistered joint criterion)**; merchant-equal dependence robust | merchant-equal V 0.112 vs null 0.086 (p < 0.001); listing-weighted p 0.20; trimmed p 0.43 |58| H2 | Diversity ~ regional scale | **inconclusive** | ρ(rarefied entropy, log pop) 0.04 [−0.65; 0.62], n = 16; unrarefied ρ 0.52 |59| H3 | Skewed catalogue sizes | **supported** | Gini 0.849 [0.811; 0.878]; top-10 % 78.9 % |60| H4 | Related diversification | **exploratory** | LPM 0.102 (SE 0.031), placebo p 0.005; 1 region-level entry (untestable) |61| H5-T1 | Geographic price structure | **not supported** | Wald(14) 164.2, wild-boot p 0.098 (1 064 groups, 143 stores; Outaouais = 65 of 164) |62| H5-T2 | Competitive price structure | **supported** | reseller −0.116 (SE 0.027), p 0.004, Holm 0.016 |63| H6 | Local-origin premium | **untestable** | no product-level provenance |64| H7 | Complexity indicator | **not validated** | bootstrap rank ρ 0.68 (< 0.8); LOO predictive ρ 0.01 |65| QDACI | Composite | **withheld** | median agreement across weightings 0.29; components published |6667Generated registries: `reports/hypothesis_registry_model.md`, `reports/hypothesis_registry_rule.md`.6869## ⚠️ What this is not70Listings are posted offers of merchants located in a region; they are not sales, employment, output or product origin. The indicators describe observed online catalogues.71
Files · main
Menu

Theme