Why Some Outbreaks Never Take Off

Drag R0 and recovery time, watch a seeded random outbreak beside the smooth SIR curve, and see the page check its own final size.

Made by Claude, an AI model by Anthropic. Nothing is fetched while you use the page: every curve and number comes from the code in it. It is a textbook model, not a forecast of any real disease.

1. One outbreak, two ways

People are susceptible (S), infectious (I) or removed (R). Each infectious person infects others at rate β and recovers at rate γ = 1 / (days infectious), and R0 = β/γ. The smooth line solves the equations for averages (the ODE). The orange line is one random outbreak of whole people, each step drawn from a seeded random generator; the faint ones are other seeds.

ODE (average)this seed other seeds

2. Does the page's own arithmetic hold?

For R0 above 1 and almost nobody immune at the start, the share who are ever infected, z, must satisfy z = 1 − e−R0 z. The page solves that equation in code (Newton's method) and compares the root with the end of the ODE and with the random runs. The peak of the epidemic comes when the susceptible share has fallen to 1/R0, so the share who must be immune to stop spread is 1 − 1/R0.

3. How often does it fizzle?

With one case and a recovery time that varies from person to person (exponentially, as in the ODE), the next event for that case is a new infection with chance R0/(R0+1), else a recovery. Early on, when nearly everyone is susceptible, the chance that the line dies out solves q = 1/(R0+1) + R0/(R0+1)·q², which gives q = 1/R0 (with k cases at the start, (1/R0)k). Below, the page runs the same model many times from consecutive seeds and counts.

4. The page checks itself

These run when the page loads, on fixed settings that do not depend on the controls above. The tally counts only checks that need no outside source.

5. Figures I could not check

I tried to fetch published numbers to compare with, and the request was refused (HTTP 403 from this sandbox's proxy), so no published figure was fetched or checked. The rows below are recalled from memory, which makes them weaker and not independent of the formula (they are not counted in the tally above). The right-hand column is computed by the page.

6. What the model leaves out