Skip to main content
v2026.11,858 entries · CC-BY 4.0

Brier Score: Formula, Worked Example and How to Interpret It

The Brier score is the mean squared error of probability forecasts. Formula, worked example, the benchmark to beat, and Excel, R and Python code.

Written and maintained by CASRAI Editorial Board

Last updated

The Brier score is the mean squared difference between a predicted probability and what actually happened. It runs from 0 to 1 for a yes/no outcome, and lower is better. The number only means something next to a reference line: a model that gives every case the observed event rate already earns a score of p(1-p), so a “low” Brier score on a rare event can still be no better than ignoring your predictors.

What is the Brier score?

The Brier score measures the accuracy of probability forecasts for events that either happen or do not. scikit-learn describes it as “the mean squared difference between the predicted probability and the actual outcome”, and as a strictly proper scoring rule, meaning a forecaster minimises the expected score only by reporting their true belief. Brier (1950, Monthly Weather Review) is the original reference. It is also used to evaluate clinical prediction models and machine-learning classifiers.

It is “calculated like MSE” (mean squared error), but the forecast is a probability between 0 and 1 and the observation is 0 or 1. A perfect forecaster scores 0; the worst possible binary forecaster, who says 100% for everything that does not happen and 0% for everything that does, scores 1.

Brier score formula

For a binary outcome, with N cases:

BS = (1/N) × Σ (pi − yi)²

  • N: the number of forecasts (cases).
  • pi: the predicted probability that case i has the event, between 0 and 1.
  • yi: the observed outcome, 1 if the event occurred and 0 if not.
  • Σ: sum over all N cases.

Multiclass Brier score

With more than two classes the squared error is summed over classes as well: BS = (1/N) × Σi Σc (yic − pic)², where yic is 1 if case i belongs to class c. In scikit-learn this version ranges from 0 to 2, not 0 to 1, and the library only rescales by one half for the binary case by default. Never compare a multiclass value to a binary one.

Worked example with the arithmetic shown

Four patients, a model that outputs a risk, and the observed outcomes (this is the same four-case example used in the scikit-learn documentation):

Case Predicted p Observed y (p − y) (p − y)²
1 0.1 0 0.1 0.01
2 0.9 1 −0.1 0.01
3 0.8 1 −0.2 0.04
4 0.3 0 0.3 0.09

Sum of squared errors = 0.01 + 0.01 + 0.04 + 0.09 = 0.15. Divide by N = 4: Brier score = 0.15 / 4 = 0.0375.

Now turn each forecast into a hard yes/no at a 0.5 threshold (cases 2 and 3 become 1, cases 1 and 4 become 0). Every call is correct, so the score is 0. The same predictions score 0.0375 as probabilities and 0 as labels: the Brier score penalises confidence that is not fully certain, which is why it must be computed on the probabilities and never on thresholded classes.

What is a good Brier score?

There is no universal cut-off. A value is only good relative to the event rate in your data. Two reference forecasts bound the problem:

  • Predicting 0.5 for every case scores 1/4 = 0.25 whatever the event rate.
  • Predicting the overall prevalence p for every case scores p − p² = p(1 − p) (Hoessly, 2025). At a prevalence of 10% that is 0.09.
Event rate (prevalence) Score of the “predict the prevalence for everyone” forecast, p(1 − p)
1% 0.0099
5% 0.0475
10% 0.0900
20% 0.1600
30% 0.2100
50% 0.2500

(Each row is computed as p × (1 − p).) A model with a Brier score of 0.09 on data with a 10% event rate has done no better than a constant forecast that uses no predictors at all. The same 0.09 on a 30% event rate beats the 0.21 benchmark clearly.

To express this as one number, divide by the benchmark: 1 − BS / [p(1 − p)]. In the worked example the event rate is 2 of 4 = 0.5, the benchmark is 0.25, and 1 − 0.0375 / 0.25 = 0.85. A value of 0 means no better than the benchmark, and 1 means perfect.

Reading guidance

Result How to read it
Lower than the p(1 − p) benchmark The predictions carry information beyond the overall event rate.
Equal to or above the benchmark No gain over giving everyone the average risk.
Lower on a different dataset Not comparable unless the event rates match; the benchmark moves with prevalence.
Exactly 0 Reachable only if every true risk is 0 or 1; it is not a realistic target for most clinical models.

Assumptions and common mistakes

Hoessly (2025, arXiv preprint) lists several misconceptions about the Brier score:

  • “A score of 0 means a perfect model.” The score is 0 under perfect predictions only if every true risk is 0 or 1. If outcomes are genuinely uncertain, even the ideal model scores above 0.
  • “Lower is always better across datasets.” Lower is better on the same data. Across datasets the event rate changes the benchmark.
  • “A low score means good calibration.” In the paper’s words, “A low Brier score does not necessarily indicate good calibration of a model.” Check calibration separately, for example with calibration-in-the-large and a calibration curve.

Other mistakes: scoring thresholded class labels instead of probabilities, and mixing binary and multiclass scales (0 to 1 versus 0 to 2).

Brier score vs calibration, AUC and NRI

Discrimination (can the model rank cases that have the event above those that do not) and calibration (do predicted probabilities match observed frequencies) are different properties, and the Brier score blends both into one squared-error number. The ROC curve and AUC look only at ranking, so a model can have a strong AUC and a poor Brier score if its probabilities are systematically too high or too low. The Brier score is also one of the measures recommended instead of the net reclassification index: see net reclassification improvement for why poor calibration can make a model look better under that metric. If the model is used to flag patients, the positive predictive value and spectrum bias in your sample matter for how the probabilities generalise.

How to report a Brier score

State the number, the sample size, the event rate and the benchmark it should be read against. Example wording:

The Brier score of the model was 0.0375 (N = 4, event rate = 50%; reference score for a constant forecast = 0.25).

When you can resample the data, add a confidence interval for the score, and report calibration alongside it rather than relying on the Brier score alone. Cite Brier (1950) for the score itself.

How to calculate the Brier score in Excel, R or Python

All three give 0.0375 on the worked example.

Excel

Put the observed outcomes in B2:B5 and the predicted probabilities in C2:C5, then:

=SUMXMY2(B2:B5, C2:C5) / COUNT(B2:B5)

R

y <- c(0, 1, 1, 0)
p <- c(0.1, 0.9, 0.8, 0.3)
mean((p - y)^2)   # 0.0375

Python

from sklearn.metrics import brier_score_loss
y_true = [0, 1, 1, 0]
y_prob = [0.1, 0.9, 0.8, 0.3]
brier_score_loss(y_true, y_prob)   # 0.0375

If you pass hard labels instead of probabilities to brier_score_loss you get the thresholded score (0.0 in this example), not the probability score.

FAQ

Is a lower Brier score better?

Yes. Lower values mean the predicted probabilities were closer to the outcomes. Compare it to the p(1 − p) benchmark for your event rate before calling it good.

What is the range of the Brier score?

0 to 1 for a binary outcome. For the multiclass sum in scikit-learn the range is 0 to 2.

Is the Brier score the same as mean squared error?

It is calculated like mean squared error, applied to probability forecasts and 0/1 outcomes.

Does a low Brier score mean the model is well calibrated?

Not necessarily. Assess calibration separately with a calibration curve and calibration-in-the-large.

Why is the Brier score called a proper scoring rule?

Because its expected value is optimised by reporting your honest probability, so it cannot be gamed by shading forecasts. Gneiting and Raftery (2007) treat strictly proper scoring rules formally.

Sources

Checked 2026-10-29.

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Ask CASRAI · free to try

Ask about Brier Score: Formula, Worked Example and How to Interpret It

Ask your first 2 questions free below. Subscribers get 150 a day for $29 a month.

An AI assistant specialized in research administration. It cites the sources behind every answer, labels web answers and says when it can't answer.

Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.

Works on this site and inside Claude, Cursor and the AI tools you already use.

Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →

Ask CASRAI · Regulatory Radar

Research-admin question? Get an answer that links its sources.

An AI assistant specialized in research administration. Every answer links its sources to check before you act. 2 questions free, no account. $29/month after.

  • Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.
  • Every answer numbers its sources and links each one, so you can check the source yourself.