PBC Weather Forecasts: Valid Probabilities Are Not Enough

黎 浩然/ 22 10 月, 2026/ 大语言模型/LARGELANGUAGEMODEL/LLM, 教程/TUTORIAL, 计算机/COMPUTER/ 0 comments

A more confident weather forecast is not necessarily a better probability forecast. PBC targets systematic errors in existing forecasts rather than building another complete weather model. The reusable engineering questions concern valid probability outputs, avoiding observations unavailable at training time, and choosing an evaluation score.

Contents
  1. Separate the corrector, its input model and a teaching example
  2. Clipping each value cannot validate an ordered distribution
  3. One event score differs from long-run probability reliability
  4. Ordered-category scoring makes distance matter
  5. A past target can still contain future information
  6. Fourteen checks cover scores and input availability
  7. Read paper results together with their conditions
  8. Sources and article date

Google News carried the story on October 22. Microsoft’s research listing and the Nature paper date the public research to October 14. This is an analysis of recent research, not a claim that the feed’s later date marks a new release. 中文版.

Separate the corrector, its input model and a teaching example

The original Microsoft account concerns the two-to-six-week subseasonal range. The published Nature paper describes learning probability corrections from historical forecasts and observations, combining two complementary correctors after constraining their outputs to valid cumulative distributions.

This is not a promise to determine rain with certainty on any particular future day. Probabilities refer to defined spatial and temporal targets. The program below tests probability structure, scoring and availability timestamps. It downloads no weather data, trains no corrector and reproduces no paper benchmark.

Keep three forms of evidence distinct: the underlying model forecast, the corrector’s actual output and mathematical results from constructed local fixtures. A script computing a score correctly does not establish that a particular corrector improves real forecasts.

Clipping each value cannot validate an ordered distribution

Consider five categories ordered from low to high. The cumulative vector F=(0.2,0.4,0.6,0.8,1) gives the probability of falling in the current category or a lower one. Values must lie between zero and one, never decrease as the category widens, and end at one to cover all categories.

Every component of F=(0.5,0.4,0.7,0.8,1) is within bounds, yet the vector is invalid: the second threshold includes more outcomes while receiving less probability. Clipping or checking each component’s range cannot establish the ordering requirement.

Category probabilities come from successive cumulative differences. A decreasing cumulative value creates a negative category probability. A post-processing interface should identify which representation it accepts. Calling both representations a probability vector and applying the same normalization obscures a meaningful structural difference.

Category probability:successive CDF differences
Valid:0.2≤0.4≤0.6≤0.8≤1
Invalid:0.5>0.4 creates a negative difference
Bounds alone are insufficient
Original probability-structure diagram: range,order and coverage are separate checks.

One event score differs from long-run probability reliability

Construct ten binary outcomes, six of which occur. System A always predicts 0.9 and system B always predicts 0.6. At threshold 0.5 both predict occurrence and achieve the same 60% classification accuracy. Their mean squared probability errors are 0.33 and 0.24, respectively, making B better on this artificial set.

Thresholding discards confidence information. The example does not establish that constant 0.6 predicts actual weather or that ten observations suffice to assess calibration. A claim that events assigned 60% occur about 60% of the time requires sufficient data and comparable groups, seasons and targets.

Conversely, a single observed occurrence cannot establish that probability 0.9 is necessarily worse than 0.6. Probabilistic evaluation depends on a collection of observations and a declared score. Selecting screenshots of successful weather events cannot establish overall forecast quality.

Ordered-category scoring makes distance matter

For an observation in the third category, the cumulative indicator is O=(0,0,1,1,1). Define the illustrative ranked probability score as the sum of squared components of F−O. The uniform cumulative forecast scores 0.4, whereas F=(0.1,0.2,0.8,0.9,1) scores 0.1.

With a fixed reference, skill=1−total model error/total baseline error. This single-observation example yields 0.75. That is a relative error improvement, not 75% of weather predictions being correct. Skill can be negative when the model is worse than the baseline; a zero baseline error requires an explicit denominator policy.

A real evaluation aggregates spatial and temporal targets with declared weights. Averaging arbitrary per-observation ratios is not generally equivalent to taking a ratio of total errors. Changing the reference, time window or weights changes the comparison being made, even if both results carry the label skill.

A past target can still contain future information

A target date before issuance does not by itself establish leakage-free training. Suppose issuance is at time 10 and an observation concerns target time 8 but is published only at 12. Using it to train at 10 still uses future information. Inspect availability time rather than only the date the observation describes.

The code supplies three fictional records. A record available at 9 can enter a time 10 training set; one available at 12 cannot. Unknown availability also does not become available by default. This is an input contract that a retrospective replay can easily overlook.

Real data can be revised. Distinguish the final version accessible today from the version actually released at the historical time. Substituting final observations or revised base forecasts into a historical experiment can exaggerate what the system could genuinely have predicted then.

Target time 8
RecordA available9 → usable at issuance10
RecordB available12 → unavailable at issuance10
A past target is not necessarily available data
Original availability timeline for historical replay.

Fourteen checks cover scores and input availability

A single-observation score comparison cannot establish which forecast is better calibrated over time. Reliability and the concentration of an individual prediction require evidence across observations.

The standard-library program checks cumulative monotonicity, the final value, two score examples, equal classification accuracy with unequal probability error, and an availability-time filter. Category indices must be integers; Boolean values are rejected rather than accepted as integer categories. Every number is constructed. It runs neither PBC nor a weather-forecasting service.

# Constructed probability checks; this does not train or run PBC.
from math import isclose,isfinite

def valid_cdf(f):
    return bool(f) and all(isfinite(x) and 0<=x<=1 for x in f) and f[-1]==1 and all(a<=b for a,b in zip(f,f[1:]))
def rps(f,observed_bin):
    if not valid_cdf(f) or type(observed_bin) is not int or not 0<=observed_bin<len(f):
        raise ValueError('valid CDF and category required')
    return sum((p-float(k>=observed_bin))**2 for k,p in enumerate(f))
uniform=(.2,.4,.6,.8,1.)
focused=(.1,.2,.8,.9,1.)
assert valid_cdf(uniform)
assert not valid_cdf((.5,.4,.7,.8,1.))
assert not valid_cdf((.2,.4,.6,.8,.9))
assert isclose(rps(uniform,2),.4)
assert isclose(rps(focused,2),.1)
assert isclose(1-rps(focused,2)/rps(uniform,2),.75)
assert rps((.8,.9,.95,.98,1.),2)>rps(uniform,2)
y=[1]*6+[0]*4
brier=lambda p:sum((p-z)**2 for z in y)/len(y)
assert isclose(brier(.9),.33)
assert isclose(brier(.6),.24)
assert sum((.9>=.5)==bool(z) for z in y)==sum((.6>=.5)==bool(z) for z in y)==6
rows=[{'target':8,'available':9},{'target':8,'available':12},{'target':7,'available':None}]
allowed=[r for r in rows if r['available'] is not None and r['available']<=10]
assert allowed==[rows[0]]
try:
    rps((.7,.4,.8,.9,1.),2)
except ValueError:
    pass
else:
    raise AssertionError('decreasing CDF accepted')
for bad_bin in [1.5,True]:
    try:
        rps(uniform,bad_bin)
    except ValueError:
        pass
    else:
        raise AssertionError('noninteger category accepted')
print('14 probability and availability checks passed')

The example implements neither the paper’s correctors nor its distribution-projection algorithm. Simply turning an invalid CDF into a valid one would not reproduce the method. Structural validity is necessary; retaining useful predictive information after a transformation needs a separate evaluation.

Read paper results together with their conditions

The paper’s evaluation includes a global 1.5° grid, quintile targets and week 3 (19–25 days ahead) and week 4 (26–32 days ahead) windows, scored with RPSS against a climatological reference. Its authors report improved skill after correction. That is the authors’ evaluation, not an independent reproduction by this site, and cannot be rewritten as daily certainty a month in advance.

Transfer across regions, variables and seasons still requires checks of base-model version, observation availability, baseline and time splits. Improvement over historical years does not automatically settle performance in every new region or extreme case. Aggregate scores can also hide uncertainty in sparsely sampled subsets.

For an engineering comparison, hold the underlying forecast fixed and compare its uncorrected output, a simple reference and the candidate corrector using identical issuance dates and targets. Establish the absence of leakage before comparing scores. Otherwise an impressive result may reflect access to better information rather than a better method.

The earlier pos_weight and probability interpretation article considers how training weights alter score meaning. This article adds the distribution representation, scoring reference and historical-data timeline. A value lying between zero and one alone cannot validate all three.

If these probability and timing examples help review a forecasting or calibration pipeline, voluntary support through the section below is welcome. The reusable result separates valid distributions, probability quality and information available at the historical decision time.

Sources and article date

Microsoft research story · Nature paper publishedOctober 14 · Author code repository

Discovered through Google News and checked against the original announcement, published before the planned slot. Examples and diagrams are original teaching material, not a product benchmark or real account operation. The planned article date is 2026-10-22 at 16:00 Beijing time. Scheduling or actual public release is verified separately; a backfilled date does not imply earlier publication.

Support

If the explanations or examples helped you solve a problem or save time, you’re welcome to support this site with a voluntary tip.

WeChat support QR code; click to enlarge
WeChat
Alipay support QR code; click to enlarge
Alipay
Buy Me a Coffee; support this site
Buy Me a Coffee

Click a QR code to enlarge. More options: support page。

Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*