01 — the mismatch
A rate is not a probability
A rate has units of 1/time and no upper bound: a recovery rate of 2 per day is a perfectly ordinary parameter. A probability has no units and lives strictly inside [0, 1]. Those are different kinds of number, so "just multiply by time" cannot be the whole story.
Try it anyway: at a rate of 2 recoveries per day, one day gives rate · time = 2 × 1 = 2. A probability of 2 is meaningless — yet this is exactly the shortcut it's tempting to code into a model. Something has to bend rate · time back down into [0, 1], and keep it there for any rate and any time. That something is the exponential in the formula above.
02 — where the formula comes from
The constant-rate argument
The formula falls out of one assumption: the event arrives "completely at random" at a constant intensity — no memory of how long the individual has already been waited. Chop the interval into slices and take the limit.
- Split [0, time] into n tiny slices of width dt = time / n. Because the rate is constant, the chance the event happens during any one slice is just rate · dt, whichever slice it is. chance of surviving one slice = 1 − rate · dt
- The slices are independent (that's what "no memory" buys you), so the chance of surviving all n of them — i.e. the event still hasn't happened by time — is the product of the per-slice survival chances. survival to time = (1 − rate · time / n)ⁿ
- Let the slices get infinitely thin (n → ∞). This is exactly the classic limit that defines e, and it collapses to a clean exponential. (1 − rate · time / n)ⁿ → exp(−rate · time)
- "Event hasn't happened" and "event has happened" are complements, so subtract from 1. p(time) = 1 − exp(−rate · time)
This is the cumulative distribution function of the exponential distribution — the standard model for a waiting time under a constant hazard. It's also the only continuous distribution with the memoryless property built into step 2: an individual who has survived to day 10 has exactly the same recovery probability over the next day as one who started today. That's a strong assumption, but it's the one "a constant rate" always encodes.
Try it
Set a rate and drag along the time axis (or the slider) to see the exact probability, the naive rate · time shortcut, and where the two part ways.
| time | rate · time | exact p | shortcut rate·time |
|---|
03 — when the shortcut is fine
When can I just use rate × time?
Expand the exponential: exp(−x) ≈ 1 − x + x²/2 − …, so 1 − exp(−x) ≈ x − x²/2 + …. For small x = rate · time, the linear term dominates and the shortcut is a good stand-in for the real formula.
That's precisely the situation inside most discrete-time simulations: a short step Δt multiplied by a rate that isn't enormous keeps rate · Δt small, so drawing a per-step event with probability rate · Δt is a reasonable Euler-style approximation of the exact 1 − exp(−rate · Δt). As a working rule, rate · time stays within about 5% of the exact value while rate · time < 0.1; by rate · time ≈ 1 the two have diverged sharply, and the shortcut can exceed 1 outright — a reliable sign that the time step is too coarse for the rate being simulated.
04 — worked example
Recovery in a simulated outbreak
A. Probability of recovery within a given window
Infectious individuals recover at a constant rate γ = 0.2 / day (a mean infectious period of 1/γ = 5 days). What's the chance a given individual has recovered within 1 day? Within 10 days?
1 day: p = 1 − exp(−0.2 × 1) = 1 − exp(−0.2) ≈ 0.181 (shortcut: 0.2 — close, since rate·time is small)
10 days: p = 1 − exp(−0.2 × 10) = 1 − exp(−2) ≈ 0.865 (shortcut: 2.0 — meaningless here)
B. Turning a rate into a daily transition probability
A discrete-time model that advances one day at a time needs, for every infectious agent, a per-day probability of recovering. The correct value to draw from is the exact formula applied to one time step, not the rate itself:
per-day recovery probability = 1 − exp(−γ × 1) = 1 − exp(−0.2) ≈ 0.181, not γ = 0.2.
The gap is small at this rate and this step size — but it grows with a coarser step (say, a weekly update) or a faster rate (say, a short serial interval), which is why simulations built around long or variable time steps should convert through the exponential rather than hard-coding the rate as a probability.
Recap
- p = 1 − exp(−rate · time) converts a constant rate into the probability the event has happened by time.
- It comes from treating the event as arriving at random with constant intensity — a memoryless, constant-hazard process.
- rate · time alone only approximates p well when it's small; it always sits at or above the true probability, and it can exceed 1 where the true probability cannot.
- If the rate itself varies over the interval, integrate it: use ∫ rate(s) ds in place of rate · time.