Question
Does the CSI occupancy→amplitude relationship learned on one floor transfer to other floors, or does it drift with geometry — and by how much?
This is the in-silico version of the cross-session drift that motivates the whole thesis (ble-periodic-calibration). Wi-CaL (Wi-CaL: WiFi Sensing and Machine Learning Based Device-Free Crowd Counting and Localization ↗) reports within-session MAE 0.13–0.18 vs leave-one-session-out 0.35–0.41 — a large environmental-drift penalty. We reproduce the geometric component of that penalty across the ResPlan public dataset of real apartments, holding everything else (protocol, body model, bands) fixed.
What we already know
- csi-static-occlusion established the per-floor method (CV rises, mean falls, crossover is band-dependent) and that this in-room geometry is variance-dominated.
- The ResPlan apartments differ widely in room count and area (e.g.
resplan-12439has a 135 m² living space + 4 bedrooms; others are compact) — a natural geometry-diversity axis. - The reduction (
csi_occupancy_crossover.py) already computes CV(N), the slope, and the crossover; the new work is the cross-floor comparison the analysis-writer assembles.
Prerequisites (before dispatch)
- A Tx/Rx link per floor. Each ResPlan floor has walls but no device layout. Place a link
(1 Tx + ≥2 Rx spanning rooms) per floor via
gis_create_experiment+gis_place_device(mirrorcsi-synth-corridor-link). Until placed, scene staging fails "no link". - Scene-stage check per floor (
scenegeom→ walls + Tx/Rx) before the full grid.
What the supervisor does
Fan out exp-csi-static over grid × replications (6 floors × 6 occupancy × 2 bands = 72 runs),
local CPU first; then a cross-floor reduction. The analysis-writer must:
- Confirm per-floor scene + scalar floor (no DB call in-container).
- Reduce per-floor CV(N) and report the cross-floor slope distribution + leave-one-floor-out MAE inflation (the drift metric).
- Cite per-run artefacts by
sim://URI; name any floor whose scene failed to stage.
Figure render request
csi_cross_geometry — small-multiples of CV(N) per floor (one line per band) + a summary panel
of the per-floor slope with the cross-floor spread highlighted.
Out of scope
- Real-data calibration (
exp-csi-calibration). - Temporal dynamics (c-csi-crowd-temporal). - Through-wall regime (c-csi-through-wall-blockage) — here links are placed comparably per floor.
Expected interpretation
- Drift demonstrated (slope varies, held-out MAE inflates) → "CSI occupancy-sensitivity is geometry-dependent across real layouts; a per-environment model does not transfer — the in-silico case for periodic BLE recalibration." Feeds ble-periodic-calibration.
- Robust proxy (slope ~invariant) → "a normalised CV-based density proxy generalizes across ResPlan geometries" — a stronger, more surprising result worth foregrounding.
- Criterion 1 fails on some floors → a scene-bridge finding (which ResPlan geometries break
scenegeom), not a research result.
Notes (for future sessions)
- The
sim_params.replicationsblock is the IP-099 replication table (one row per floor here); the bridge path runs onesim sweepper floor (n_agents × band grid on that floor's base) then attaches all runs to the session. A small driver can place the per-floor links from this list. - Natural follow-ons: add
kind=dataset/zindfloors for a second dataset; add a furnished-floor seated variant once IP-092 occupiables exist on these floors. - Multi-seed (2026-06-09).
seeds: [0, 1, 2](was single-seed) per the 2026-06-08 diary next-step: the single-seed result left the ×3.8 vs ×7.7 per-band LOFO-drift inflation unexplained. Report the LOFO MAE as mean ± spread across seeds so the band-gap magnitude carries an uncertainty before it is quoted in the evaluation chapter. (ZInD floors remain the other half of that next-step — data-gated.)