Skip to content
VibeFormer
Intermediate26 min

The Poisson Distribution

Rare events, derivation as a binomial limit, the Poisson process, and additivity.

The Poisson Distribution

Intuition first

The Poisson counts how many times a rare event happens in a fixed window — emails per hour, defects per metre of cable, earthquakes per decade, server errors per minute.

It arises from the binomial in a specific limit. Imagine chopping an hour into millions of tiny instants, each with a minuscule chance of an email arriving. You have a binomial with enormous nn and tiny pp, and only the product λ=np\lambda = np matters — the individual nn and pp become unidentifiable. The Poisson is what that limit converges to.

Its signature is that mean and variance are equal, both λ\lambda. That gives you an immediate diagnostic: compute the sample mean and sample variance of your counts, and if the variance is much larger, the events are clustering and a Poisson model will understate your uncertainty.

Definition

XPoisson(λ),p(k)=eλλkk!,k=0,1,2,X \sim \text{Poisson}(\lambda), \qquad p(k) = \frac{e^{-\lambda}\lambda^k}{k!}, \qquad k = 0, 1, 2, \dots E[X]=λ,Var(X)=λ,MX(t)=exp ⁣(λ(et1))\E[X] = \lambda, \qquad \Var(X) = \lambda, \qquad M_X(t) = \exp\!\big(\lambda(e^t - 1)\big)
Notation used in this lesson
SymbolMeaning
λMean number of events in the window — the rate times the window length
kObserved count, any non-negative integer
eEuler's number, ≈ 2.71828

Derivation as a binomial limit

From binomial to PoissonAdvanced

Take XBinomial(n,p)X \sim \text{Binomial}(n, p) and let nn \to \infty with p=λ/np = \lambda/n held so the mean np=λnp = \lambda stays fixed.

P(X=k)=(nk)(λn)k(1λn)nk\Prob(X = k) = \binom{n}{k}\left(\frac{\lambda}{n}\right)^k\left(1 - \frac{\lambda}{n}\right)^{n-k}

Expand the binomial coefficient and separate the factors:

=n(n1)(nk+1)k!λknk(1λn)n(1λn)k= \frac{n(n-1)\cdots(n-k+1)}{k!}\cdot\frac{\lambda^k}{n^k}\cdot\left(1-\frac{\lambda}{n}\right)^{n}\left(1-\frac{\lambda}{n}\right)^{-k}=λkk!n(n1)(nk+1)nk1(1λn)neλ(1λn)k1= \frac{\lambda^k}{k!} \cdot \underbrace{\frac{n(n-1)\cdots(n-k+1)}{n^k}}_{\to\, 1} \cdot \underbrace{\left(1-\frac{\lambda}{n}\right)^{n}}_{\to\, e^{-\lambda}} \cdot \underbrace{\left(1-\frac{\lambda}{n}\right)^{-k}}_{\to\, 1}

Each limit in turn:

  • The first fraction is a product of kk terms each tending to 1, since kk is fixed while nn \to \infty.
  • The second is the standard limit limn(1x/n)n=ex\lim_{n\to\infty}(1 - x/n)^n = e^{-x}.
  • The third has a fixed exponent k-k and a base tending to 1.

Therefore

P(X=k)    eλλkk!\Prob(X = k) \;\longrightarrow\; \frac{e^{-\lambda}\lambda^k}{k!}

The practical rule: use Poisson to approximate a binomial when n20n \geq 20 and p0.05p \leq 0.05, or whenever n100n \geq 100 and np10np \leq 10.

Mean and variance from the MGFAdvanced
MX(t)=exp ⁣(λ(et1))M_X(t) = \exp\!\big(\lambda(e^t - 1)\big)

First derivative, by the chain rule:

MX(t)=λetexp ⁣(λ(et1))E[X]=MX(0)=λe0e0=λM_X'(t) = \lambda e^t \exp\!\big(\lambda(e^t-1)\big) \quad\Longrightarrow\quad \E[X] = M_X'(0) = \lambda e^0 e^0 = \lambda

Second derivative, product rule on λet\lambda e^t and the exponential:

MX(t)=λetexp ⁣(λ(et1))+(λet)2exp ⁣(λ(et1))M_X''(t) = \lambda e^t\exp\!\big(\lambda(e^t-1)\big) + \big(\lambda e^t\big)^2\exp\!\big(\lambda(e^t-1)\big)E[X2]=MX(0)=λ+λ2\E[X^2] = M_X''(0) = \lambda + \lambda^2

Hence

Var(X)=E[X2](E[X])2=λ+λ2λ2=λ\Var(X) = \E[X^2] - (\E[X])^2 = \lambda + \lambda^2 - \lambda^2 = \lambda

The MGF also gives the additivity property immediately. For independent XPoisson(λ1)X \sim \text{Poisson}(\lambda_1) and YPoisson(λ2)Y \sim \text{Poisson}(\lambda_2):

MX+Y(t)=exp ⁣(λ1(et1))exp ⁣(λ2(et1))=exp ⁣((λ1+λ2)(et1))M_{X+Y}(t) = \exp\!\big(\lambda_1(e^t-1)\big)\exp\!\big(\lambda_2(e^t-1)\big) = \exp\!\big((\lambda_1+\lambda_2)(e^t-1)\big)

which is the Poisson MGF with parameter λ1+λ2\lambda_1 + \lambda_2. So X+YPoisson(λ1+λ2)X + Y \sim \text{Poisson}(\lambda_1 + \lambda_2).

Scaling the window

Rates are per unit time or space, so the parameter scales with the window:

λwindow=rate×window length\lambda_{\text{window}} = \text{rate} \times \text{window length}

Twelve calls per hour means λ=12\lambda = 12 for an hour, λ=2\lambda = 2 for ten minutes, and λ=288\lambda = 288 for a day. Getting this scaling wrong is the most common error in Poisson problems.

Solved problem 1 · Calls at a help desk

A help desk receives calls at an average rate of 3 per 10 minutes. Find the probability of (a) exactly 2 calls in 10 minutes, (b) no calls in 5 minutes, (c) at least 3 calls in 20 minutes.

Step 1 — part (a): the window matches the stated rate

λ=3\lambda = 3 for a 10-minute window.

P(X=2)=e3322!=e3×92\Prob(X = 2) = \frac{e^{-3}\,3^2}{2!} = \frac{e^{-3} \times 9}{2}e3=0.049787e^{-3} = 0.049787P(X=2)=0.049787×92=0.4480832=0.224042\Prob(X = 2) = \frac{0.049787 \times 9}{2} = \frac{0.448083}{2} = 0.224042

Step 2 — part (b): rescale to 5 minutes

Half the window, so half the rate:

λ=3×510=1.5\lambda = 3 \times \frac{5}{10} = 1.5P(X=0)=e1.5(1.5)00!=e1.5=0.223130\Prob(X = 0) = \frac{e^{-1.5}(1.5)^0}{0!} = e^{-1.5} = 0.223130

Step 3 — part (c): rescale to 20 minutes

Double the window:

λ=3×2010=6\lambda = 3 \times \frac{20}{10} = 6

Step 4 — compute the complement

P(X3)=1P(X2)=1[p(0)+p(1)+p(2)]\Prob(X \geq 3) = 1 - \Prob(X \leq 2) = 1 - \big[p(0) + p(1) + p(2)\big]e6=0.00247875e^{-6} = 0.00247875p(0)=e6=0.00247875p(0) = e^{-6} = 0.00247875p(1)=e6×6=0.01487251p(1) = e^{-6} \times 6 = 0.01487251p(2)=e6×362=e6×18=0.04461753p(2) = \frac{e^{-6} \times 36}{2} = e^{-6} \times 18 = 0.04461753P(X2)=0.00247875+0.01487251+0.04461753=0.06196879\Prob(X \leq 2) = 0.00247875 + 0.01487251 + 0.04461753 = 0.06196879P(X3)=10.06196879=0.93803\Prob(X \geq 3) = 1 - 0.06196879 = 0.93803

Step 5 — sanity check

With λ=6\lambda = 6 expected calls in 20 minutes, observing at least 3 should be very likely, and 0.9380.938 is consistent ✓.

Answer

(a) 0.2240\approx 0.2240; (b) 0.2231\approx 0.2231; (c) 0.9380\approx 0.9380.

Solved problem 2 · Detecting overdispersion

A website records daily error counts over 30 days with sample mean xˉ=4.2\bar{x} = 4.2 and sample variance s2=18.6s^2 = 18.6. Is a Poisson model appropriate?

Step 1 — the Poisson requirement

Poisson demands E[X]=Var(X)\E[X] = \Var(X), so the sample mean and variance should be close.

Step 2 — compute the dispersion index

dispersion=s2xˉ=18.64.24.43\text{dispersion} = \frac{s^2}{\bar{x}} = \frac{18.6}{4.2} \approx 4.43

Under a true Poisson this ratio should be near 1.

Step 3 — test it formally

The dispersion statistic

D=(n1)s2xˉ=29×18.64.2=539.44.2128.4D = \frac{(n-1)s^2}{\bar{x}} = \frac{29 \times 18.6}{4.2} = \frac{539.4}{4.2} \approx 128.4

is approximately χ2\chi^2 with n1=29n - 1 = 29 degrees of freedom under the Poisson hypothesis. The critical value at the 1% level is about 49.649.6, and 128.4128.4 vastly exceeds it.

Step 4 — conclude and diagnose

Strongly overdispersed. The data varies about 4.4 times more than Poisson allows.

Plausible causes: errors arrive in bursts, because one failure triggers cascading retries; the underlying rate varies by day of week or with traffic; or the days are not independent because an unresolved fault persists.

Step 5 — what to use instead

A negative binomial model, which is Poisson with a gamma-distributed rate and therefore has variance exceeding its mean by a fitted amount. Or a Poisson model with covariates capturing the systematic variation — day of week, traffic volume — which may reduce the residual dispersion to near 1.

Answer

No. Dispersion index 4.4\approx 4.4 against a required 1, and a dispersion test rejecting overwhelmingly. Fitting Poisson anyway would produce confidence intervals roughly 4.42.1\sqrt{4.4} \approx 2.1 times too narrow.

The Poisson process

If events occur at constant rate λ\lambda independently, then:

  • Counts in a window of length tt are Poisson(λt)\text{Poisson}(\lambda t).
  • Waiting times between consecutive events are Exponential(λ)\text{Exponential}(\lambda).
  • Counts in disjoint windows are independent.

That second point links this lesson to the next: the Poisson counts events, the exponential times the gaps, and they describe the same process from two angles.

python
import numpy as np
from scipy import stats

X = stats.poisson(mu=3)
print(f"(a) P(X=2), λ=3      {X.pmf(2):.6f}")
print(f"(b) P(X=0), λ=1.5    {stats.poisson(1.5).pmf(0):.6f}")
print(f"(c) P(X>=3), λ=6     {stats.poisson(6).sf(2):.6f}   <- sf(2), not sf(3)")

# Poisson as a binomial limit.
lam = 3
print("\nbinomial → Poisson as n grows with np = 3:")
for n in (10, 100, 1000, 100_000):
    b = stats.binom(n=n, p=lam/n).pmf(2)
    print(f"  n={n:<7} P(X=2) = {b:.6f}   Poisson {stats.poisson(lam).pmf(2):.6f}")

# Dispersion check on simulated data.
rng = np.random.default_rng(0)
pure = rng.poisson(4.2, 30)
bursty = rng.negative_binomial(1.2, 1.2/(1.2+4.2), 30)   # same mean, more variance
for name, d in (("true Poisson", pure), ("overdispersed", bursty)):
    print(f"\n{name}: mean {d.mean():.2f}  var {d.var(ddof=1):.2f}  "
          f"dispersion {d.var(ddof=1)/d.mean():.2f}")

Exercise 1

A book has on average 0.5 typos per page. What is the probability a 10-page chapter contains no typos?

Show solution

Scale the rate to the window:

λ=0.5×10=5\lambda = 0.5 \times 10 = 5P(X=0)=e5500!=e50.006738\Prob(X = 0) = \frac{e^{-5} \cdot 5^0}{0!} = e^{-5} \approx 0.006738

About 0.67% — very unlikely. A common error is using λ=0.5\lambda = 0.5 and reporting e0.50.607e^{-0.5} \approx 0.607, which answers a different question: the probability a single page is clean.

Worth noting the consistency: the probability all 10 pages are independently clean is (e0.5)10=e5(e^{-0.5})^{10} = e^{-5}, the same answer, because the Poisson's additivity over disjoint windows is exactly this multiplication.

Exercise 2

A factory has 2,000 components, each failing independently with probability 0.0015 per day. Approximate the probability that more than 4 fail on a given day, and justify the approximation.

Show solution

Exactly, XBinomial(2000,0.0015)X \sim \text{Binomial}(2000, 0.0015). Check the Poisson approximation conditions: n=2000100n = 2000 \geq 100 and np=310np = 3 \leq 10 ✓ — large nn, small pp, moderate product.

So XPoisson(λ=3)X \approx \text{Poisson}(\lambda = 3).

P(X>4)=1P(X4)=1k=04e33kk!\Prob(X > 4) = 1 - \Prob(X \leq 4) = 1 - \sum_{k=0}^{4}\frac{e^{-3}3^k}{k!}

With e3=0.049787e^{-3} = 0.049787:

p(0)=0.049787,p(1)=0.149361,p(2)=0.224042p(0) = 0.049787, \quad p(1) = 0.149361, \quad p(2) = 0.224042p(3)=0.049787×276=0.224042,p(4)=0.049787×8124=0.168031p(3) = \frac{0.049787 \times 27}{6} = 0.224042, \quad p(4) = \frac{0.049787 \times 81}{24} = 0.168031P(X4)=0.049787+0.149361+0.224042+0.224042+0.168031=0.815263\Prob(X \leq 4) = 0.049787 + 0.149361 + 0.224042 + 0.224042 + 0.168031 = 0.815263P(X>4)10.815263=0.1847\Prob(X > 4) \approx 1 - 0.815263 = 0.1847

About 18.5%. The exact binomial value is 0.18460.1846, so the approximation is accurate to four decimal places — and far easier, since the exact calculation involves terms like (20004)\binom{2000}{4}.

Note p(2)=p(3)p(2) = p(3) here, which happens whenever λ\lambda is an integer: the Poisson is bimodal at λ1\lambda - 1 and λ\lambda.


Next: Uniform and Exponential Distributions, the first continuous families and the waiting-time partner of the Poisson.