Concept · 3 papers · updated 2026-10-18
Bootstrap confidence intervals for benchmark results
Resamples the runs, data splits or tasks behind a benchmark score to get an interval, instead of quoting one number. Three papers use it: paired runs for an A-versus-B decision, stratified runs for RL aggregates, and tasks for agent pass rates. All are author-reported, and the first two disagree on how far to trust the decision thresholds.
evaluationstatisticsbenchmarkingreproducibility
Markdown6 min read
AI-compiled overview, updated 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
Overview
A benchmark score from one training run is a random draw. A bootstrap interval asks how much that score would move if the runs were repeated. The method resamples the observed scores with replacement, recomputes the statistic on each resample, and reads the interval from the spread of those values 2108.13264 §4.1. The three papers below agree on the idea but differ on what is resampled and what conclusion the interval is meant to support.
The first is the data split. Each replicate draws a new train/validation/test split by bootstrap, and the score is recomputed on it [arxiv:2103.03098 app. Our bootstrap procedure]. The second is the runs themselves. Each replicate redraws the runs for every task, so an aggregate such as a median or interquartile mean gets its own interval 2108.13264 §4.1. The third is the tasks. An agent benchmark fixes a set of tasks and reports a pass rate per configuration. Its interval resamples at the task level, so it reflects how much the rate would move with another set of tasks 2605.16679 tab. 2 2108.13264 app. A.5.
Variants
Percentile bootstrap on paired runs, decide A versus B
For methods A and B run on the same seeds and splits, compute the fraction of paired runs in which A scores higher. Resample the pairs, and take the percentile interval of that fraction 2103.03098 eq. 9 [arxiv:2103.03098 app. Confidence interval]. The paper declares A significant when the lower bound is above 0.5, and meaningful when the upper bound is above γ = 0.75 2103.03098 app. Statistical test with P(A>B). Card: Accounting for Variance in Machine Learning Benchmarks.
Stratified percentile bootstrap over runs
Resample the N runs with replacement, independently for each of the M tasks, so each replicate keeps N runs per task. Apply any aggregate (median, IQM, optimality gap) to each replicate and take the 95% percentile interval 2108.13264 §4.1. The paper reports 50,000 resamples for aggregates and 2,000 for profiles and probability of improvement 2108.13264 app. A.5. Card: Deep Reinforcement Learning at the Edge of the Statistical Precipice.
Bootstrap over tasks as well as runs
Resampling the tasks too asks whether the aggregate would change with another set of tasks. The paper says this gives much wider intervals and is optional in its library, used when there are only one or two runs per task [arxiv:2108.13264 app. A.5]. Choose it when the question is about generalising to new tasks.
BCa and m/n intervals
The paper tested basic, bias-corrected and BCa intervals alongside the percentile method. It reports BCa as less effective when there are few runs 2108.13264 app. A.5. The Atari 100k case study uses an m/n bootstrap for its medians, not the recommended stratified percentile method [arxiv:2108.13264 §3].
Task-level percentile bootstrap for agent pass rates
CHI-Bench runs 30 agent configurations on 75 tasks, three trials per task, and reports pass@1, pass@3 and pass^3 with 95% intervals. The intervals come from a task-level percentile bootstrap 2605.16679 tab. 2 2605.16679 §4.2. The paper does not state the number of resamples, or whether the three trials of a task are also resampled. Several pass^3 intervals are reported as [0.0, 0.0], and the paper does not explain them 2605.16679 tab. 2. Card: CHI-Bench.
When to use which
| Situation | Use | Why |
|---|---|---|
| Comparing two methods on the same seeds and splits, and you want a decision rule | Percentile bootstrap on paired runs | Gives a bootstrap interval on P(A>B) with thresholds 0.5 and 0.75 2103.03098 app. Statistical test with P(A>B). Pairing is recommended 2103.03098 app. Pairing |
| Planning how many paired runs a decision needs | Sample-size formula from the same paper | For α = 0.05, β = 0.05, γ = 0.75 the paper gives N = 29 2103.03098 app. Sample size. Only as sound as the γ it assumes (see Contradictions) |
| RL benchmark with about 10 runs per task and an aggregate (median or IQM) | Stratified percentile bootstrap | Percentile intervals gave good coverage for median and IQM at N = 10 2108.13264 §4.1 |
| Only 3 runs per task | Stratified bootstrap, but treat the interval as too narrow | With 3 runs the interval underestimates the true 95% interval, so a higher nominal coverage may be needed 2108.13264 §4.1 |
| Per-game conclusions | Per-game bootstrap only with many runs | Per-game means reach nominal coverage at about 20 to 30 runs per game 2108.13264 app. A.3 |
| Benchmark variance with a fixed compute budget | Out-of-bootstrap data splits, with HOpt run once | The biased estimator costs O(k+T) trainings and randomises the data split per run 2103.03098 §3.2 |
| Pass rates for agents on a fixed task set, with a few trials per task | Task-level percentile bootstrap | The interval speaks to variation across tasks, and CHI-Bench reports one per configuration 2605.16679 tab. 2 |
| Ranking two close agent configurations | Compare the intervals before ranking | CHI-Bench's top two overall, 28.0 [19.6, 36.9] and 26.2 [18.2, 33.8], overlap, and the paper's headline calls the leaders close 2605.16679 tab. 2 §4.2 |
Implementation sketch
Pseudocode for the core loops. All are written in our own words. Neither 2103.03098 nor 2605.16679 gives the resample count for its interval, so K is a parameter here 2103.03098 app. Confidence interval.
# Percentile bootstrap for P(A > B) over paired runs [arxiv:2103.03098 eq. 9]
# Input: scores_a, scores_b (same length N, paired by seed and split)
# Output: (lower, upper) bound of the 95% interval
def paired_bootstrap_ci(scores_a, scores_b, resamples=2000):
# Number of pairs, paired by index [arxiv:2103.03098 app. Pairing]
n = len(scores_a)
estimates = []
for _ in range(resamples): # K is not stated in the paper
# Resample pair indices with replacement [arxiv:2103.03098 app. Confidence interval]
idx = random_integers(n, size=n)
# Fraction of resampled pairs where A is strictly higher [arxiv:2103.03098 eq. 9]
estimates.append(mean(scores_a[i] > scores_b[i] for i in idx))
# Percentile interval [arxiv:2108.13264 app. A.5]
return quantile(estimates, 0.025), quantile(estimates, 0.975)# Stratified percentile bootstrap for an aggregate [arxiv:2108.13264 §4.1]
# Input: scores (N, M) for one method; metric(scores) -> float
def stratified_bootstrap_ci(scores, metric, reps=50000):
# Shape: runs along the first axis, tasks along the second [arxiv:2108.13264 §4.1]
num_runs, num_tasks = scores.shape
estimates = []
for _ in range(reps):
# Resample runs independently for each task [arxiv:2108.13264 §4.1]
idx = random_integers(num_runs, size=(num_runs, num_tasks))
estimates.append(metric(scores[idx, arange(num_tasks)]))
# 95% percentile interval [arxiv:2108.13264 app. A.5]
return quantile(estimates, 0.025), quantile(estimates, 0.975)Contradictions
- Decision thresholds. The benchmark paper's main text defines significance as P(A>B) minus the lower bound above 0.5, and meaningfulness as P(A>B) plus the upper bound above γ 2103.03098 §4.1. Its appendix tests the lower bound above 0.5 and the upper bound above γ directly [arxiv:2103.03098 app. Statistical test with P(A>B)]. The paper does not reconcile the two forms.
- Significance tests. The RL paper advises against significance tests 2108.13264 §2 remark but gives a significance-style reading of probability of improvement: the probability is above 0.5 with an interval excluding 0.5, or the upper bound is above 0.75 2108.13264 app. A.7. The same 0.75 threshold is used by the benchmark paper for its decision rule 2103.03098 §4.1.
- Origin of the 0.75 threshold. The benchmark paper fits its constants, including γ = 0.75, to five tasks and says generality beyond them is not shown 2103.03098 §4.2. The RL paper cites that paper as the source of the threshold 2108.13264 app. A.7. So the RL paper inherits a value that rests on the first paper's five case studies.
- What is resampled. The benchmark paper resamples data splits and seeds 2103.03098 app. Our bootstrap procedure. The RL paper resamples runs per task 2108.13264 §4.1. CHI-Bench resamples at the task level 2605.16679 tab. 2. All three are called bootstrap, but their intervals answer different questions and are not directly comparable.
- Task resampling: optional or default. The RL paper says resampling tasks as well as runs is optional in its library and is used when there are only one or two runs per task 2108.13264 app. A.5. CHI-Bench resamples tasks with three trials per task 2605.16679 tab. 2 2605.16679 app. F.2. Neither source settles which choice fits agent benchmarks.
Papers
- Accounting for Variance in Machine Learning Benchmarks: percentile bootstrap on paired runs, with a P(A>B) decision rule and a sample-size formula.
- Deep Reinforcement Learning at the Edge of the Statistical Precipice: stratified percentile bootstrap over runs per task, with the interval results for Atari 100k medians.
- CHI-Bench: task-level percentile intervals on pass rates for 30 agent configurations.
Source and license
Compiled from the papers listed on this page, all published under CC BY, CC BY-SA or CC0, with citations. See each paper's page for its authors and license.