Staged skill against the gauge

The correction is built in three stages - Linear Scaling (LS), then LS + Empirical Quantile Mapping + a GPD tail (LSEQM), then a CNN refinement (LSEQM+DL). It is scored two ways: out-of-sample against the 172 BMKG stations, which are independent of the fitting but not of the reference dataset (CPC-UNI ingests BMKG-derived GTS reports, so the two share some source observations), and in-sample against the CPC-UNI target the correction was trained on. Together they show the marginal distribution moving to the gauge while the day-by-day timing does not.

What each stage adds

Each stage moves the metrics matched to its design dimension and leaves the others alone - which is why the pipeline is built in three steps, not one.

Skill by metric

Pick a reference, then a metric: the three stages side by side against the perfect-agreement target. The CPC-UNI reference adds the temporal-skill metrics that only exist in-sample.

· · perfect agreement at . Best stage shaded in the tables below.

Out-of-sample: vs 172 BMKG stations

The BMKG stations are held out of the fitting entirely, so this is an out-of-sample test. They are not fully independent of the reference dataset, however: CPC-UNI is a gauge analysis that ingests BMKG-derived GTS reports, so the two share some source observations. Three pillars move to target; event detection is a designed trade-off (unpacked in detection by threshold).

In-sample: vs CPC-UNI (the calibration target)

The full two-tier picture, including the Temporal Skill rows that live only in-sample. LS has zero bias by construction here; LSEQM/LSEQM+DL slightly overshoot CPC-UNI at the upper tail - yet match BMKG almost exactly, because CPC-UNI itself under-catches heavy rain.

The pattern in one place, and the two tables above are against different references, so read them separately. Against the independent BMKG stations the corrected product lands close to the gauge on the distributional pillars: the standard-deviation ratio reaches 1.00 and the Q99 ratio 1.01. Against CPC-UNI, the dataset the correction was fitted to, the same ratios overshoot to 1.15 and 1.20. Timing does not improve against either: daily Pearson r at the native window holds near against CPC-UNI and against BMKG, both built the same way - a median across the reference's own units (land pixels for CPC-UNI, stations for BMKG) within each dekad, then averaged over the 36 dekads - and RMSE and NSE, which are computed against CPC-UNI only, do not improve. Why the timing track stays flat is the subject of [the timing ceiling](./ceiling); part of it is a [calendar-window artefact](./window) in the BMKG comparison specifically.