06-763 · L14

Lecture 14: Uncertainty quantification in machine learning

Week 7, Machine learning and deep learning

Systems and Toolchains for AI Engineers

Systems and Toolchains for AI Engineers
06-763 · L14

The course so far, where we are

The data lowlands L1 to L7: toolchain, databases, pipelines, streams, features The machine-learning highlands L8 to L13: the ML workflow, PyTorch and JAX, architectures, scientific ML L1: The AI-engineering landscape and the modern toolchain The system view of ML, why engineering data is different, and the course stack: Python, uv, Git, notebooks 1 L2: Reproducible environments, version control, and experiment hygiene uv lockfiles, project layout, Git for code and DVC for data, notebook to module, MLflow run logging 2 L3: Relational databases and SQL for engineering time-series PostgreSQL over the Intel Lab sensor data: schemas, indexes, GROUP BY and window functions 3 L4: Columnar storage, Parquet, and DuckDB Row vs column stores, Parquet row groups and predicate pushdown, DuckDB for OLAP queries 4 L5: Dataframes and batch pipelines The Tennessee Eastman plant in pandas and Polars: lazy plans and pipelines that are safe to rerun 5 L6: Streaming concepts and data validation Event time, windows and watermarks for late data; pandera schemas as a gate that fails loudly 6 L7: Features for time-series models Lags, rolling windows and ARX regressors in Polars, fit with numpy.linalg.lstsq 7 L8: The machine learning workflow I, time series Forecasting reactor pressure at several horizons, time-ordered splits and honest baselines in scikit-learn 8 L9: The machine learning workflow II, regression Model families, cross-validation, capacity and learning curves on concrete strength; NARX forecasts 9 L10: The machine learning workflow III, classification, tracking and search A plant fault classifier in scikit-learn, Optuna hyperparameter search, runs recorded in MLflow 10 L11: Tensors, autodiff, training loops, and GPUs PyTorch tensors and autograd, a training loop by hand, devices and dtypes, four models that looked fine 11 L12: Architectures for engineering data: MLP, CNN, and sequence models Matching architecture to structure: CNNs, RNNs and attention; a 1D-CNN for turbofan RUL vs a tabular baseline 12 L13: Scientific machine learning: PINNs, neural ODEs and neural DAEs A PINN in JAX and Optax, a neural ODE in Diffrax and Equinox, a neural DAE with SiNDAE and Pyomo 13 fall-break camp design & experiments? the language-model coast? still being surveyed final projects You are here: L14 how much to trust a prediction N the trail so far the route ahead, not yet fixed
Systems and Toolchains for AI Engineers
06-763 · L14

Roadmap

  1. Why: calibrated intervals that covered 26% on new chemistry
  2. What UQ is: aleatoric, epistemic, and three kinds of interval
  3. Calibration: how to check any uncertainty, before choosing a method
  4. Gaussian processes: what the band promises, and three ways it fails
  5. Bootstrap and ensembles: what the spread measures, and a worked recalibration
  6. Conformal prediction: a guarantee, and the one condition it needs
  7. Models with uncertainty built in: pycse
Systems and Toolchains for AI Engineers
06-763 · L14

Why this matters

Systems and Toolchains for AI Engineers
06-763 · L14

Intervals that held, until the chemistry changed

  • Neural-network force fields: DFT-quality energies, far cheaper
  • Useful only if you know when to trust them
  • Conformal prediction + distances in the network's latent space
  • In distribution: calibrated and sharp; calibration takes minutes against ~11,000 GPU-hours of training
  • Trained on QM9 without fluorine, tested with it: 90% intervals covered 26%

Hu, Musielewicz, Ulissi & Medford, MLST 2022 (CMU ChemE co-authors)

Systems and Toolchains for AI Engineers
06-763 · L14

Three numbers from today

Method Claimed Measured
GP on 5 points, settings by maximum likelihood 95% 78% (median of 200 data sets)
Five-network ensemble, concrete strength 90% 79%, then 90% after one scale factor
Split conformal, strongest mixes held out 90% 56%

All from lectures/l14/figures/make_figures.py

Systems and Toolchains for AI Engineers
06-763 · L14

What uncertainty quantification is

Systems and Toolchains for AI Engineers
06-763 · L14

Uncertainty quantification

Uncertainty quantification: attaching to each prediction a distribution or an interval, together with a claim about how often the truth falls inside it.

  • "42 ± 6 MPa" says nothing on its own
  • "... and intervals stated this way contain the measured strength 90% of the time" can be checked
Systems and Toolchains for AI Engineers
06-763 · L14

Aleatoric and epistemic

Aleatoric: scatter in the data itself, which more data does not remove. Epistemic: what the model does not know yet, which more data in the right place reduces.

  • Practical test: epistemic if the modeler "sees a possibility to reduce" it
  • From structural reliability, carried into ML as reducible against irreducible

Der Kiureghian & Ditlevsen, Struct. Saf. 2009 (paywalled) · Hüllermeier & Waegeman, Mach. Learn. 2021

Systems and Toolchains for AI Engineers
06-763 · L14

Aleatoric and epistemic, live

A Gaussian process band split into a noise part and a model part, with sliders for noise and number of points
Systems and Toolchains for AI Engineers
06-763 · L14

Aleatoric and epistemic, the split depends on the model

  • Concrete strength scatters at fixed proportions, partly from curing temperature
  • No temperature input: that scatter is noise (aleatoric)
  • Temperature as an input: the same scatter is learnable (epistemic)
  • Two more sources for a surrogate:
    • Model inadequacy: "No model is perfect"
    • Code uncertainty: the simulator was not run at this input

Hüllermeier & Waegeman sec. 2.3 · Kennedy & O'Hagan 2001, sec. 2.1, six sources

Systems and Toolchains for AI Engineers
06-763 · L14

Three kinds of interval

Interval Covers Meaning
Confidence the function the procedure covers in repeated use
Credible the function posterior probability
Prediction a new measurement includes the noise
  • "A prediction interval necessarily encloses the corresponding confidence interval"
  • A specimen tested against a 40 MPa spec is a new measurement
  • Every coverage number today is for prediction intervals

Heskes, NIPS 1996 · Gelman et al., BDA3 sec. 1.1

Systems and Toolchains for AI Engineers
06-763 · L14

Why ML makes this hard

  • Training residuals are too small: maximum likelihood "systematically underestimates σ²"
  • Big networks are overconfident: ResNet confidence "substantially higher than its accuracy"
  • ReLU networks extrapolate in straight lines: proved for classifiers, Theorem 3.1
  • No data describes the region without data: every method substitutes an assumption

Laves et al., MIDL 2020 · Guo et al., ICML 2017 · Hein et al., CVPR 2019

Systems and Toolchains for AI Engineers
06-763 · L14

Aleatoric and epistemic, a question

You re-test 50 more cylinders of mixes you already tested. Which uncertainty in the strength prediction for those mixes goes down?

  1. Aleatoric only
  2. Both, equally
  3. Epistemic only
  4. Neither, since the mixes are not new
Systems and Toolchains for AI Engineers
06-763 · L14

Calibration: checking an uncertainty

Systems and Toolchains for AI Engineers
06-763 · L14

Calibration

Calibrated: stated probabilities match what happens; 90% intervals contain the measured value 90% of the time.

  • Coverage: fraction of held-out points inside their interval
  • Reliability diagram: observed against nominal coverage at several levels
  • Below the diagonal: overconfident, intervals too narrow

Kuleshov, Fenner & Ermon, ICML 2018, Eq. 3

Systems and Toolchains for AI Engineers
06-763 · L14

Calibration, sharpness

Sharpness: how narrow the predictive distributions are, a property of the forecasts alone.

  • Goal: "maximizing the sharpness ... subject to calibration"
  • Climatological forecaster: ignore the inputs, always issue the long-run spread
Concrete, 90% intervals Coverage Width
Climatology (training 5% to 95% quantiles) 91% 55.9 MPa
Rescaled ensemble (this lecture) 90% 22.2 MPa

Gneiting, Balabdaoui & Raftery, JRSS B 2007 (author's copy)

Systems and Toolchains for AI Engineers
06-763 · L14

Calibration, proper scoring rules

  • Proper: the expected score is best when the forecast is the true distribution
  • NLL: ; punishes a confident miss; unbounded
  • CRPS: distance between predicted CDF and a step at ; "generalizes the absolute error"
  • Report one of them with coverage and width

Gneiting & Raftery, JASA 2007 (author's copy)

Systems and Toolchains for AI Engineers
06-763 · L14

Calibration, on average and locally

  • 90% overall can be 100% on easy points and 70% on hard ones
  • Consistency: calibrated given the predicted σ
  • Adaptivity: calibrated given the input
  • Good consistency "does not imply a good adaptivity"
  • A held-out region of input space is an adaptivity check

Pernot, APL Mach. Learn. 2023 · Levi et al., Sensors 2022

Systems and Toolchains for AI Engineers
06-763 · L14

Calibration, recalibration and its limit

  • Scaling: multiply every σ by one factor fitted on held-out data
  • Isotonic: a monotone map from predicted to observed probability
  • Both assume future data resemble the held-out data
    • Kuleshov: needs "enough i.i.d. data"
    • Ovadia: temperature-scaling error "increases significantly as the shift increases"
  • Catalysis example: several metrics side by side (Tran et al. 2020, CMU ChemE)

Laves 2020 · Kuleshov 2018 · Ovadia et al., NeurIPS 2019

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes

Gaussian process: a probability distribution over functions, set by a kernel that says how strongly values at two inputs are correlated.

After Rasmussen & Williams 2006, Fig. 2.2 (free online)

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, the predictive variance

  • Far from data, : the band returns to the prior
  • No in it: depends "only on the inputs" (R&W p. 18)
  • At fixed settings, a bad fit gets the same band as a good one
  • Fitted settings bring in "implicitly" (Deringer et al. 2021)
Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, fitting the settings

A Gaussian process fitted to 12 noisy points of a sine curve, with sliders for length scale, signal and noise
Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, failure 1: noise that grows

A Gaussian process with one noise level fitted to data whose scatter grows with x
Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, fixing heteroscedastic noise

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, a scikit-learn trap

  • alpha=array sets a noise variance per training point
  • It does not give the GP a noise model at new inputs
  • WhiteKernel estimates "the global noise level"
  • Input-dependent noise at prediction time needs a model of the noise

scikit-learn user guide, Gaussian processes

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, failure 2: the wrong kernel

A smooth-kernel Gaussian process fitted to a function with a step
Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, the shrinking length scale

  • Smooth truth: about 0.2 to 0.4 at every size
  • Step: 0.088 at 10 points, 0.025 at 320
  • A length scale that "never stops becoming smaller as you add more data" is "a classic sign of model misspecification"
  • GPs "can be miscalibrated in practice"

Duvenaud, kernel cookbook · Capone, Pleiss & Hirche, NeurIPS 2023

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, failure 3: five points

A Gaussian process fitted to five noisy points of a sine curve
Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, how often five points mislead

Training points Median 95% coverage Below 80% Below 50%
5 78% 52% 26%
12 92% 21% 1%
40 95% 0% 0%
  • 200 data sets each, settings by maximum likelihood, exact coverage
  • Little data: "both short and long lengthscales explain the data consistently"
  • GP error bars are Bayesian, not frequentist guarantees

Capone, Lederer & Hirche, ICML 2022 · Fiedler, Scherer & Trimpe, AAAI 2021 · R&W sec. 5.4.1

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, cost and a case

  • Exact inference ; inducing points: "from to " (Titsias 2009)
  • High dimension: the prior "simply says too little" (Binois & Wycoff 2022)
  • Case: a silicon GP potential's predicted error "rises notably" on a path to a defect, and it still misses a minimum DFT finds

Deringer et al., Chem. Rev. 2021, sec. 5.2, Fig. 24 (open access)

Systems and Toolchains for AI Engineers
06-763 · L14

Gaussian processes, what to do

  • Look at the fitted noise; compare with replicate measurements
  • Check coverage by region, not only overall
  • Watch the length scale as data arrive
  • Under about a dozen points: a rough guide, not a 95% statement
Systems and Toolchains for AI Engineers
06-763 · L14

Bootstrap and ensembles

Systems and Toolchains for AI Engineers
06-763 · L14

Bootstrap

Bootstrap: resample the training data with replacement, refit, and use the spread of the refitted models.

  • Estimates the variance of the fit (Efron 1979)
  • Misses the noise: a confidence interval, not a prediction interval
  • Misses the bias: "the bias component ... is negligible" is an assumption (Heskes 1997)
  • "May ... fail entirely when bias is a dominant source of error" (Palmer et al. 2022)
Systems and Toolchains for AI Engineers
06-763 · L14

Deep ensembles

Deep ensemble: several networks that differ only in random starting weights and data order, with their predictions combined.

  • Each sees all the data: "bagging deteriorated performance"
  • Each predicts a mean and a variance, trained on Gaussian NLL
  • The spread alone is the epistemic part only
  • Different starts land in different modes of the loss surface

Lakshminarayanan, Pritzel & Blundell, NeurIPS 2017 · Fort, Hu & Lakshminarayanan 2019

Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, what the spread measures

Ten networks trained on a sine curve from 0 to 1, fanning out beyond 1
Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, the toy results

95% intervals Inside the data Beyond the data
Seeds, spread only 29% 85%
Seeds, spread + noise 93% 93%
Bootstrap, spread only 52% 81%
Bootstrap, spread + noise 94% 87%
  • Inside: members agree to 0.021; the noise is 0.1
  • Beyond: spread 0.63 against error 0.61, in this 1-D example
Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, the evidence

  • Best baseline: "deep ensembles seem to perform the best across most metrics" (Ovadia 2019); Scalia 2020, Tan 2023 agree for molecules
  • Overconfident in level: "consistently underestimates uncertainty" (Hirschfeld 2020); "require to be calibrated for each system" (Kahle & Zipoli 2022)
  • Weakest where it matters: scaffold-split coverage "always underestimated" (Scalia)
  • Cost: times one model

A useful relative signal; not an interval until it has noise and a check.

Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, a question

Five ensemble members agree to three decimals at an input far outside the training data. What does that tell you?

  1. The prediction is accurate there
  2. The noise is small there
  3. The model has seen similar inputs
  4. Only that the members extrapolate alike
Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, recalibrating on concrete

  • Concrete strength, Lecture 9's network, five seeds
  • Grouped split: random 20% of mixes held out
  • Extrapolation split: lowest water/cement 20% of mixes held out
  • A quarter of the training mixes set aside to calibrate

Same fix four times: σ scaling (Laves), STD scaling (Levi), Musil et al. 2019, Kellner & Ceriotti 2024 Eq. 8

Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, recalibrating on concrete, live

Negative log likelihood against the scale factor, and a reliability diagram for the concrete ensemble
Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, recalibrating on concrete, results

90% intervals Grouped raw Grouped × 1.66 Extrap. raw Extrap. × 1.44
Coverage 79% 90% 89% 96%
Width (MPa) 13.4 22.2 35.3 50.9
NLL 3.72 3.22 3.74 3.81
  • Grouped: most of is the missing noise (replicate scatter 5.0 MPa)
  • Extrapolation: spread already large; the factor over-widens
  • Rank correlation of error with spread: 0.29 and 0.17
Systems and Toolchains for AI Engineers
06-763 · L14

Ensembles, what to do

  • Never report the spread alone as an interval
  • Recalibration costs a third data split
  • Fit on data like where the model will be used
  • Otherwise report coverage on a held-out region, and expect error in either direction
Systems and Toolchains for AI Engineers
06-763 · L14

Conformal prediction

Systems and Toolchains for AI Engineers
06-763 · L14

Split conformal prediction

Split conformal prediction: set the interval width from the model's errors on a held-out calibration set, so it covers a new point with a stated probability.

  1. Fit any model on the fitting set
  2. Scores on calibration points:
  3. = the -th smallest score
  4. Interval:

Lei et al., JASA 2018 (CMU) · Angelopoulos & Bates

Systems and Toolchains for AI Engineers
06-763 · L14

Split conformal prediction, the guarantee

Exchangeable: the joint distribution does not change if the points are reordered; calibration and test points were generated the same way.

  • Any model, any distribution, any finite
  • At you need , or the interval is infinite
Systems and Toolchains for AI Engineers
06-763 · L14

Split conformal prediction, live

A conformal band on a toy problem with noise growing in x, and a histogram of calibration scores
Systems and Toolchains for AI Engineers
06-763 · L14

Conformal prediction, marginal not conditional

  • Split conformal: "the width is exactly constant over x" (Lei sec. 5.2)
  • Toy, 90% target: 100%, 95%, 82% by third
  • Exact conditional coverage cannot be had without assumptions (Vovk 2012; Foygel Barber et al. 2021)
  • Normalized scores : 94%, 91%, 90%
  • CQR: conformalize quantile regressions, "fully adaptive to heteroscedasticity" (Romano et al. 2019)
Systems and Toolchains for AI Engineers
06-763 · L14

Jackknife+ and CV+

  • Split conformal spends data on calibration
  • Jackknife+: leave each point out, refit, record
    • Interval from the quantiles of
  • CV+: the same with folds
  • Guarantee , and the 2 is tight; "in practice" about
  • Plain jackknife: coverage "may actually vanish"
  • Cost: or fits. Small data, cheap model: CV+. Otherwise split

Barber, Candès, Ramdas & Tibshirani, Ann. Stat. 2021

Systems and Toolchains for AI Engineers
06-763 · L14

Conformal prediction on concrete

90% intervals Grouped Width Extrapolation Width
Split conformal 94% 20.9 56% 13.9
Normalized by ensemble spread 90% 22.0 95% 49.4
CV+ 98% 23.0 74% 20.1
Climatology 91% 55.9 54% 43.7
  • Grouped: every conformal method meets 90%, as guaranteed
  • Extrapolation: split conformal 56%; widths in MPa
Systems and Toolchains for AI Engineers
06-763 · L14

Conformal prediction, out of domain

  • Strongest mixes are not exchangeable with calibration mixes: held out because different
  • The guarantee did not fail; its condition was not met
  • Toy, window sliding out: 99%, 94%, 86%, 56%, 16%
  • Normalizing rescued concrete only because the spread grew there; toy: 23%
  • The fluorine case from the opening is this failure
  • Weighted conformal needs the likelihood ratio and overlapping support (Tibshirani et al. 2019); beyond exchangeability, a bound you cannot compute (Barber et al. 2023)
Systems and Toolchains for AI Engineers
06-763 · L14

Conformal prediction in code, MAPIE

from mapie.regression import SplitConformalRegressor, CrossConformalRegressor

split = SplitConformalRegressor(model, confidence_level=0.9, prefit=True)
split.conformalize(X_cal, y_cal)
y_pred, y_int = split.predict_interval(X_test)

cvplus = CrossConformalRegressor(model, confidence_level=0.9,
                                 method="plus", cv=GroupKFold(10))
cvplus.fit_conformalize(X_train, y_train, groups=groups_train)
  • Version 1 renamed MapieRegressor and alpha; most tutorials use the old names

MAPIE docs · Taquet et al. 2022

Systems and Toolchains for AI Engineers
06-763 · L14

Conformal prediction, a question

An optimizer proposes mixes using a conformal surrogate. Which condition of the 90% guarantee does that break?

  1. The noise must be Gaussian
  2. Test points must be exchangeable with calibration points
  3. The model must be calibrated first
  4. The calibration set must exceed 1,000 points
Systems and Toolchains for AI Engineers
06-763 · L14

UQ built into models: pycse

Systems and Toolchains for AI Engineers
06-763 · L14

pycse, the last-layer idea

  • Treat the network's last layer as a linear model on learned features
  • Use linear regression's uncertainty there; predict(X, return_std=True)
  • Bishop's warning: with localized features the model "becomes very confident ... when extrapolating"
Model Idea Source
LinearRegressionUQ Bishop Eq. 3.59
NeuralNetworkBLR Bayesian regression on last hidden layer Snoek et al. 2015
DPOSE shallow ensemble, spread fitted Kellner & Ceriotti 2024
LLPRRegressor prediction rigidity, after training Bigi et al. 2024
Systems and Toolchains for AI Engineers
06-763 · L14

pycse, inside and beyond the data

95%, 5 seeds Inside Beyond
LinearRegressionUQ 94% 2%
NeuralNetworkBLR 95% 40%
DPOSE 93% 63%
LLPRRegressor 93% 84%, band 5× wider
  • NeuralNetworkBLR printed "✓ Model is well-calibrated" each time: checked on
Systems and Toolchains for AI Engineers
06-763 · L14

pycse, an import trap

from pycse.sklearn import NNBR            # ImportError in pycse 2.11.1

from pycse.sklearn.nnbr import NeuralNetworkBLR
from pycse.sklearn.llpr_regressor import LLPRRegressor
from pycse.sklearn.dpose import DPOSE
from pycse.sklearn.lr_uq import LinearRegressionUQ
Systems and Toolchains for AI Engineers
06-763 · L14

Trade-offs

Systems and Toolchains for AI Engineers
06-763 · L14

Trade-offs

Method Assumes Guarantee Beyond the data Cost
GP data look like the prior; one noise Bayesian back to the prior
Ensemble spread members disagree where wrong none sometimes fans out models
Rescaled spread calibration data like use empirical factor does not transfer a data split
Split conformal exchangeable finite-sample, marginal none a data split
CV+ exchangeable none fits
Last layer (pycse) features stay informative none often overconfident one model
Systems and Toolchains for AI Engineers
06-763 · L14

Worked example

l14-uq.ipynb

  • The concrete ensemble, its raw coverage, and the scale factor
  • Split conformal and CV+ by hand, then with MAPIE
  • Four pycse regressors inside and beyond their data

Watch for 79% becoming 90%, and 90% becoming 56%.

Systems and Toolchains for AI Engineers
06-763 · L14

Recap

  • UQ is a claim about coverage; check it on held-out data, with width and a proper score
  • GP: honest about missing data only if the prior is right; fails with varying noise, the wrong kernel, few points
  • Ensembles: the best common baseline; add noise, then rescale
  • Conformal: an exact guarantee that needs exchangeability
  • No method checks itself outside the range where it was checked
Systems and Toolchains for AI Engineers
06-763 · L14

Standings

Nicknames only. Everyone who skipped one still counted in every bar you saw.

Systems and Toolchains for AI Engineers
06-763 · L14

Before next time

Notes for this lecture: lectures/l14/notes.md

Systems and Toolchains for AI Engineers

Why 6, what UQ is 12, calibration 10, GPs 17, ensembles 14, conformal 13, pycse 7, close 5. About 84 minutes, then the notebook and questions.

Thirty seconds. Thirteen sessions behind us; this one decides how far to trust what the models from the highlands tell us. The route past here is deliberately vague: say it is still being surveyed, which is true.

Nothing in the method broke. Its one condition, that test structures resemble calibration structures, was not met. Come back to this case in the conformal section.

Push points up: the dark band collapses, the light band does not. Then push noise up. Point at the gray region: no data, the dark band returns to the prior.

Common wrong answer: D, from students who think only new inputs help. Repeats sharpen f at those inputs. Second most common: B, confusing a better estimate of the noise with less noise.

Press Fit. Noise comes out 0.044 against a true 0.1: 66% coverage inside, 96% beyond. Overconfident where there is data, honest where there is none. Click to add points and refit.

Noise sd 0.02 + 0.3x. Overall 95% looks fine; by third 100%, 98%, 88%. Then switch to "noise learned per point".

98% away from the step, 72% within 0.1 of it. Note the fitted length scale: 0.05.

Spread only, inside: 29%. Toggle the noise estimate: 93%. Beyond the data the members fan out here, 85%. Say clearly that fanning out is not guaranteed.

A is the popular wrong answer. Tie it back to Palmer: when bias dominates, the spread can be small and the error large.

Start at s = 1, press Fit: 1.66. Then switch to the extrapolation split and fit again.

Drop n below 9 at alpha 0.1. Then show the thirds: 100, 95, 82. Toggle the normalized score. Leave the window slide for the out-of-domain slide.