VOLUME 1, ISSUE 2 · WINTER 2025 · ORIGINAL RESEARCH
When Most People Infect Nobody: What Overdispersion Does to an Outbreak
Computational study · Peer-edited by the club review board · LaTeX source · Analysis code · Raw output · Interactive model
Same Average, Different Disease
Two outbreaks can share the exact same reproduction number and behave like different diseases. That sentence sounds like a hedge, but the arithmetic below forces it on you the moment you stop describing transmission with one number and start describing it with two.
The first number is the one every news report already carries: \(R\), the average number of people one infectious case goes on to infect. The second number nobody puts in a headline is how unevenly that average is achieved. An \(R\) of 2.5 spread evenly, almost everyone infecting two or three people, is a wholly different physical process from an \(R\) of 2.5 built almost entirely out of zeros punctuated by the rare case who infects thirty people at a choir practice. Real respiratory pathogens sit far over toward the second picture. SARS did. SARS-CoV-2 did. Measles, by contrast, sits close to the first. We built the smallest model that has both numbers in it, held the first one fixed, and turned only the second.
Turning it changed the outbreak's fate more than turning \(R\) itself would have. At the realistic value for a respiratory virus with real superspreading, a fresh introduction fizzled out on its own 86% of the time. Give the identical average transmission to a population with no superspreading at all, everyone equally likely to pass it on, and it fizzled only 11% of the time. Nine times more likely to die out, for free, from unevenness alone, no change in the average at all.
What follows builds the model, checks its own arithmetic against a closed-form answer at every one of seventeen settings, quantifies how concentrated transmission gets, and ends by pitting two control strategies against each other at matched cost, with a result that surprised the club and that we did not enjoy writing up.
The Machine We Built
The club has no clinic, no swabs, no case log of any kind. What we have is a room with laptops in it, so what follows is a simulation of a mathematical object, not a record of anyone getting sick. The object is a branching process, the same construction Galton and Watson used in 1875 to ask whether aristocratic surnames die out [1], later formalised into the field's standard toolkit by Harris [2] and by Athreya and Ney [3].
One case starts a chain at generation zero. Every case in a generation independently produces some number of new cases, drawn from a negative binomial distribution with mean \(R\) and dispersion parameter \(k\):
$$\mathrm{Var}(\text{offspring}) = R + \frac{R^2}{k}.$$Small \(k\) means most draws are zero and a few are large: heavy overdispersion, heavy superspreading. Large \(k\) squeezes the variance down toward \(R\) itself, and as \(k \to \infty\) the negative binomial converges to a plain Poisson distribution, the textbook homogeneous-mixing case with no superspreading whatsoever. \(R\) is held fixed at 2.5 throughout the main sweep, close to the early estimate of 2.2 reported for Wuhan-strain SARS-CoV-2 [14] and to early SARS estimates, a plausible order of magnitude for a novel respiratory pathogen's reproduction number rather than a claim about any one outbreak. \(k\) runs across seventeen values from 0.01 to 10,000 on a logarithmic grid chosen to include the range of dispersion estimates the literature actually reports for real pathogens, \(k \approx 0.1\)–0.16 for SARS and SARS-CoV-2 [4,5,6], up through values an order of magnitude or more larger for diseases that transmit more evenly.
The process has no depletion of susceptibles and no spatial structure, and it keeps no calendar. A "generation" is a step in a transmission chain, not a week or a day. The model is deliberately the simplest object that has both a mean and a shape around that mean, and it describes only the early, exponential phase of a real outbreak, before immunity or behaviour change has any chance to bite [7]. A chain is scored EXTINCT the generation it produces zero new cases, and ESCAPED once its cumulative size passes 5,000, a cutoff large enough that no supercritical branching process crossing it is coming back down: once a chain of this kind is not extinct, it grows without bound with probability 1 [3]. So "escaped" and "did not go extinct" are the same event for every practical purpose here.
Working Notes From the Club Table
Meeting 1
First draft simulated one branching process at a time, person by person. Someone
timed it: about forty minutes for a single dispersion value at 40,000 replicates.
Seventeen values would have taken most of a school day.
Meeting 1, later
Realised the offspring distribution only ever needs to be summed, never enumerated.
A generation of \(n\) active cases, each drawing NegBin\((k,p)\), sums to a single
NegBin\((nk,p)\) draw. Rewrote the whole inner loop around one call to numpy's
vectorised negative-binomial sampler per generation. Full 17-value sweep: under a
minute.
Meeting 2
Argued about the large-outbreak cutoff. Someone wanted 500, on the grounds that it is
obviously already an epidemic by then. Someone else pointed out that at \(k=0.01\) a
chain can sit near zero for many generations before one enormous draw sends it past
any cutoff at once, so a small cutoff might catch a chain mid-fluctuation rather than
genuinely past the point of no return. Settled on 5,000 and checked: zero replicates,
across all 680,000, were still "active" (neither extinct nor over cutoff) when the
generation limit was reached. The concern was real; the number handled it.
Meeting 2, later
First run of the validation table had one cell at \(z = 3.9\). Panic, briefly. The
bug was in the analytic solver, not the simulation: the fixed-point iteration was
being stopped after a fixed 200 steps regardless of how close it had gotten, and at
\(k=0.01\) that was not enough steps to reach machine precision. Switched to an
explicit convergence check. Every cell now sits under 2.3 SE.
Meeting 3
Designing the control comparison took the whole meeting. First proposal compared
"reduce \(R\) by 20%" against "cap gatherings at 10 people," which is not a fair
fight, because nobody had checked whether those two policies cost the same amount of
anything. Settled on defining effort identically for both, as the fraction of the
raw uncontrolled mean removed, and solving numerically for whatever cap achieves
that. See §8 for what this choice does and does not let us claim.
Meeting 4
Ran the control comparison expecting gathering caps to win, because that is what we
had all half-remembered from the news coverage of superspreading. They did not win,
at matched effort, across most of the range. Re-ran with a fresh seed to make sure.
Same answer. Nobody was pleased. Seed fixed at 20251217 and the file has not been
touched since.
The Arithmetic
Seventeen dispersion values, 40,000 replicates each, 680,000 branching processes run from a single introduction. Extinction is a coin flip repeated 40,000 times, so its standard error is the ordinary binomial one, \(\sqrt{p(1-p)/n}\), printed beside every estimate below rather than left for the reader to guess at.
Hold \(R=2.5\) fixed and read down the dispersion column. At \(k=0.01\), about as overdispersed as this study goes, a single introduction goes extinct 98.40% of the time. At \(k=1\), a middling amount of unevenness, 39.94%. At \(k=10{,}000\), effectively no unevenness at all, only 10.51%. The mean transmission never moved. Every one of these numbers describes the same average disease.
Now look at concentration. Among the cases that transmit at all under \(k=0.1\), rank them by how many secondary infections they actually caused and ask what share the top tenth holds: 81.9%. The top fifth holds 96.5%. Compress \(k\) down to 0.01 and the top tenth holds effectively all of it, because at that level of overdispersion almost the entire epidemic is carried by a handful of draws. Loosen \(k\) all the way to the Poisson limit and the top tenth still holds 22.5%, not 10%, because even people transmitting with zero real difference between them will still show apparent "superspreaders" once you rank them after the fact; a Poisson count has variance too. Any headline that reports a bare "X% cause Y% of transmission" without that Poisson floor is reporting some sampling noise alongside the real heterogeneity, undifferentiated, a conflation the dispersion parameter itself was introduced specifically to avoid [4,9].
Figure 4 draws the two extremes of the sweep as what they actually are: probability distributions over "how many people did this one case infect," both with the identical mean of 2.5. That picture sits behind every number in this section.
Checking Our Own Work
None of the numbers above are worth anything if the simulation is simply broken in a way that happens to look plausible. Branching-process theory hands us an exact target to check against. For a process whose offspring probability-generating function is \(G(s) = E[s^{\text{offspring}}]\), the extinction probability starting from one individual is the smallest non-negative root of \(G(s) = s\) [1,3]. For our negative binomial offspring distribution,
$$G(s) = \left(1 + \frac{R}{k}(1-s)\right)^{-k}$$which has no closed algebraic root, but \(G\) is convex and increasing on \([0,1]\), so the fixed-point iteration \(q \to G(q)\), started at \(q=0\), climbs monotonically to exactly that smallest root. Every one of the seventeen rows below prints this analytic root beside the simulated extinction fraction from 40,000 replicates, the resulting Monte Carlo standard error, and the z-score of the difference, so agreement is stated in the same units as the noise rather than asserted in prose.
| k | analytic root q | simulated (40,000 reps) | SE | diff | z |
|---|---|---|---|---|---|
| 0.01 | 0.984068 | 0.984025 | 0.000627 | −0.000043 | −0.07 |
| 0.02 | 0.968633 | 0.968400 | 0.000875 | −0.000233 | −0.27 |
| 0.05 | 0.925098 | 0.925050 | 0.001317 | −0.000048 | −0.04 |
| 0.1 | 0.860685 | 0.861075 | 0.001729 | 0.000390 | 0.23 |
| 0.16 | 0.794519 | 0.792450 | 0.002028 | −0.002069 | −1.02 |
| 0.3 | 0.674836 | 0.673700 | 0.002344 | −0.001136 | −0.48 |
| 0.5 | 0.558258 | 0.553325 | 0.002486 | −0.004933 | −1.98 |
| 1 | 0.400000 | 0.399350 | 0.002449 | −0.000650 | −0.27 |
| 2 | 0.275305 | 0.276300 | 0.002236 | 0.000995 | 0.45 |
| 5 | 0.179170 | 0.180325 | 0.001922 | 0.001155 | 0.60 |
| 10 | 0.143741 | 0.147750 | 0.001774 | 0.004009 | 2.26 |
| 30 | 0.119533 | 0.122400 | 0.001639 | 0.002867 | 1.75 |
| 100 | 0.111010 | 0.110800 | 0.001569 | −0.000210 | −0.13 |
| 300 | 0.108573 | 0.109800 | 0.001563 | 0.001227 | 0.79 |
| 1000 | 0.107721 | 0.104850 | 0.001532 | −0.002871 | −1.87 |
| 3000 | 0.107477 | 0.107200 | 0.001547 | −0.000277 | −0.18 |
| 10000 | 0.107392 | 0.105125 | 0.001534 | −0.002267 | −1.48 |
The largest deviation across all seventeen cells is 2.26 standard errors, at \(k=10\). Under the null hypothesis that the simulation is correct, seventeen independent z-scores would be expected to produce roughly one value beyond 2 SE by chance alone (about 5% of 17), and we got two, both unremarkable; none crossed 3, where we would have stopped and gone looking for a bug in earnest, the way §3 describes us actually doing once, in the solver rather than the simulator.
Turning the Dial to Poisson
A negative binomial distribution converges to a Poisson distribution as its dispersion parameter grows without bound. That convergence is not a modelling assumption but a limit that can be checked, and doing so gives a second, independent handle on whether the whole apparatus is behaving. The Poisson analogue of the extinction equation replaces \(G\) with \(G(s) = e^{-R(1-s)}\), the classical branching-process result quoted in every textbook treatment of epidemics as chains [7,3]. Solving it the identical way, by fixed-point iteration from \(q=0\), gives \(q_{\text{Poisson}} = 0.107355\). The largest-\(k\) row of the negative binomial sweep, \(k=10{,}000\), gives an analytic root of \(0.107392\). The two differ by 3.65×10-5, a relative difference of 0.034%, exactly the size of gap a finite (if very large) \(k\) should leave against the true infinite limit, and no larger.
Figure 2 shows a different kind of convergence: not the dispersion parameter approaching its limit, but the simulation itself approaching the truth as more replicates accumulate. Every one of the 40,000 replicates at \(k=0.1\) already carries an order in which it was generated. Taking the running mean of the first \(n\) of them, for \(n\) stepping up from 100 to the full 40,000, traces out exactly the shrinking-envelope picture Monte Carlo theory promises: noisy and occasionally several standard errors off the mark early, settling down as \(n\) grows, with the width of the plausible band shrinking as \(1/\sqrt{n}\).
The Obvious Objection
Superspreading events are famous specifically because targeting them works. MERS-CoV outbreaks were overwhelmingly driven by hospital and household clusters rather than even spread [15]. Wong and Collins, analysing early COVID-19 cluster data, concluded that "large superspreading events should be the targets of interventions that minimize tail exposure" [10]. Sneppen and colleagues went further, showing that overdispersion actually increases the effectiveness of limiting non-repetitive contacts, the very policy this study's Strategy B is meant to approximate [11]. If the professional literature says targeting the tail is the efficient move, why does §8 below find the opposite?
The honest answer is that "efficient" is doing different work in the two arguments. Wong and Collins, and Sneppen and colleagues, are making a claim about cost-effectiveness: a small number of banned gatherings or a small amount of contact-tracing effort aimed at the tail removes a disproportionate share of total transmission, because so much of \(R\) is concentrated there when \(k\) is small. That claim survives entirely intact in our own numbers; it is visible directly in Figure 4, where a strongly overdispersed population puts 82% of its transmission in the top tenth of cases. A policy that only has to remove a little \(R\) can indeed get most of its result from a small, targeted action against the tail.
Our own comparison in §8 asks a narrower and different question: once you have already decided how much mean transmission to remove, is it better to remove it by capping the tail or by thinning everything uniformly? Those are not competing answers to the same question. They are answers to two different questions, and a reader who wants the efficient real-world policy needs the first one; a reader who wants to know what happens to the shape of an outbreak once a given amount of its transmission is gone needs the second. We built the model for the second question, and we should have flagged the difference earlier in the club than we did.
Two Ways to Spend the Same Effort
Take dispersion \(k=0.1\) as the working baseline, since that is the order of magnitude the literature actually reports for SARS-like transmission [4,5,6]. Define effort \(e\) identically for two strategies, as the fraction of the uncontrolled mean transmission \(R_0=2.5\) removed. Strategy A, uniform reduction, thins every case's transmission by retention \((1-e)\); this is a binomial thinning of the offspring distribution, and because binomial thinning of a negative binomial preserves its dispersion parameter exactly, Strategy A leaves \(k\) untouched and simply scales the mean down to \(R_0(1-e)\). Strategy B, capping large gatherings, imposes a ceiling \(C(e)\) on any single case's secondary infections, solved numerically so that \(E[\min(X,C)] = R_0(1-e)\) exactly, the identical resulting mean as Strategy A at the same \(e\), by construction. Twenty thousand replicates were run per strategy per effort level, fourteen levels from \(e=0\) to \(e=0.65\).
We expected the gathering cap to do better, or at worst tie, since it targets exactly the mechanism popularly blamed for keeping epidemics alive. It did not. At eleven of the thirteen non-trivial effort levels, uniform thinning produced a higher extinction probability than capping, by a margin the standard errors do not explain away.
| effort e | R after control | A: uniform thinning | B: gathering cap | A − B | z |
|---|---|---|---|---|---|
| 0.00 | 2.500 | 0.8587 ± 0.0025 | 0.8640 ± 0.0024 | −0.0053 | −1.53 |
| 0.05 | 2.375 | 0.8658 ± 0.0024 | 0.8635 ± 0.0024 | 0.0023 | 0.67 |
| 0.10 | 2.250 | 0.8779 ± 0.0023 | 0.8592 ± 0.0025 | 0.0187 | 5.52 |
| 0.15 | 2.125 | 0.8826 ± 0.0023 | 0.8634 ± 0.0024 | 0.0192 | 5.77 |
| 0.20 | 2.000 | 0.8928 ± 0.0022 | 0.8607 ± 0.0024 | 0.0322 | 9.79 |
| 0.25 | 1.875 | 0.8972 ± 0.0021 | 0.8633 ± 0.0024 | 0.0339 | 10.44 |
| 0.30 | 1.750 | 0.9023 ± 0.0021 | 0.8675 ± 0.0024 | 0.0348 | 10.92 |
| 0.35 | 1.625 | 0.9230 ± 0.0019 | 0.8757 ± 0.0023 | 0.0473 | 15.77 |
| 0.40 | 1.500 | 0.9318 ± 0.0018 | 0.8812 ± 0.0023 | 0.0505 | 17.43 |
| 0.45 | 1.375 | 0.9482 ± 0.0016 | 0.8964 ± 0.0022 | 0.0518 | 19.42 |
| 0.50 | 1.250 | 0.9610 ± 0.0014 | 0.9149 ± 0.0020 | 0.0461 | 19.21 |
| 0.55 | 1.125 | 0.9776 ± 0.0010 | 0.9479 ± 0.0016 | 0.0298 | 15.75 |
| 0.60 | 1.000 | 0.9918 ± 0.0006 | 0.9860 ± 0.0008 | 0.0059 | 5.58 |
| 0.65 | 0.875 | 0.9992 ± 0.0002 | 0.9998 ± 0.0001 | −0.0007 | −2.84 |
The gap peaks at \(e=0.45\): uniform thinning reaches 94.8% extinction, the gathering cap reaches 89.6%, a difference of 5.2 percentage points at \(z=19.4\), not a number that Monte Carlo noise produces by accident. The reversal at \(e=0.65\), where the cap edges narrowly ahead, sits right where \(R\) after control has already dropped below 1 for both strategies; a subcritical branching process goes extinct with probability 1 regardless of its dispersion [3], so both strategies are converging to certainty there and the ranking between two numbers both pinned near 1 is not the same kind of fact as the ranking in the middle of the table.
The mechanism is not mysterious once you have §4 in hand. Thinning preserves the dispersion parameter \(k\), so it preserves the very unevenness that §4 showed makes extinction more likely at a fixed mean. Capping specifically removes that unevenness, trading it for a lower, more homogeneous mean instead, and a more homogeneous distribution is, at any fixed mean, the harder one to kill. The heterogeneity that makes an epidemic driven by superspreading look frightening in a news report is, once you remove exactly as much of it as removing all that heterogeneity costs you in mean transmission, partly what was keeping it fragile.
What This Model Cannot Tell You
Say plainly what is missing. No depletion of susceptibles enters the model, so nothing here describes a full epidemic curve, only its early exponential phase before immunity has any chance to matter [7,13]. No network, repeated contact structure or setting enters it either; the negative binomial's overdispersion stands in for "some cases transmit far more than others" without saying why. A real outbreak's heterogeneity comes from some mix of individual biology and the venues people gather in, in proportions this study has no way to separate [4,17]. A "generation" is a step in a transmission chain, not a unit of calendar time, so nothing here estimates doubling time or epidemic duration.
The control comparison in §8 carries its own, larger cost. Modelling a gathering ban as a clean mathematical cap on secondary infections, with a fractional randomised rounding purely so the resulting mean lands on an exact target, is a best-case idealisation. Real bans are patchy, evadable, unevenly enforced, and touch some settings and not others [12]. And "effort," defined here as an equal fractional cut to the uncontrolled mean, is one specific, transparent way to make the two strategies comparable, not a claim about which one is cheaper, more enforceable, or more politically survivable, and none of it touches the cost-effectiveness argument that §7 credits as a real and different result [10,11].
Finally: every replicate here shares one \(R\) and one \(k\) for its whole run. Real dispersion estimates carry their own uncertainty, generally wide, and a full accounting would carry that uncertainty through the whole pipeline rather than fixing \(k=0.1\) as if it were known to four figures. We did not do that here, and a reader using any of these numbers for a real policy decision should treat \(k=0.1\) as a representative order of magnitude, not a measurement.
Reproducing This
Every number in this article is the printed output of one file, run once, with its seed stated in the file itself:
python analysis/superspreading.py > analysis/superspreading-output.txt
It requires Python 3.12 and numpy, nothing else. On the laptop the club used it printed
its own total, 45.1 seconds, well inside the ten-minute budget the club sets
itself for a single computational study. The seed, 20251217, is split by numpy's
SeedSequence into an independent stream per dispersion cell and per control
cell, so no cell's randomness can leak into any other, and rerunning the file reproduces
every table above to the last printed digit. The interactive model linked at the top of
this page runs the same offspring distribution and the same matched-effort control
definition live in the browser, with the dispersion slider defaulting to the article's
own headline comparison.
References
- Watson, H. W., & Galton, F. (1875). On the probability of the extinction of families. Journal of the Anthropological Institute of Great Britain and Ireland, 4, 138–144. doi:10.2307/2841222
- Harris, T. E. (1963). The Theory of Branching Processes. Springer. doi:10.1007/978-3-642-51866-9
- Athreya, K. B., & Ney, P. E. (1972). Branching Processes. Springer. doi:10.1007/978-3-642-65371-1
- Lloyd-Smith, J. O., Schreiber, S. J., Kopp, P. E., & Getz, W. M. (2005). Superspreading and the effect of individual variation on disease emergence. Nature, 438, 355–359. doi:10.1038/nature04153
- Endo, A., Abbott, S., Kucharski, A. J., Funk, S., & CMMID COVID-19 Working Group (2020). Estimating the overdispersion in COVID-19 transmission using outbreak sizes outside China. Wellcome Open Research, 5, 67. doi:10.12688/wellcomeopenres.15842.3
- Adam, D. C., Wu, P., Wong, J. Y., Lau, E. H. Y., Tsang, T. K., Cauchemez, S., Leung, G. M., & Cowling, B. J. (2020). Clustering and superspreading potential of SARS-CoV-2 infections in Hong Kong. Nature Medicine, 26, 1714–1719. doi:10.1038/s41591-020-1092-0
- Diekmann, O., Heesterbeek, H., & Britton, T. (2012). Mathematical Tools for Understanding Infectious Disease Dynamics. Princeton University Press. doi:10.23943/princeton/9780691155395.001.0001
- Nishiura, H., Yan, P., Sleeman, C. K., & Mode, C. J. (2012). Estimating the transmission potential of supercritical processes based on the final size distribution of minor outbreaks. Journal of Theoretical Biology, 294, 48–55. doi:10.1016/j.jtbi.2011.10.039
- Woolhouse, M. E. J., Dye, C., Etard, J.-F., Smith, T., Charlwood, J. D., Garnett, G. P., Hagan, P., Hii, J. L. K., Ndhlovu, P. D., Quinnell, R. J., Watts, C. H., Chandiwana, S. K., & Anderson, R. M. (1997). Heterogeneities in the transmission of infectious agents: implications for the design of control programs. Proceedings of the National Academy of Sciences, 94, 338–342. doi:10.1073/pnas.94.1.338
- Wong, F., & Collins, J. J. (2020). Evidence that coronavirus superspreading is fat-tailed. Proceedings of the National Academy of Sciences, 117(47), 29416–29418. doi:10.1073/pnas.2018490117
- Sneppen, K., Nielsen, B. F., Taylor, R. J., & Simonsen, L. (2021). Overdispersion in COVID-19 increases the effectiveness of limiting nonrepetitive contacts for transmission control. Proceedings of the National Academy of Sciences, 118(14), e2016623118. doi:10.1073/pnas.2016623118
- Leclerc, Q. J., Fuller, N. M., Knight, L. E., CMMID COVID-19 Working Group, Funk, S., & Knight, G. M. (2020). What settings have been linked to SARS-CoV-2 transmission clusters? Wellcome Open Research, 5, 83. doi:10.12688/wellcomeopenres.15889.1
- Ball, F., & Donnelly, P. (1995). Strong approximations for epidemic models. Stochastic Processes and their Applications, 55, 1–21. doi:10.1016/0304-4149(94)00034-Q
- Riou, J., & Althaus, C. L. (2020). Pattern of early human-to-human transmission of Wuhan 2019 novel coronavirus (2019-nCoV), December 2019 to January 2020. Eurosurveillance, 25(4). doi:10.2807/1560-7917.ES.2020.25.4.2000058
- Kucharski, A. J., & Althaus, C. L. (2015). The role of superspreading in Middle East respiratory syndrome coronavirus (MERS-CoV) transmission. Eurosurveillance, 20(25). doi:10.2807/1560-7917.ES2015.20.25.21167
- Blumberg, S., & Lloyd-Smith, J. O. (2013). Comparing methods for estimating R0 from the size distribution of subcritical transmission chains. Epidemics, 5, 131–145. doi:10.1016/j.epidem.2013.05.002
- James, A., Pitchford, J. W., & Plank, M. J. (2006). An event-based model of superspreading in epidemics. Proceedings of the Royal Society B: Biological Sciences, 274, 741–747. doi:10.1098/rspb.2006.0219