Chance and Fizzles
How Epidemics Spread
Chapter 6 · Chance and Fizzles
A traveller steps off a train in a small town, carrying an infection that is, on paper, perfectly capable of causing an epidemic. Most of the time, nothing happens. The traveller recovers, perhaps passes it to one or two people, and the chain of cases quietly ends. Every so often the same arrival lights a fire. The models in How Epidemics Spread 3, How Epidemics Spread 4 and How Epidemics Spread 5 could not tell these two stories apart, because they tracked averages and gave the same answer every time. How Epidemics Spread 5 ended by suggesting that the deep troughs in its endemic runs would, in a real population, end in extinction. This chapter puts chance into the simulations and asks three questions: how often does a single case fizzle out, why does the answer depend on more than R0, and what do super-spreaders change?
Putting Chance into the SIR Model
In a stochastic simulation, people are counted as whole individuals and each step is a random event. With S susceptibles and I infectious people, the next event is either an infection (at rate βSI/N) or a recovery (at rate γI). The chance that it is an infection is the first rate divided by the sum of the two. The code below ignores the exact time of each event, because we only want to know how many people end up infected. It starts with a single case in a population of 1,000, repeats the whole outbreak 2,000 times for each R0, and calls a run “fizzled” if 20 or fewer people were ever infected. That threshold of 20 is an arbitrary choice for this chapter. There is no calculus here, only a loop and a random number.
At R0 = 2.5, the plain model of How Epidemics Spread 3 says the epidemic always happens and reaches 89.3 per cent of the population. The simulation says that about 41 runs in 100 fizzle, and the others reach 89.2 per cent on average, almost exactly the deterministic figure. At R0 = 1.5 and 4.0 the picture is the same: a mixture of fizzles and full epidemics, and the share that fizzle is almost exactly 1/R0 (66.5 against 66.7 per cent, and 25.1 against 25.0 per cent). At R0 = 0.8 nearly every run fizzles; the 4.9 per cent that passed 20 cases are unlucky long chains, and they average only 4.3 per cent of the population. Run the deterministic rule (repeating z = 1 − exp(−R0 × z)) and you get about 58.3 per cent for R0 = 1.5 and 98.0 per cent for R0 = 4.0; the simulated means are 54.7 and 98.0, so the model gets the size of a real outbreak roughly right, and the fizzle rate is the part the earlier chapters could not see. That 1/R0 rule is my inference, and the next section explains why it should hold.
| Deterministic (How Epidemics Spread 3) | Stochastic (this chapter) | |
|---|---|---|
| Unit | a fraction of the population | whole people |
| Same inputs, two runs | identical output | different output every run (unless the seed is fixed) |
| One case, R0 = 2.5 | always an epidemic | about 4 runs in 10 fizzle |
| Result reported | one curve | a spread of outcomes, a fizzle rate, a mean size |
| Cost | one run | hundreds or thousands of runs |
Branching Processes: the Early Days
Why 1/R0? At the start, almost everyone is susceptible, so each case behaves independently of the others. A case infects some number of people, each of whom infects some number, and so on. That is a branching process. If the average number of offspring is 1 or less, the chain dies out for certain; if it is above 1, it may still die out, with a probability q below 1 (this is the criterion from the article). To find q, write the probability of having k offspring, build the function f(q) = sum of P(k) × qk, and repeat q ← f(q) starting from q = 0 until the number stops changing. The method is just repeated substitution.
The offspring distribution matters. Two natural choices both have mean R0. With Poisson offspring (many independent contacts, each with a small chance of transmission) f(q) = exp(R0(q − 1)). In the stochastic SIR model, each step before the susceptibles run low is a race between an infection and the case’s own recovery, so the number of people one case infects is geometric: f(q) = 1 / (1 + R0(1 − q)). Solving q = f(q) for that case gives q = 1/R0, which explains the fizzle rates above (my algebra). The code checks both against direct simulation, calling a chain “taken off” once it has reached 500 people (an assumed cap).
The formula and the simulation agree (to within noise from 4,000 runs each; the 0.999 at R0 = 0.9 is a rare chain that reached the cap of 500 before dying out). The surprise is how far apart the two columns are. With R0 = 2.5 the Poisson case fizzles only 10.7 per cent of the time, while the geometric case fizzles 40.0 per cent of the time, nearly four times as often. Both have exactly the same average number of secondary cases. The difference is the spread: the geometric distribution has many more zeros and a few large counts. R0 alone does not say how likely an outbreak is to fizzle. The spread of the offspring counts matters too.
Super-Spreaders: When Transmission Is Uneven
Real transmission is often more uneven than either of those. The 2005 paper models each person’s own reproductive number as a random value with mean R0, gamma-distributed with a dispersion parameter k; the resulting offspring counts are negative binomial. Small k means very uneven: most cases infect nobody and a few infect many. k = 1 gives the geometric case and k going to infinity gives Poisson. The paper reports k of about 0.16 for SARS. The code samples from this model with R0 = 2.5 and several assumed values of k, and reports four things: the share of cases who infect nobody, the fizzle probability from the formula q = (1 + R0(1 − q)/k)−k (same repeated substitution; my derivation from the standard generating function, checked below), the fizzle rate from direct simulation, and the share of all onward infections caused by the 20 per cent most infectious cases.
As k falls, everything shifts in the same direction. At k = 0.1, 72.2 per cent of cases infect nobody and the top fifth of cases cause 96.5 per cent of the onward spread, yet the average is still 2.5. A single introduction fizzles 86 times in 100, against about 11 times in 100 for Poisson. The formula and simulation agree throughout (0.861 and 0.859 at k = 0.1, 0.400 and 0.398 at k = 1). Notice also the last column: even with Poisson offspring the top 20 per cent cause 38.9 per cent of spread, simply because some cases happen to have more offspring than others. These figures come from my simulation with assumed parameters; they are not the paper’s results, and they are not a general 20/80 rule.
The practical lesson is modest but important. When transmission is uneven, a single introduction is much less likely to start an epidemic, but when the arrival is a super-spreading event the same R0 can be reached in one step. Control measures aimed at the unusually infectious events can then matter more than measures aimed at everyone equally. That last sentence is an inference from the model, not a result I tested; How Epidemics Spread 7 and How Epidemics Spread 9 will test targeted control properly.
| Poisson (k = infinity) | Geometric (k = 1) | Very uneven (k = 0.1) | |
|---|---|---|---|
| Mean offspring (R0) | 2.5 | 2.5 | 2.5 |
| Cases who infect nobody | 8.3% | 28.6% | 72.2% |
| One case fizzles | about 11% | 40% | about 86% |
| Share of spread from top 20% of cases | 38.9% | 58.0% | 96.5% |
| Typical story | almost every introduction grows | a coin flip with a bias | many dead ends, a few explosive clusters |
Run the stochastic SIR model with R0 = 2 (assumed) for populations of 50, 200 and 1,000, 2,000 runs each. Print the share of runs that fizzle (10 or fewer cases) and the mean share infected in the rest, and compare them with 1/R0 and with the deterministic final share.
📄 View solutionWith Poisson offspring and R0 = 1.1, 1.5, 2 and 3 (assumed), find the extinction probability q by repeated substitution. Print the chance that 1, 3 and 5 independent introductions take off (1 − q to the power of the number of seeds), and check the 1-seed and 3-seed values by simulation.
📄 View solutionFor R0 = 1.2 and 2.5 and k = 0.16, 1 and infinity (all assumed), print the chance a case infects nobody, the fizzle probability from the formula, and the fizzle rate from 3,000 simulated chains. For which R0 does overdispersion change the fizzle chance more?
📄 View solutionQuick Reference
- Stochastic model: whole people, one random event at a time; report rates from many runs, not one run
- Branching process: early on each case acts independently; extinction certain if mean offspring is 1 or less
- Extinction probability q: smallest solution of q = f(q); repeat q ← f(q) from q = 0
- Poisson offspring: f(q) = exp(R0(q − 1))
- Geometric offspring (stochastic SIR, one case): q = 1/R0 (my algebra, matched by the runs)
- Negative binomial (R0, k): q = (1 + R0(1 − q)/k)−k; small k means many dead ends and a few big spreaders; SARS reported near k = 0.16
- With several introductions: chance at least one takes off = 1 − qseeds
- Assumes: independent cases, illustrative numbers, an arbitrary cap and threshold