Reference model ladder M0–M8
Nine reference lines: understand, reproduce, beat
There is no single champion model here. There is a public ladder: every rung is a method a learner can follow with pencil and paper, run in this page, and try to beat. The ladder is also the course outline: each rung points to the unit that teaches its math.
这里没有"冠军模型",只有一条公开的阶梯:每一级都是孩子能用纸笔跟上、能在本页运行、能尝试超越的方法。阶梯本身就是课程大纲:每一级都指向教它数学的单元。
Which lines submit every round
Four lines take part in every round as non-competitor participants (REFLINE_M0, REFLINE_M1, REFLINE_M2, REFLINE_M5). They are generated by the scheduled pipeline at 22:15 UTC, after the NWS gridpoint forecast is fetched, and go through the same ledger and the same cutoff (D−1 23:00 UTC = 18:00 EST) as every family. Their errors are public on each round page. They never take a place, a badge or a prize.
四条线以非参赛者身份参加每一轮(REFLINE_M0、REFLINE_M1、REFLINE_M2、REFLINE_M5)。它们由定时流程在 UTC 22:15 抓取 NWS 格点预报后生成,与每个家庭走同一账本、同一截止(D−1 日 23:00 UTC = 18:00 EST)。误差在每轮页面公开;它们不占名次、不拿徽章、不领奖。
- M0 persistence: the last complete climate day, which at the cutoff is D−2.
- M1 climatology: the NCEI 1991–2020 daily normal for the target date.
- M2 NWS raw: the NWS gridpoint forecast high, copied as is.
- M5 linear calibration: a least-squares line through at least 10 past (NWS, official) pairs; with fewer pairs it falls back to M2.
- M0 持续性:最后一个完整气候日,截止时即 D−2。
- M1 气候态:目标日期的 NCEI 1991–2020 日常年值。
- M2 NWS 原值:照抄 NWS 格点预报最高温。
- M5 一次函数校准:用至少 10 对历史(NWS,官方)做最小二乘直线;不足时退回 M2。
The ladder
| Rung | Model | One sentence | Math | Unit |
|---|
Run the ladder on real Boston data
Dataset: 47 consecutive days at Boston Logan, 2026-09-01 to 2026-10-17, daily high in °F. "Forecast" here is a public day-ahead model forecast (Open-Meteo previous-runs archive), used in class as a stand-in for the NWS line; observations are IEM ASOS daily highs (preliminary). Every model walks forward day by day and only sees what was known at the cutoff. Results are computed in your browser by /models/reference_models.js, which is tested against the Python reference implementation.
数据集:Boston Logan 连续 47 天(2026-09-01 至 2026-10-17)日最高温 °F。这里的"预报"是公开的提前一天模式预报(Open-Meteo 历史运行存档),课堂上代替 NWS 线;观测是 IEM ASOS 日最高温(初步值)。每个模型逐日向前走,只看截止时已知的数据。结果由 /models/reference_models.js 在你的浏览器里计算,它已与 Python 参考实现对照测试。
CSV columns: date,obs,nws,normal
| Rung | Model | n | MAE | bias | MAE bar |
|---|
MAE = mean of |prediction − observed| over the scored days. bias = mean of (prediction − observed): positive means the model runs warm. The smallest MAE is in bold. On a short real sample the order can change from window to window; a lower MAE on 37 days is not proof that a method is better in general.
MAE = 评分日上 |预测 − 实测| 的平均;bias = (预测 − 实测) 的平均,正值表示偏暖。MAE 最小者加粗。在短的真实样本上,排序会随时间窗变化;37 天里 MAE 更低,不能证明一个方法普遍更好。
Two rules every rung obeys
1 · Only what was public at the cutoff
For target day i a model may read days up to i−2 and the forecast issued for day i. Day i−1 is not finished at 18:00 EST. The test suite adds +100 to every later observation and checks that no prediction moves (a leak check).
目标日 i 只能读到 i−2 日为止的实测,以及对 i 日发出的预报;i−1 日在 18:00 EST 尚未结束。测试会把之后所有实测加 100,检查预测是否改变(泄漏检查)。
2 · Code and frozen data are public
Anyone can recompute the same score. The JavaScript here and the Python reference give the same MAE and bias on the synthetic season (to four decimals) and on the real 47 days.
任何人都能复算出同一个分数。本页 JavaScript 与 Python 参考实现在合成赛季(四位小数)与真实 47 天上给出相同的 MAE 和 bias。
reference_models.js · bos_logan_47d.json · SOURCES.json · normals_bos_1991_2020.json · Future candidates (not in Season 1)