Asking the fleet what it is doing…
monad-knowledge Wi-Fi sensing lab · FIIT STU
Instrument · what the count rests on

What the headcount is made of.

The app on the previous page prints one number per minute. This page opens the back of the instrument and shows what that number rests on: every measured day on one clock, the four ways of computing a level and how often they agree, the minutes with a known headcount the count map passes through, what an empty floor reads night by night, how often each rule would have cried wolf on a night nobody was there, which receivers raise alarms alone, whether the phones in the room move with the radio reading, and whether a warm node reads differently from a cool one.

In plain words Like a thermostat's chart for a house, but for people: a calendar of the days the fleet listened, a twenty-four-hour curve for the day you pick, and a headcount for each minute with the range the instrument can honestly give. A gap in the curve is a gap; nobody fills it with a zero.

Method for the level panels: Envelope, our transmitter only · Doppler 20–60 Hz, our transmitter only · Delivered-rate collapse · Envelope, every transmitter

Every measured day, on one clock

Per day, for env_pooled: minutes captured, minutes the fleet could score (three or more receivers with a floor), and minutes whose most likely bucket was occupied or high.
Day Captured min Scored min Occupied+ min Span
2026-08-26 151 151 0 13:31–21:01 library time
2026-08-28 61 0 0 00:13–01:13 library time
2026-08-29 122 62 18 12:32–15:02 library time
2026-08-31 61 31 0 14:54–15:54 library time
2026-09-01 327 327 32 10:48–16:14 library time
2026-09-02 611 611 5 10:43–23:59 library time
2026-09-03 652 652 5 00:00–23:59 library time
2026-09-04 879 879 22 00:00–21:44 library time
2026-09-05 533 533 113 04:45–20:34 library time
2026-09-06 583 582 0 02:13–23:59 library time
2026-09-07 645 645 25 00:00–23:59 library time
2026-09-08 500 500 0 00:00–23:59 library time
2026-09-09 712 712 6 00:00–21:44 library time
2026-09-10 277 0 0 05:24–10:00 library time

How the four methods agree

Scope: every day pooled · 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

Agreement on the fleet bucket, 2026-09-09. κ of 1 is perfect agreement, 0 is chance, below 0 is systematic disagreement.
Method A Method B Minutes both scored Same bucket Cohen's κ
doppler_inj env_pooled 712 70 % 0.27
doppler_inj rate_inj 712 75 % 0.29
env_inj doppler_inj 712 75 % 0.38
env_inj env_pooled 712 80 % 0.44
env_inj rate_inj 712 87 % 0.57
rate_inj env_pooled 712 84 % 0.46

The calibration

The anchors of the count map on env_inj: for each labelled count, the fleet minutes inside its labelled windows and where their level sat. Zero is the certified-empty floor by construction.
PeopleMinutesLevel median (oct)p10p90
00.000
280.8820.4981.177
3180.9260.4841.206

One integer per minute with an interval, from a piecewise-linear map through the anchors. Zero is the floor by construction. Above the top anchor the upper bound is open.

Every labelled window the snapshot read. A label is a person's statement with a basis; it is what the map passes through.
LabelDayWindow (library time)PeopleSourceBasis
OL-001 2026-09-02 10:45–10:49 2 diary Two people filming a promotional video, moving all over the floor, before 11:20 (diary 2026-09-02 §3, the researcher's own timeline). The window edges are the detector's episode edges on nine receivers (§4b); the count is the researcher's. The quiet minutes between this and OL-002 are unlabelled because where the crew stood then is not recorded.
OL-002 2026-09-02 10:57–11:01 2 diary Same two people filming (diary 2026-09-02 §3, 'the 10:45 and 10:57 episodes fall in the window the researcher places two people making a video on the floor'). Window edges from §4b; count from the researcher.
OL-003 2026-09-02 11:16–11:26 3 diary Three people: the diary's calibration (§10) labels 'eighteen minutes with three people' across the 11:16 to 11:25 and 11:31 to 11:38 episodes, inside the researcher's own 11:20 to 11:45 visit (§3). Window edges from §4b; count from the researcher.
OL-004 2026-09-02 11:31–11:39 3 diary Three people, the second of the two episodes the diary's calibration (§10) labels as three people, inside the researcher's 11:20 to 11:45 visit (§3). Window edges from §4b; count from the researcher.

Edges calibrated on 2026-09-02 (nine receivers, the transmitter-scoped envelope): fleet level 0.00 octaves on 62 quiet minutes (p90 0.03), 1.05 on nine minutes with two moving people, 1.10 on eighteen minutes with three people. Empty against occupied separates; two against three people does not. `high` has never been observed and is a placeholder until the staged crowd days run. Buckets are levels, not head counts.

The empty floor, night by night

env_pooled: per night and receiver, the certified-empty minutes and their median, MAD and 99th percentile of the raw statistic. "Shift" is this night's median minus the previous decoded night's, in units of that night's MAD.
Night of Receiver Minutes Median MAD p99 Previous Shift (MAD)
2026-09-02 monad02 336 0.08357 0.0275 0.1536
2026-09-03 monad02 336 0.05971 0.0145 0.144 2026-09-02 -0.9
2026-09-05 monad02 110 0.1092 0.0157 0.1659 2026-09-03 +3.4
2026-09-06 monad02 323 0.07276 0.0191 0.1519 2026-09-05 -2.3
2026-09-07 monad02 340 0.0804 0.0149 0.1601 2026-09-06 +0.4
2026-09-08 monad02 320 0.08475 0.0308 0.1578 2026-09-07 +0.3
2026-09-02 monad03 335 0.0707 0.0173 0.108
2026-09-03 monad03 336 0.07402 0.0147 0.1296 2026-09-02 +0.2
2026-09-05 monad03 110 0.07518 0.0201 0.1316 2026-09-03 +0.1
2026-09-06 monad03 323 0.07024 0.0164 0.1425 2026-09-05 -0.2
2026-09-07 monad03 338 0.06167 0.00694 0.0965 2026-09-06 -0.5
2026-09-08 monad03 320 0.08619 0.0157 0.1113 2026-09-07 +3.5
2026-09-02 monad04 336 0.0937 0.0369 0.1638
2026-09-03 monad04 336 0.06123 0.0158 0.1301 2026-09-02 -0.9
2026-09-05 monad04 110 0.08447 0.0284 0.1557 2026-09-03 +1.5
2026-09-06 monad04 324 0.07887 0.0239 0.1463 2026-09-05 -0.2
2026-09-07 monad04 339 0.07511 0.00935 0.1342 2026-09-06 -0.2
2026-09-08 monad04 320 0.08426 0.0131 0.1101 2026-09-07 +1.0
2026-08-27 monad05 62 0.209 0.063 0.2637
2026-09-02 monad05 335 0.2326 0.119 0.3327 2026-08-27 +0.4
2026-09-03 monad05 336 0.1736 0.061 0.3112 2026-09-02 -0.5
2026-09-05 monad05 110 0.2404 0.0503 0.2943 2026-09-03 +1.1
2026-09-06 monad05 324 0.2387 0.0608 0.3057 2026-09-05 -0.0
2026-09-07 monad05 340 0.2213 0.0401 0.3344 2026-09-06 -0.3
2026-09-08 monad05 321 0.3044 0.091 0.3969 2026-09-07 +2.1
2026-09-02 monad06 336 0.07907 0.0189 0.1433
2026-09-03 monad06 334 0.08387 0.0225 0.1529 2026-09-02 +0.3
2026-09-05 monad06 110 0.0968 0.0322 0.1644 2026-09-03 +0.6
2026-09-06 monad06 324 0.08633 0.0215 0.1544 2026-09-05 -0.3
2026-09-07 monad06 340 0.07582 0.00979 0.1459 2026-09-06 -0.5
2026-09-08 monad06 290 0.06977 0.0242 0.1274 2026-09-07 -0.6
2026-09-02 monad07 334 0.1259 0.0211 0.1734
2026-09-03 monad07 335 0.1218 0.0277 0.1752 2026-09-02 -0.2
2026-09-05 monad07 110 0.1317 0.0393 0.2072 2026-09-03 +0.4
2026-09-06 monad07 324 0.1334 0.0291 0.1866 2026-09-05 +0.0
2026-09-07 monad07 339 0.1188 0.0145 0.1843 2026-09-06 -0.5
2026-08-27 monad08 62 0.1074 0.0327 0.1734
2026-09-02 monad08 336 0.08172 0.0197 0.1171 2026-08-27 -0.8
2026-09-03 monad08 335 0.0857 0.0159 0.1569 2026-09-02 +0.2
2026-09-05 monad08 109 0.07587 0.0166 0.1485 2026-09-03 -0.6
2026-09-06 monad08 323 0.07849 0.0158 0.1471 2026-09-05 +0.2
2026-09-07 monad08 339 0.0603 0.0049 0.09037 2026-09-06 -1.2
2026-09-02 monad09 336 0.08629 0.0397 0.1297
2026-09-03 monad09 334 0.1071 0.034 0.177 2026-09-02 +0.5
2026-09-05 monad09 110 0.109 0.0298 0.1655 2026-09-03 +0.1
2026-09-06 monad09 324 0.07919 0.0235 0.146 2026-09-05 -1.0
2026-09-07 monad09 340 0.09143 0.012 0.1615 2026-09-06 +0.5
2026-09-02 monad10 336 0.09398 0.0178 0.1745
2026-09-03 monad10 336 0.06925 0.00472 0.1232 2026-09-02 -1.4
2026-09-05 monad10 110 0.1125 0.0428 0.1857 2026-09-03 +9.2
2026-09-06 monad10 324 0.08564 0.0138 0.1938 2026-09-05 -0.6
2026-09-07 monad10 340 0.08239 0.00257 0.1511 2026-09-06 -0.2

The false-alarm ledger

env_pooled, per night, rule, bucket edge and window: the windows that fired, the rate per empty hour, and the Wilson 95 % upper bound. The level is judged against the same night's floor.
Night of Rule Edge (oct) Window Windows Fired Per hour Upper 95 %
2026-09-02 fleet-median 0.25 1 min 326 78 14.36 17.31
2026-09-02 fleet-median 0.25 10 min 33 18 3.27 4.21
2026-09-02 fleet-median 0.75 1 min 326 0 0.00 0.70
2026-09-02 fleet-median 0.75 10 min 33 0 0.00 0.63
2026-09-02 fleet-median 1.50 1 min 326 0 0.00 0.70
2026-09-02 fleet-median 1.50 10 min 33 0 0.00 0.63
2026-09-02 k2-of-N 0.25 1 min 326 124 22.82 26.05
2026-09-02 k2-of-N 0.25 10 min 33 29 5.27 5.71
2026-09-02 k2-of-N 0.75 1 min 326 5 0.92 2.12
2026-09-02 k2-of-N 0.75 10 min 33 5 0.91 1.86
2026-09-02 k2-of-N 1.50 1 min 326 0 0.00 0.70
2026-09-02 k2-of-N 1.50 10 min 33 0 0.00 0.63
2026-09-03 fleet-median 0.25 1 min 326 75 13.80 16.72
2026-09-03 fleet-median 0.25 10 min 33 26 4.73 5.36
2026-09-03 fleet-median 0.75 1 min 326 9 1.66 3.10
2026-09-03 fleet-median 0.75 10 min 33 5 0.91 1.86
2026-09-03 fleet-median 1.50 1 min 326 0 0.00 0.70
2026-09-03 fleet-median 1.50 10 min 33 0 0.00 0.63
2026-09-03 k2-of-N 0.25 1 min 326 166 30.55 33.78
2026-09-03 k2-of-N 0.25 10 min 33 33 6.00 6.00
2026-09-03 k2-of-N 0.75 1 min 326 27 4.97 7.07
2026-09-03 k2-of-N 0.75 10 min 33 12 2.18 3.20
2026-09-03 k2-of-N 1.50 1 min 326 0 0.00 0.70
2026-09-03 k2-of-N 1.50 10 min 33 0 0.00 0.63
2026-09-05 fleet-median 0.25 1 min 107 43 24.11 29.80
2026-09-05 fleet-median 0.25 10 min 11 8 4.36 5.42
2026-09-05 fleet-median 0.75 1 min 107 0 0.00 2.08
2026-09-05 fleet-median 0.75 10 min 11 0 0.00 1.55
2026-09-05 fleet-median 1.50 1 min 107 0 0.00 2.08
2026-09-05 fleet-median 1.50 10 min 11 0 0.00 1.55
2026-09-05 k2-of-N 0.25 1 min 107 48 26.92 32.58
2026-09-05 k2-of-N 0.25 10 min 11 9 4.91 5.69
2026-09-05 k2-of-N 0.75 1 min 107 3 1.68 4.75
2026-09-05 k2-of-N 0.75 10 min 11 3 1.64 3.39
2026-09-05 k2-of-N 1.50 1 min 107 0 0.00 2.08
2026-09-05 k2-of-N 1.50 10 min 11 0 0.00 1.55
2026-09-06 fleet-median 0.25 1 min 314 70 13.38 16.33
2026-09-06 fleet-median 0.25 10 min 32 21 3.94 4.78
2026-09-06 fleet-median 0.75 1 min 314 15 2.87 4.64
2026-09-06 fleet-median 0.75 10 min 32 6 1.12 2.12
2026-09-06 fleet-median 1.50 1 min 314 0 0.00 0.73
2026-09-06 fleet-median 1.50 10 min 32 0 0.00 0.64
2026-09-06 k2-of-N 0.25 1 min 314 136 25.99 29.30
2026-09-06 k2-of-N 0.25 10 min 32 30 5.62 5.90
2026-09-06 k2-of-N 0.75 1 min 314 36 6.88 9.28
2026-09-06 k2-of-N 0.75 10 min 32 17 3.19 4.15
2026-09-06 k2-of-N 1.50 1 min 314 0 0.00 0.73
2026-09-06 k2-of-N 1.50 10 min 32 0 0.00 0.64
2026-09-07 fleet-median 0.25 1 min 330 48 8.73 11.25
2026-09-07 fleet-median 0.25 10 min 33 14 2.55 3.55
2026-09-07 fleet-median 0.75 1 min 330 0 0.00 0.69
2026-09-07 fleet-median 0.75 10 min 33 0 0.00 0.63
2026-09-07 fleet-median 1.50 1 min 330 0 0.00 0.69
2026-09-07 fleet-median 1.50 10 min 33 0 0.00 0.63
2026-09-07 k2-of-N 0.25 1 min 330 67 12.18 14.98
2026-09-07 k2-of-N 0.25 10 min 33 18 3.27 4.21
2026-09-07 k2-of-N 0.75 1 min 330 21 3.82 5.72
2026-09-07 k2-of-N 0.75 10 min 33 9 1.64 2.65
2026-09-07 k2-of-N 1.50 1 min 330 0 0.00 0.69
2026-09-07 k2-of-N 1.50 10 min 33 0 0.00 0.63
2026-09-08 fleet-median 0.25 1 min 311 71 13.70 16.69
2026-09-08 fleet-median 0.25 10 min 32 14 2.62 3.64
2026-09-08 fleet-median 0.75 1 min 311 0 0.00 0.73
2026-09-08 fleet-median 0.75 10 min 32 0 0.00 0.64
2026-09-08 fleet-median 1.50 1 min 311 0 0.00 0.73
2026-09-08 fleet-median 1.50 10 min 32 0 0.00 0.64
2026-09-08 k2-of-N 0.25 1 min 311 95 18.33 21.53
2026-09-08 k2-of-N 0.25 10 min 32 19 3.56 4.47
2026-09-08 k2-of-N 0.75 1 min 311 2 0.39 1.39
2026-09-08 k2-of-N 0.75 10 min 32 1 0.19 0.94
2026-09-08 k2-of-N 1.50 1 min 311 0 0.00 0.73
2026-09-08 k2-of-N 1.50 10 min 32 0 0.00 0.64

Receiver commissioning

A flag is a receiver-minute whose own level bucket is occupied or above. A lone flag is one no other receiver scored that minute shared. Lone flags inside an episode the fleet later joined are the best-placed receiver hearing first; lone flags outside every episode are the alarms nobody else ever joined. Quiet correlation is the receiver's level against the fleet median on minutes the fleet read empty: common-mode drift shows here. The ranking must hold on two independent days before it is quoted, which is why the scope can be one day. Scope: every day pooled · 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

env_pooled, 2026-09-09: per receiver, minutes scored, minutes it flagged, its lone flags and their rate, how many lone flags fell inside a fleet episode, the episodes it flagged over the episodes on its days, and its correlation with the fleet median on fleet-quiet minutes.
Receiver Minutes Flags Lone Lone rate Lone in episode Episodes flagged Quiet ρ
monad02 712 21 7 33 % 2 7 of 10 0.76 (n 557)
monad03 712 0 0 0 0 of 10 0.80 (n 557)
monad04 712 0 0 0 0 of 10 0.77 (n 557)
monad05 712 0 0 0 0 of 10 0.82 (n 557)
monad06 683 48 6 12 % 5 6 of 10 0.90 (n 528)
monad07 472 158 1 1 % 0 6 of 10 0.39 (n 364)
monad08 472 118 2 2 % 0 0 of 10 0.62 (n 364)
monad09 472 387 121 31 % 0 6 of 10 0.78 (n 364)
monad10 472 83 0 0 % 0 1 of 10 0.52 (n 364)

Bystander devices against the envelope

Bystanders are advertisers with no lab identity; our own handsets are counted apart. The first ten minutes of every host-session are dropped because a new session re-salts every hash. The level is log2((n + 1) / (floor + 1)) against each receiver's own empty-night count, through the same floor rules, edges and receiver bootstrap as the CSI methods. It counts phones, not bodies.

Bucket agreement between env_inj and ble_bystanders on shared minutes: κ on four buckets, κ on the two-level collapse (empty+low against occupied+high), and the 2×2 of that collapse. The design's reading: agreement on quiet and disagreement on active means Bluetooth counts phones and the envelope counts bodies.
Scope Minutes Same bucket κ (4) κ (2) Both quiet Envelope only Bluetooth only Both active
2026-08-26 151 30 % 0.04 0.15 77 44 13 17
2026-08-29 62 40 % -0.05 0.00 40 22 0 0
2026-08-31 31 29 % 0.00 0.00 13 18 0 0
2026-09-01 327 22 % -0.03 -0.04 112 184 16 15
2026-09-02 611 40 % -0.01 0.02 299 241 36 35
2026-09-03 652 64 % 0.06 0.02 516 128 5 3
2026-09-04 879 78 % 0.06 0.08 809 56 10 4
2026-09-05 533 66 % 0.00 0.00 445 88 0 0
2026-09-06 582 39 % 0.00 0.00 406 176 0 0
2026-09-07 645 74 % 0.01 0.04 595 49 0 1
2026-09-08 500 89 % -0.00 0.00 477 23 0 0
2026-09-09 712 78 % -0.00 0.00 680 32 0 0
all 5685 63 % 0.05 0.07 4469 1061 80 75

Temperature against the empty floor

Per receiver-hour, the node temperature from the fleet export beside the hour's median raw statistic (dB), its level and its time-in-session. The fit is a slope in dB per degree over certified-empty hours with a bootstrap over nights, and a second slope against time-in-session. Hours within a night are serially dependent, so there is no p-value and the interval is over nights.

Per receiver over certified-empty hours: the slope of the raw env_inj statistic in dB per degree with a 5–95 % bootstrap over nights, and the slope against hours since the segment started. A floor that moves with temperature and not with time-in-session is thermal; the reverse is the radio settling. Fewer than 2 nights prints no interval.
Receiver Hours Nights Temp range (°C) dB per °C 5–95 % dB per hour in session 5–95 %
monad02 32 6 1.3 +0.0083 -0.0102 to +0.0242 +0.0390 -0.0070 to +0.0919
monad03 32 6 1.9 +0.0088 +0.0007 to +0.0118 +0.0057 -0.0304 to +0.0358
monad04 32 6 2.8 +0.0116 -0.0077 to +0.0161 +0.0278 +0.0028 to +0.0672
monad05 34 7 2.2 +0.0035 -0.0093 to +0.0136 +0.0143 -0.0114 to +0.0701
monad06 32 6 2.3 +0.0061 -0.0029 to +0.0094 -0.0105 -0.0249 to +0.0253
monad07 26 5 1.3 +0.0106 +0.0014 to +0.0174 -0.0629 -0.1262 to -0.0038
monad08 28 6 1.4 +0.0045 -0.0021 to +0.0112 -0.0533 -0.1243 to +0.0296
monad09 26 5 1.0 +0.0052 -0.0001 to +0.0064 +0.0049 -0.0163 to +0.0149
monad10 26 5 1.6 +0.0034 -0.0042 to +0.0088 +0.0391 +0.0045 to +0.1319

JSON: days · agreement · nights · false alarms · receivers · bystanders · temperature · episodes