SPB Git

spb/wp38_uqo

Public
12.1 KB

# Preregistration — WP38 "The Economic Geography of Digital Production" (Quebec online assortments, Fabri-Ka snapshot 2026-11-01)

Status: frozen 2026-11-01 before any Phase 4 model was run (hash recorded in research/decisions.md, D-007). Amendments, if any, are logged as A-xxx with their date and reason; nothing below is edited after freezing.

What was known when freezing: Phase 0 source audit (reports/00_source_audit.md), Phase 2 cleaning counts (reports/sample_flow.md), the matching candidate counts and tier-level median price gaps (experiments/matching.json), and the fact that a category-label audit and a match-validation sample were being annotated. No regional composition statistic, diversity index, network, regression or complexity index had been computed.

# 1. Object of study and wording rules

The unit is the published, active online listing of a Quebec-based merchant observed by Fabri-Ka at the snapshot (2026-11-01T17:38:30Z). The paper studies the observed online retail assortment of merchants whose site Fabri-Ka classifies as Quebec-based. The following wording is mandatory: listings are not products sold, prices are posted prices, a merchant's region is the region of its (FSA-level) business location, not the origin of its products; "production", "manufacturing" and "output" are never used to describe Fabri-Ka quantities.

# 2. Samples (fixed; see reports/sample_flow.md)

name definition size at freezing
S_A assortment sample active, published listings of enabled stores; one representative per (store, normalised title); not hors_mission; not a non-representative mirror domain 370 054 listings, 1 557 stores
S_R regional sample (primary) S_A ∩ stores with region_final ≠ Inconnue (Fabri-Ka region, else region of the FSA centroid by point-in-polygon against the official MERN administrative-region layer) to be reported; at freezing 1 223 stores have a Fabri-Ka region and up to 117 more can be recovered by point-in-polygon
S_R0 S_A ∩ stores with a Fabri-Ka region only (region_source = db) — sensitivity 1 223 stores
S_P price sample S_A ∩ CAD store/listing ∩ 0 < price ≤ 50 000 ∩ not on request 359 612 listings
S_M matched sample pairs/groups from tiers A (shared SKU) and B (same brand, identical title) with comparable = True, both stores in S_R, stores not siblings; tier C added in sensitivity; tier D never used for inference at freezing: A 1 683 and B 381 comparable pairs before region/sibling filters

Stores with unknown region are reported as an 18th row "Inconnue" in descriptive tables and excluded from all regional inference. Listings in the 20 Fabri-Ka categories are used as labelled; the category audit (500 listings, two LLM annotators + operator adjudication) yields a confusion matrix used (i) to report label precision and (ii) in a robustness run that reweights or reassigns categories by the estimated confusion (Section 7).

# 3. Weighting schemes (all reported; the primary is stated per hypothesis)

  • L (listing weights): each listing counts 1.
  • M (merchant-equal weights): each listing counts 1/n_s where n_s is the store's number of S_A listings, so every store contributes one unit — the primary scheme for all regional statistics because catalogue sizes are extremely skewed (top-10 stores = 36 % of listings).
  • T (trimmed): scheme L after dropping the 1 % largest stores by catalogue size.

# 4. Hypotheses, estimands, specifications and decision rules

# H1 — Regional specialization (confirmatory)

Estimand: dependence between region and category in S_R beyond what a random allocation of stores to regions would produce. Statistic: Cramér's V of the region × category table under scheme M (primary) and L, T. Inference: 2 000 permutations that reshuffle region labels across stores (preserving each region's store count and each store's catalogue) → one-sided p-value; store-cluster bootstrap (2 000 draws) for 95 % CIs of V and of every RAA_rc. RAA_rc = (N_rc/N_r·)/(N_·c/N_··) with N under scheme M. Decision: H1 supported if p < 0.05 (Holm-adjusted within the confirmatory family) under scheme M and under scheme T. Reported alongside: number of (r, c) cells whose bootstrap CI for RAA excludes 1; RAA heat-map; comparison with the merchant-count-based "RAA" (stores instead of listings).

# H2 — Diversity and regional scale (confirmatory, low power: 17 regions)

Outcomes (per region, S_R): (a) rarefied normalised Shannon entropy of category shares, computed as the mean over 2 000 draws of 15 stores without replacement (regions with fewer than 15 stores are excluded from (a) and flagged); (b) merchant-equal normalised entropy; (c) effective number of categories exp(H). Regressors (external, ISQ/StatCan; vintage recorded): log population, log number of business locations, disposable income per capita; urban indicator if obtained. Test: Spearman ρ between outcome (a) and log population, 95 % CI by region-level bootstrap combined with the store-level resampling of the outcome; OLS of (a) on log population with HC3 SE as the secondary statistic. Decision: H2 supported if the CI of ρ excludes 0 (primary) — reported as an association, never causal. Power note: with n ≤ 17, only |ρ| ≳ 0.5 is detectable.

# H3 — Concentration and the long tail (confirmatory)

Estimands (S_A, all stores): Gini of listings across stores; share of listings held by the top 1 % and top 10 % of stores; rank-size slope; discrete power-law vs log-normal fit of catalogue sizes (Clauset–Shalizi–Newman MLE, Vuong likelihood-ratio test). Within-region Gini with store bootstrap CIs. Decision: H3 supported if Gini ≥ 0.70 and top-10 % share ≥ 50 % (both pre-declared thresholds; bootstrap CIs reported). The distributional family is reported, not tested as a hypothesis.

Panel: weekly presence of (store, category) reconstructed from first_seen/last_seen for ISO weeks 2026-W36 … 2026-W44 (after onboarding ended on 2026-08-24; W35 is a buffer). Relatedness φ_cc' = Hidalgo-type proximity from co-occurrence of categories across stores at baseline (W36). Density_sc = Σ_{c'∈portfolio_s} φ_cc' / Σ_{c'} φ_cc'. Outcome: Entry_sc = 1 if store s has no listing in c in W36–W39 and ≥ 1 listing in W40–W44 (temporal holdout: density uses W36–W39 only). Model: linear probability Entry_sc = β Density_sc + α_s + γ_c + ε_sc, SE clustered by store; placebo with density from a store-permuted co-occurrence matrix; region-level version (entry of a category in a region) reported descriptively because the number of events is expected to be small. Interpretation rule: whatever β is, the result is reported as exploratory and the share of entries attributable to connector changes (sync_log message audit) is reported.

# H5 — Price dispersion of matched products (confirmatory, two tests)

Sample S_M. Model: log P_im = α_i + γ_{r(m)} + δ_{platform(m)} + β₁ log n_m + β₂ Reseller_m + β₃ Certified_m + ε_im, i = match group, m = store; SE clustered by store (wild cluster bootstrap, 9 999 draws, Rademacher) because the number of stores is small (≈ 200). Test 1 (geography): joint test that all γ_r are equal (wild-cluster-bootstrap p-value). Test 2 (competition): β₂ = 0 (sign reported). Descriptive estimands: median and p90 of the within-group max–min log gap; share of groups with gap > 5 %; same statistics by tier and by comparability flag. Identification note (fixed): each store belongs to one region, so γ_r is identified only through groups that span regions; a store fixed effect cannot be included with γ_r. Shipping and taxes are not observed; prices are posted prices. Decision: "geographically structured" if Test 1 p < 0.05 (Holm-adjusted); "competitively structured" if Test 2 p < 0.05 (Holm-adjusted). Match precision from the validation sample is reported, and a correction run keeps only groups confirmed by the annotators.

# H6 — Local-origin premium: declared untestable at product level

The source has no product-level provenance; origin_class is a store-level prior. No H6 estimate will be produced. A descriptive store-certification contrast (within-category log-price difference between stores certified by Aliments du Québec / Les Produits du Québec and other stores, category FE, store-clustered SE) is reported in a separate subsection with the explicit label "not a test of H6".

# H7 — Digital-assortment complexity (indicator validation, not a hypothesis test)

Matrix: M_rc = 1[RAA_rc ≥ 1] under scheme M on S_R. Indicators: method-of-reflections ECI (second eigenvector of M̃ = D_r⁻¹ M D_c⁻¹ Mᵀ), Fitness–Complexity (Tacchella et al.), and plain diversity (row sums). Validation criteria (all reported, none "supports H7" on its own): (V1) rank stability — Spearman ρ between the full-sample ECI and ECIs from 500 store-bootstrap draws, criterion median ρ ≥ 0.8; (V2) null — the dispersion of ECI and the ECI–diversity correlation compared with 2 000 store-level region reshuffles; (V3) incremental information — R² of ECI on log population, log business count and income (n ≤ 17); ECI is said to carry information beyond these covariates only if the leave-one-region-out predicted ECI remains correlated (ρ ≥ 0.5) with the realised one and V1 holds; (V4) community detection stability (Louvain, 200 seeds; normalised mutual information between runs). A "complexity" label is used only if V1 and V2 pass; otherwise the index is reported as "unstable" and the QDACI omits it.

# QDACI (Phase 6)

Components per region, each with store-bootstrap 95 % CI: (1) rarefied diversity (H2a); (2) specialization = mean |log RAA| over categories (scheme M); (3) complexity (H7 ECI, only if validated); (4) concentration = within-region Gini of catalogue sizes, and coverage = stores per 10 000 population; (5) matched-product price dispersion = region effect γ_r from H5 (only for regions with ≥ 10 matched stores). Composite: equal weights on rank-normalised components, PCA first component, and Borda rank aggregation; instability measured by the Spearman ρ between composite rankings across weightings and across bootstrap draws. If the three composites disagree (median pairwise ρ < 0.7), no composite is published and the paper reports components only.

# 5. External validation (Phase 5)

Fabri-Ka store counts per region compared with the external business-location counts (overall and retail/manufacturing if obtained): coverage ratio per region, Spearman ρ, and a residual plot. Selection audit: share of stores by discovery source and by platform per region; category composition by platform. Results of H1–H3 recomputed on (i) S_R0, (ii) stores discovered by certification/association sources only, (iii) excluding Montréal, (iv) excluding the 1 % largest stores, (v) categories merged into 8 macro-groups, (vi) autre dropped, (vii) categories reassigned by the audit confusion matrix (100 draws).

# 6. Inference, seeds, multiplicity

Seed 20261101 everywhere. Confirmatory family = {H1, H2, H3, H5-T1, H5-T2}: Holm step-down at α = 0.05; raw p-values also reported. Exploratory/validation outputs (H4, H6-proxy, H7, QDACI) carry no adjusted claims. All CIs are percentile bootstrap unless stated.

# 7. What will make us say a hypothesis is "inconclusive" or "untestable"

Inconclusive: a CI that includes both the null and economically meaningful effects (H2, H5) or a permutation p between 0.05 and 0.20 (H1). Untestable: H6 (declared); H4 at the region level if fewer than 10 region–category entries occur; H5 Test 1 if fewer than 8 regions have ≥ 5 matched stores.

# 8. Outputs promised

Tables: sample flow; category audit; match validation; RAA matrix with CIs; diversity by region with CIs; H2 correlations; concentration statistics; H4 LPM; H5 regressions; H7 validation; QDACI components and composite instability; external coverage. Figures: coverage map; RAA heat-map; diversity/concentration distributions; rank-size plot; category network and communities; price-gap distributions; complexity vs development; H4 figure only if ≥ 10 region-level entries; robustness coefficient plot; attrition diagram.

Files · b37af88249a384c237e842b12a5374ddeacbd108
Menu

Theme