Sparse-BLE-cadence — where (if anywhere) does CSI earn its keep?
v2 found fused ~= BLE-only when BLE is dense. This axis sweeps the BLE advertising cadence (1-80 coarse frames = ~1-80 s) and compares, per cadence, three estimators against true occupancy (3 seeds x 2 target floors, source-calibrated CSI map):
- CSI-only (no anchor): flat 1.39 persons (cadence-independent).
- BLE-held (device-count sampled at ticks, zero-order-hold between): 0.77 at 1 s, rising to 2.68 at 80 s as the held value goes stale.
- fused (CSI shape + BLE level): 0.77 at 1 s, rising to 2.01 at 80 s.
The naive fusion is dominated at both ends.
- Dense BLE (<~7 s): held-BLE <= fused (0.75-0.94 vs 0.89-1.26). CSI's shape adds noise to an already-good anchor — confirms the v2 "fused ~= BLE-only".
- Sparse BLE (>~12 s): plain CSI-only (1.39) beats both held-BLE and fused. When BLE is very stale, you are better off ignoring it and trusting the (drifted) CSI map than anchoring to a stale count.
- fused beats held-BLE only past ~25 s (CSI's delta helps vs a very-stale anchor), but never beats the best-of-{BLE, CSI} at any cadence.
The honest lesson. CSI's distinct value is not an always-on blend improvement — it is as a fallback when the BLE anchor goes stale. The right architecture is a confidence-weighted switch: trust the BLE device-count while it is fresh (it is the better estimator at realistic cadences), and fall back to the CSI map once the anchor exceeds a staleness threshold (~10-15 s here). The always-anchor offset-hold fusion tested here carries stale-BLE error into the sparse regime and is therefore dominated. This sharpens the thesis fusion story: the modalities are complementary in time (BLE = accurate-but- intermittent absolute; CSI = continuous-but-drifting relative), and the contribution is a switching rule, not a Kalman-style constant blend.
Caveats: the CSI map here is the cross-floor transferred (drifted) map (MAE 1.39) — a per-floor- adapted CSI map would raise CSI-only's floor and shift the crossover; the BLE device-counter is modelled (p_detect+Gaussian), not measured; 3 seeds, 2 target floors, test-lab/ResPlan geometries. Next: implement
- test the staleness-switch fusion, and a per-floor-adapted CSI map.