statistical-reporting
Never report a single run as a result. A number from one draw of a stochastic system is
an anecdote; a claim is a distribution summarized honestly: center, spread, replication
count, and — for comparisons — a paired design with the pairing stated. This skill governs
how numbers become claims.
When to use
- A numeric result is entering a build-log entry, a decision's evidence, or a paper draft.
- Designing a campaign: choosing the replication unit and count before launch.
- Comparing methods, configurations, or arms.
- Reviewing a draft for naked point estimates.
When NOT to use
- Deterministic quantities (an exact count, a closed-form value, a proven bound) — report
the value; intervals around determinism are theater.
- Exploratory probes not yet feeding a claim — but promote them through this skill before
they do.
- Choosing seeds/realization mechanics —
run-provenance.
Runbook
- Declare the replication unit before running — what varies across replications
(random instances, seeds, data splits, noise draws) and what stays fixed. The unit
defines what population the claim generalizes to.
- Set N in the run contract, not after seeing results. Working default: ~10
realizations per cell for expensive computations, more when cheap; the honest minimum is
whatever supports the interval you intend to report.
- Run paired where comparing. All arms see the same realization list (same instances,
same seeds); report per-realization differences, not differences of aggregates.
- Summarize with center + spread + N: median (or mean) with an interquartile band /
bootstrap CI / standard error — and N visible in every table and caption. For small N or
unknown distributions prefer rank-based tests (e.g. paired signed-rank) over normality
assumptions.
- Keep denominators visible. Failed, infeasible, and timed-out cells are part of the
result: "median over the 6/10 realizations that completed; 4 infeasible (recorded)" — never
silently condition on success (
evidence-convention rule 5).
- Report direction, magnitude, and uncertainty — not a bare p-value. A significant
difference of negligible size and a non-significant trend are both reportable truths;
say which you have.
Rules
- One run, no claim. A single-realization number may appear only as a labeled
illustration ("representative realization"), never as the result.
- The comparison set is declared in advance (the run contract /
expectation field —
see evidence-convention). Comparisons invented after seeing the numbers are labeled
post-hoc and carry no confirmatory weight.
- No selective replication. Adding realizations until the test passes, or dropping
"unlucky" seeds, is p-hacking with extra steps; N is fixed by the contract, deviations
are recorded.
- Match before you compare. Arms differing in more than the treatment (different
instances, different budgets) produce differences with no interpretation; matching is a
design property, not a statistical patch.
- Uncertainty from the right variance. Spread across realizations ≠ spread within one
realization's iterates; state which is shown.
- Small-N humility. With N ≤ 5, report the raw per-realization table alongside any
summary — readers can then judge for themselves.
Configuration
{{evidence_dir}} — campaign outputs and per-realization tables.
Provenance & maintenance
Authored from the statistical-reporting canon for computational experiments (replication,
pairing, visible denominators, rank-based small-N tests), grounded in working practice: a
campaign design of ~10 realizations per cell with paired rank-based comparison across arms
on identical realization lists, infeasible cells recorded verbatim as findings, and
per-realization difference tables computed post-hoc from the evidence CSVs. See the pack's
examples/ directory for the worked exemplar mapping.
Re-verify in your project:
grep -h "seeds\|realizations" {{evidence_dir}}/*/meta.json | head -3 — N is declared in
the contract, not improvised.
- Spot-check a recent table/caption for center + spread + N all present.
grep -rn "INFEASIBLE\|TIMEOUT\|failed" {{evidence_dir}}/*/README.md | head — denominators
are recorded, not conditioned away (adapt status names).
1---2name: statistical-reporting3description: Use when a numeric result is about to be reported, compared, or put in a paper — enforcing replication counts, uncertainty intervals, paired comparisons on matched instances, and visible denominators. Also use when designing how many runs a claim needs. Trigger phrases: "is this difference real", "how many replications", "report with confidence intervals", "single run result", "compare method A vs B", "is N=3 enough".4---56# statistical-reporting78**Never report a single run as a result.** A number from one draw of a stochastic system is9an anecdote; a claim is a distribution summarized honestly: center, spread, replication10count, and — for comparisons — a paired design with the pairing stated. This skill governs11how numbers become claims.1213## When to use1415- A numeric result is entering a build-log entry, a decision's evidence, or a paper draft.16- Designing a campaign: choosing the replication unit and count before launch.17- Comparing methods, configurations, or arms.18- Reviewing a draft for naked point estimates.1920## When NOT to use2122- Deterministic quantities (an exact count, a closed-form value, a proven bound) — report23 the value; intervals around determinism are theater.24- Exploratory probes not yet feeding a claim — but promote them through this skill before25 they do.26- Choosing seeds/realization mechanics — `run-provenance`.2728## Runbook29301. **Declare the replication unit before running** — what varies across replications31 (random instances, seeds, data splits, noise draws) and what stays fixed. The unit32 defines what population the claim generalizes to.332. **Set N in the run contract**, not after seeing results. Working default: ~1034 realizations per cell for expensive computations, more when cheap; the honest minimum is35 whatever supports the interval you intend to report.363. **Run paired where comparing.** All arms see the *same* realization list (same instances,37 same seeds); report per-realization differences, not differences of aggregates.384. **Summarize with center + spread + N**: median (or mean) with an interquartile band /39 bootstrap CI / standard error — and N visible in every table and caption. For small N or40 unknown distributions prefer rank-based tests (e.g. paired signed-rank) over normality41 assumptions.425. **Keep denominators visible.** Failed, infeasible, and timed-out cells are part of the43 result: "median over the 6/10 realizations that completed; 4 infeasible (recorded)" — never44 silently condition on success (`evidence-convention` rule 5).456. **Report direction, magnitude, and uncertainty** — not a bare p-value. A significant46 difference of negligible size and a non-significant trend are both reportable truths;47 say which you have.4849## Rules50511. **One run, no claim.** A single-realization number may appear only as a labeled52 illustration ("representative realization"), never as the result.532. **The comparison set is declared in advance** (the run contract / `expectation` field —54 see `evidence-convention`). Comparisons invented after seeing the numbers are labeled55 post-hoc and carry no confirmatory weight.563. **No selective replication.** Adding realizations until the test passes, or dropping57 "unlucky" seeds, is p-hacking with extra steps; N is fixed by the contract, deviations58 are recorded.594. **Match before you compare.** Arms differing in more than the treatment (different60 instances, different budgets) produce differences with no interpretation; matching is a61 design property, not a statistical patch.625. **Uncertainty from the right variance.** Spread across realizations ≠ spread within one63 realization's iterates; state which is shown.646. **Small-N humility.** With N ≤ 5, report the raw per-realization table alongside any65 summary — readers can then judge for themselves.6667## Configuration6869- `{{evidence_dir}}` — campaign outputs and per-realization tables.7071## Provenance & maintenance7273Authored from the statistical-reporting canon for computational experiments (replication,74pairing, visible denominators, rank-based small-N tests), grounded in working practice: a75campaign design of ~10 realizations per cell with paired rank-based comparison across arms76on identical realization lists, infeasible cells recorded verbatim as findings, and77per-realization difference tables computed post-hoc from the evidence CSVs. See the pack's78`examples/` directory for the worked exemplar mapping.7980Re-verify in your project:8182- `grep -h "seeds\|realizations" {{evidence_dir}}/*/meta.json | head -3` — N is declared in83 the contract, not improvised.84- Spot-check a recent table/caption for center + spread + N all present.85- `grep -rn "INFEASIBLE\|TIMEOUT\|failed" {{evidence_dir}}/*/README.md | head` — denominators86 are recorded, not conditioned away (adapt status names).