A count with a confidence.
A bathroom scale that reads "about 70 kg" is more useful if it can also say "between 68 and 72, nine times in ten", and less useful if the only honest statement is "between 40 and 100". This page asks that of the headcount: for each number of people the instrument can speak for, how likely is that number given one minute's reading, and how wide must a bucket be before the instrument can place a minute inside it with a stated confidence. Every step is computed on this request from the snapshot's own anchors and rows, and every constant is printed with its source.
Anchors and labelled minutes: the occupancy snapshot (web/occupancy_atlas.py, schema 4), method env_inj, 2 labelled anchors over 26 labelled fleet minutes. Minute: 2026-09-06 11:20 library time. Engine: web/counting.py.
Measured days: 2026-08-26 · 2026-08-28 · 2026-08-29 · 2026-08-31 · 2026-09-01 · 2026-09-02 · 2026-09-03 · 2026-09-04 · 2026-09-05 · 2026-09-06 · 2026-09-07 · 2026-09-08 · 2026-09-09 · 2026-09-10. Pass ?date=&tod= for another minute; the level essay shows how this minute's reading was made.
The level law: what each count does to the reading
An anchor is a labelled count and the fleet minutes inside its labelled windows: where their level sat (the median) and how much it wandered (the 10th to 90th percentile). Zero is the certified-empty floor by construction and has no window of its own, so its spread is the p90 of the fleet level over the calibration day's quiet minutes. Between anchors the expected level and its spread are taken as linear in the count; above the top anchor both are flat, because there is no labelled minute above it and the map may not invent one.
| People | Minutes | Level (oct) | σ (oct) | Spread from |
|---|---|---|---|---|
| 0 | — | 0.000 | 0.030 | the quiet minutes' p90 (diary 2026-09-02 §10) |
| 2 | 8 | 0.882 | 0.265 | its own p10 to p90 |
| 3 | 18 | 0.926 | 0.282 | its own p10 to p90 |
The resolution ladder: how wide a bucket must be
Two counts are distinguishable when the levels they produce sit further apart than the levels wander. The bucket the instrument can resolve at count N is the level spread there divided by how fast the level moves per person, times the z for the confidence asked. Where the law is flat the slope is zero and the width is unbounded: the instrument has nothing to say. The fitted saturating law is the shape the scattering-budget hypothesis predicts (each mover adds an independent phasor, a finite room caps the effective number), and it needs two labelled counts above zero before it can be fitted at all.
| People | σ (oct) | Slope, piecewise | Width, piecewise | Slope, saturating | Width, saturating |
|---|---|---|---|---|---|
| 0 | 0.030 | 0.441 | 0.2 | 2.0727 | 0.0 |
| 1 | 0.148 | 0.441 | 1.1 | 0.2604 | 1.9 |
| 2 | 0.265 | 0.044 | 19.7 | 0.0742 | 11.7 |
| 3 | 0.282 | — | unresolved | 0.0243 | 38.1 |
| 4 (above the top label) | 0.282 | — | unresolved | 0.0083 | 111.4 |
| 5 (above the top label) | 0.282 | — | unresolved | 0.0029 | 321.7 |
| 6 (above the top label) | 0.282 | — | unresolved | 0.0010 | 924.6 |
One minute's posterior
No labelled anchor above zero, so no posterior. The snapshot's map has nothing to compare a level against.
The check: does it hold on its own labelled minutes?
The posterior is scored on the labelled fleet minutes themselves. This is in-sample, since the anchors were built from these very minutes, so it can refute and cannot confirm: a nested set that misses its own anchors is broken, a set that covers them is not thereby proven. The out-of-sample test is a labelled day the map has not seen, which the crowd-day staircase supplies.
| Nominal | Covered | Share | Median width |
|---|---|---|---|
| 50 % | 19 of 26 | 73 % | 2 |
| 80 % | 23 of 26 | 88 % | 2 |
| 90 % | 24 of 26 | 92 % | 2 |
| 95 % | 24 of 26 | 92 % | 2 |
| Family | Minutes | Mass on true bucket | True bucket is mode |
|---|---|---|---|
| Fives | 26 | 100 % | 100 % |
| Doublings | 26 | 55 % | 88 % |
What the corpus says, and what would move this page
Every variance-type counting statistic in the corpus saturates. The dense nine-receiver network of People Counting by Dense WiFi MIMO Networks: Channel Features and Machine Learning Algorithms (kianoush2019_6c7f) separates one person from two and then falls to 0.22 accuracy at five. The percentage-of-nonzero-elements metric "almost stopped growing" with the count (A Survey on Wireless Device-free Human Sensing: Application Scenarios, Current Solutions, and Open Issues (xiao2023_6732)). Device-free crowd counting with WiFi channel state information and deep neural networks (zhou2020_6173) reaches 0.11 person mean error at up to 34 people, but only with a trained network, twelve labelled counts, and the finding that a missing count in training degrades the rest. Nothing in the corpus reports a count with an interval over a day of unlabelled minutes; the coverage tables above are this project's own.
Two things move this page. A second labelled count fits the saturating law and fills the right half of the ladder. A labelled day the anchors did not see turns §4 from a refutation-only check into a coverage measurement, and that is where the conformal wrapper of the conformal-count-intervals hypothesis takes over from the normal likelihood used here. Until then, a bucket of five is one open bucket on this instrument, and the page says so.
Related: how this minute's level was made · the episodes with their 90 % sets · the calibration panel · JSON: minute · ladder and check