Match the simulator's barometer noise to a real LPS25HB

The generator added 0.05 hPa of measurement noise where a real board shows
0.0224 hPa as the sd of the change between 30 s samples. Twice the noise
flatters any smoother tested against it and understates the skill available
at short lead, which is where the pressure heads were already weakest.

Correcting my own earlier claim: I reported the simulator's pressure as 60x
too noisy. That figure came from comparing the old local database, whose rows
are hourly-tier aggregates spanning 251 days, against 30 s rows from the
station. Generated like for like at matched cadence the gap is 1.9x, not 60x,
and the simulator was never the blocker on pressure work that I described.

A gap remains after this change: press_slp still steps 0.0415 hPa per 30 s
against the station's 0.0224. That residue is the synoptic OU process moving
faster than Cambridge did over these four days, which is a weather-realism
question rather than a sensor one. Four days of one room is not enough to
retune a synoptic model against, so it is left alone and recorded here.
This commit is contained in:
2026-08-19 19:16:57 +01:00
parent 40f934901d
commit b9a468542d
+5 -1
View File
@@ -156,7 +156,11 @@ def generate(days: float, step_s: int, lat: float, lon: float,
rh_sensor = rh rh_sensor = rh
press_station = press_slp / (1.0 + 0.0) - 1.8 # nominal 15 m offset press_station = press_slp / (1.0 + 0.0) - 1.8 # nominal 15 m offset
press_station += 0.05 * rng.normal(size=n) # 0.02 hPa, measured on a real LPS25HB as the sd of the change between
# 30 s samples. The 0.05 this used to carry made simulated pressure about
# twice as noisy as the real thing, which flatters any smoother tested
# against it and understates the skill available at short lead.
press_station += 0.02 * rng.normal(size=n)
return { return {
"ts": ts, "temp": temp, "temp_raw": temp_raw, "ts": ts, "temp": temp, "temp_raw": temp_raw,