Skip to main content

Nuclear, particle & quantum-information sequence · Interactive lesson

Estimating λ from Poisson counts

Counts scatter because decay is random, not because the detector is sloppy. This is how to turn a column of scattered integers into a decay constant with an interval you can defend: maximise the likelihood the Poisson process actually implies, and put background and dead time inside the model rather than on the data.

UPV-15.07 · Lesson 7 of 9 in this unit. Position is not a completion score.
Starting model: Estimating λ from Poisson countsThe exact log-likelihood profile Δ ln L(λ) = n [ln u − u + 1] with u = λ/λ̂, for n = 9 recorded decay times (solid), against the parabola −n(u−1)²/2 built from the Fisher curvature (dashed). Zero sits at the top of the frame and the dashed horizontal is Δ ln L = −½. At the trial value u = 1.50 the exact profile reads -0.851 and the parabola -1.125.Δ ln L(λ) = n [ ln u − u + 1 ], u = λ / λ̂, n = 9 decayssolid: exact profile dashed: Fisher parabola −n(u−1)²/2 0 at topΔ ln L = −½00.51.0 λ̂1.5λ / λ̂
Start with a picture. Change the model in the lab below.

Nuclear, particle & quantum-information sequence. These units continue into nuclear and particle physics and quantum information. Follow your university’s prerequisites, mathematical depth and assessment; this independent pathway is not a universal programme specification.

1

Build the model

The counts are Poisson, so the fit has to be too.

The key idea

Maximum-likelihood estimation of a decay constant treats each timed bin's count as a Poisson draw whose mean is the model's integrated activity, and chooses the λ that makes the observed set of integers most probable.

Example. A bin whose model mean is μ = 4.0 counts contributes k ln μ − μ = 1 × 1.386 − 4.0 = −2.61 when k = 1, and still contributes −4.00 when k = 0 — precisely the term a log-linear fit has to discard.

The complete physical model and assumptions

What you actually hold is a list of integers — k₁, k₂, … counts in successive timed bins — each a draw from a Poisson distribution whose mean the model supplies, μᵢ = S e(−λ tᵢ) + bΔ. That Poisson is not an assumption of convenience: it follows from independent decay, binomial survival in each window, thinning by a detection efficiency, and the addition of an independent background, and it is the only honest description at the end of a run, where the model predicts three counts and the detector records zero. Estimating λ therefore means maximising Σ(kᵢ ln μᵢ − μᵢ), a smooth but non-linear function of (λ, S, b) with no closed form, and taking the interval from the curvature of that surface or from a profile scan across λ. The cost is that nothing can be read off a straight line any more. The gain is threefold: empty bins still speak, efficiency and solid angle cancel out of λ̂ because they enter only through the amplitude S, and every systematic left out of μ — a dead-time loss that tilts the early bins, a background that cannot be subtracted through a logarithm — appears as a bias that more counting makes look worse, not better.

1Why a bin count is exactly Poisson

Start from the boundary condition, not the formula. N₀ identical nuclei decay independently, each surviving to t with probability e(−λt), so the number decaying in the window [tᵢ, tᵢ + Δ] is Binomial(N₀, pᵢ) with pᵢ = e(−λ tᵢ)(1 − e(−λΔ)). For a microcurie of Cs-137, N₀ ≈ 5 × 10¹³ and a 10 s bin has pᵢ ≈ 7 × 10⁻⁹: that is the Poisson limit N₀ → ∞, pᵢ → 0 at fixed N₀ pᵢ = 3.7 × 10⁵ decays, and the binomial variance N₀ p(1 − p) collapses onto the mean. Detection is independent thinning — keep each decay with probability ε — and thinning maps Poisson(μ) to Poisson(εμ). Background arrives as its own independent Poisson stream, and independent Poissons add. So the gross count in a bin is Poisson with mean μᵢ = S e(−λ tᵢ) + bΔ, where S = ε N₀(1 − e(−λΔ)). Two things break the argument, and both return later: dead time, which makes successive counts non-independent, and pile-up, which merges two pulses into one.

2The likelihood, and what taking logs destroys

Because the kᵢ are independent, ln L(λ, S, b) = Σᵢ [kᵢ ln μᵢ − μᵢ], up to a −Σ ln kᵢ! that carries no parameter and so cannot move the maximum. Maximise that directly and nothing is transformed. The tempting alternative — plot ln kᵢ against tᵢ and fit a straight line — transforms the data instead of the model, and pays four times. Since ln is concave, E[ln k] ≈ ln μ − 1/(2μ), so at μ = 3 counts the plotted point sits at e(−1/6) = 0.85 of the model value, and the bias grows precisely in the late bins that set the slope. Bins with kᵢ = 0 have no logarithm and get dropped, which censors only downward fluctuations and tilts the tail the other way. Var(ln k) ≈ 1/μ is not constant, so an unweighted line lets a 4-count bin speak as loudly as a 4000-count one. And ln(kᵢ − bΔ) is undefined for every bin that fluctuates below background. The likelihood keeps the zeros: a bin with kᵢ = 0 still contributes −μᵢ, a genuine statement that the model predicted counts you did not see.

3Solving for λ̂: the amplitude profiles out

Set b = 0 for a moment and differentiate. ∂lnL/∂S = Σ (kᵢ/μᵢ − 1) e(−λ tᵢ) = 0 gives Ŝ = Σ kᵢ / Σ e(−λ tᵢ): the amplitude only normalises the model to the total observed counts. Substituting it into ∂lnL/∂λ = 0 leaves one scalar equation, Σ kᵢ tᵢ / Σ kᵢ = Σ tᵢ e(−λ tᵢ) / Σ e(−λ tᵢ) — the observed mean count time must equal the model's mean count time on the same bin grid. That is a moment condition, solvable with Brent's method in a line of SciPy, and it shows why ε and N₀ never appear: they live entirely inside Ŝ. With a background floating there is no such reduction. Minimise −lnL over (λ, ln S, ln b) with scipy.optimize.minimize, using the logs of the positive parameters so the optimiser cannot step to a negative mean, supply the analytic gradient, and confirm the Hessian at the optimum is positive definite instead of trusting that the routine reported success.

4The interval is a curvature, and the nuisances inflate it

Expand ln L about λ̂. Minus the second-derivative matrix, averaged over data, is the Fisher matrix Iab = Σᵢ μᵢ⁻¹ (∂μᵢ/∂θₐ)(∂μᵢ/∂θb) — a Gram matrix of the model's derivative vectors under the weight 1/μᵢ, hence positive semidefinite, and singular exactly when two parameters are degenerate. The covariance is I⁻¹, and the number you quote is σλ = √[(I⁻¹)λλ], never 1/√Iλλ: the diagonal of the inverse is not the inverse of the diagonal. With one nuisance parameter the two differ by 1/√(1 − ρ²), and for a long run with a floating amplitude ρ² = ½ exactly, so letting S float costs a factor √2 — twice the counts to buy it back. For the interval itself, Wilks' theorem makes −2Δ ln L a χ²₁ variable, so scan λ on a grid, re-maximise the nuisances at each point, and read off where Δ ln L = −½. With n = 9 recorded decays the profile interval is [0.70, 1.37] λ̂ while the curvature parabola claims a symmetric [0.67, 1.33]. Both cover close to 68% at that n, so the gap is not a verdict on either; what separates them is that the parabola depends on the variable it is drawn in — built in τ = 1/λ it maps back to [0.75, 1.50] λ̂ — while the Δ ln L = −½ interval is the same whether you scan λ, τ or T½.

5Background and dead time belong in μ, not in the data

Both corrections precede any statement about λ, and both belong inside the model. A non-paralysable detector with τd = 4.0 µs loses 7.4% of a 20 kHz true rate but only 2.0% of a 5 kHz one, so the loss is a tilt, not a scale factor: left uncorrected it flattens the early bins and biases λ̂ low by about 4% across two half-lives. Inverting the data instead — replacing kᵢ by kᵢ/(1 − mᵢ τd) — gets the mean right and destroys the statistics, because the rescaled counts are no longer integers and their variance is now the squared correction times the mean, while the likelihood still assumes variance equals mean. Fold the live-time fraction into μᵢ instead. Background is the same argument: kᵢ − b̂Δ is a difference of Poissons, Skellam-distributed and free to go negative, and Σ(kₙₑₜ ln μ − μ) is the likelihood of nothing at all. Keep the gross counts, let b float, and add the calibration run's own Poisson term — counts kb with mean b Tb — to the likelihood.

6λ is efficiency-free; the activity is not

The fit returns Ŝ = ε N₀ (1 − e(−λ̂Δ)), so an absolute activity A₀ = λ̂ N₀ = λ̂ Ŝ / [ε (1 − e(−λ̂Δ))] needs the efficiency, the solid angle, absorption in the source and entrance window, and the branching fraction of the line being counted. On a bench NaI setup those are known to perhaps 5%, while a run of 1.2 × 10⁶ counts over five half-lives pins λ to 0.12%. The same data therefore support a half-life quoted to four digits and an activity quoted to two, and no amount of extra counting shifts that division, because it is systematic rather than statistical. Finish by testing the interval rather than trusting it: draw 10⁴ pseudo-experiments from the fitted μᵢ with a Poisson sampler, refit each, and count how often the Δ ln L = −½ interval covers the input λ. Coverage is set by the total count, not the count per bin, because the information adds across bins: 400 counts spread over 100 bins cover 68% with either interval. Only when the total itself is small do the two part company, and then the pseudo-experiments, not a formula, decide which one to publish.

2

Key equations

Read the units, assumptions and limits before substituting.

Poisson mean of a timed bin

μᵢ = S e(−λ tᵢ) + b Δ, S = ε N₀ (1 − e(−λΔ))

ε and N₀ enter only through S, so letting the amplitude float makes λ̂ blind to both.

tᵢ bin start (s), Δ bin width (s), λ decay constant (s⁻¹), b background rate (s⁻¹), ε efficiency, counts dimensionless

Poisson log-likelihood

ln L(λ, S, b) = Σᵢ [ kᵢ ln μᵢ − μᵢ ] + const

A bin with kᵢ = 0 still contributes −μᵢ. Logging the data deletes that term.

kᵢ are integer counts; the dropped −Σ ln kᵢ! carries no parameter

Where the maximum sits (b = 0)

Σ kᵢ tᵢ / Σ kᵢ = Σ tᵢ e(−λ tᵢ) / Σ e(−λ tᵢ)

λ̂ matches the observed mean count time to the model's — a 1-D root find, not a linear regression.

Equal bins; the amplitude profiles out as Ŝ = Σ kᵢ / Σ e(−λ̂ tᵢ)

Fisher matrix and the covariance

Iab = Σᵢ μᵢ⁻¹ (∂μᵢ/∂θₐ)(∂μᵢ/∂θb), Cov ≈ I⁻¹

σλ = √[(I⁻¹)λλ] ≥ 1/√Iλλ: floating S and b inflates the error by 1/√(1 − ρ²), ρ being λ's multiple correlation with them.

θ = (λ, S, b). I is a Gram matrix of derivative vectors under the weight 1/μᵢ

What sets the precision on λ

σλ = 1 / √( K Varw t ), wᵢ = μᵢ / K

Counts alone are not enough — you need a lever arm in t. Unbinned and complete, Varw t = 1/λ² and σλ = λ/√K.

K expected total counts; Varw t is the variance of arrival time under the model weights (s²); b = 0 with S floating

Dead time, before anything else

non-paralysable m = r/(1 + r τd) · paralysable m = r e(−r τd)

Losses grow with rate, so they flatten the early bins and pull λ̂ low — a bias no extra counting removes.

m observed rate, r true rate (both s⁻¹), τd dead time (s)
3

Interactive lab

Predict first. Explore the model. Compare the result.

Explore the model

9
4 to 60; steps of 1.
1.50
0.4 to 1.9; steps of 0.05.

Try this. Set n = 4 and drag the trial value to 1.5, where the dashed parabola crosses −½: the exact curve is still above that line, so the Δ ln L = −½ interval runs further up in λ than the parabola's. Push n to 60 and the two curves merge — the large-sample limit arriving.

Live results

Δ lnL EXACT
-0.851
Δ lnL PARABOLA
-1.125
PARABOLIC σ/λ = 1/√n
0.333
WILKS √(2|Δ lnL|)
1.30 σ

Results follow this lesson’s model and assumptions. Displayed values are rounded.

Interactive Physics V modelThe exact log-likelihood profile Δ ln L(λ) = n [ln u − u + 1] with u = λ/λ̂, for n = 9 recorded decay times (solid), against the parabola −n(u−1)²/2 built from the Fisher curvature (dashed). Zero sits at the top of the frame and the dashed horizontal is Δ ln L = −½. At the trial value u = 1.50 the exact profile reads -0.851 and the parabola -1.125.Δ ln L(λ) = n [ ln u − u + 1 ], u = λ / λ̂, n = 9 decayssolid: exact profile dashed: Fisher parabola −n(u−1)²/2 0 at topΔ ln L = −½00.51.0 λ̂1.5λ / λ̂
The exact log-likelihood profile Δ ln L(λ) = n [ln u − u + 1] with u = λ/λ̂, for n = 9 recorded decay times (solid), against the parabola −n(u−1)²/2 built from the Fisher curvature (dashed). Zero sits at the top of the frame and the dashed horizontal is Δ ln L = −½. At the trial value u = 1.50 the exact profile reads −0.851 and the parabola −1.125.

Predict → change one variable → check

Plan a change before running it. Every other input stays at the saved baseline.

Saved baseline. Recorded decays n: 9; Trial value λ / λ̂: 1.50

Baseline 9; choose 4 to 60, in steps of 1.
4. Compared with the saved baseline, this result will…

This experiment is kept only while this page is open. It does not change saved course progress.

4

Catch the common trap

The usual move is to plot ln k against t, fit a straight line, and read λ off the slope with an error bar from the fit covariance — on the grounds that the log of an exponential is linear, so the two fits must agree. They agree only in a limit. When every bin holds many counts, E[ln k] → ln μ and Var(ln k) → 1/μ, and a line weighted by kᵢ then reproduces both the likelihood's slope and its error, 1/√(K Varw t). A decay run leaves that limit by construction: its tail is a string of few-count bins, exactly where the logarithm is biased, undefined at zero and unable to carry a background, while an unweighted line hands those bins the full leverage of the end of the range. The Poisson likelihood needs no limit, because it never transforms the data.

5

Practice & worked examples

3 authored examples. Make an attempt, then reveal the reasoning one step at a time.

EasyExample 1

A gated timer records the individual arrival times of n = 400 counts from an eluted Ba-137m sample over a window long enough that truncation is negligible, and their sum is Σ tⱼ = 8.72 × 10⁴ s. Estimate λ, its standard error, and the half-life with an uncertainty, then compare with the tabulated T½ = 153.0 s.

Sketch your answer or reasoning, then compare it with the authored solution. Your writing is not automatically graded or saved.

0 of 5 steps revealed.

MediumExample 2

Two runs on the same nuclide each collect K = 40 000 counts, one over a window of a single half-life and one over five. Using σλ = 1/√(K Varw t) with weights w(t) ∝ e(−λt) on [0, T], find the relative error on λ for each and say what the short run is actually short of.

Sketch your answer or reasoning, then compare it with the authored solution. Your writing is not automatically graded or saved.

0 of 5 steps revealed.

HardExample 3

A NaI detector with non-paralysable dead time τd = 4.0 µs watches an eluted Ba-137m source. The observed rate summed over the whole spectrum is 18 529 s⁻¹ in the first bin and 4 913.5 s⁻¹ in a bin 306.0 s later; a separate run gives a background of 12 s⁻¹. Over five half-lives the 662 keV photopeak window used in the fit collects K = 1.2 × 10⁶ counts. Find λ̂ with and without the dead-time correction, and express the difference in units of the statistical error.

Sketch your answer or reasoning, then compare it with the authored solution. Your writing is not automatically graded or saved.

0 of 6 steps revealed.

6

Quick check

Select an answer and explain it before checking.

A 40-bin gamma run on an eluted Ba-137m sample has a separately measured background, and several late bins read zero counts. Which procedure estimates λ and its 68% interval correctly?
7

Review & continue

Maximum-likelihood estimation of a decay constant treats each timed bin's count as a Poisson draw whose mean is the model's integrated activity, and chooses the λ that makes the observed set of integers most probable.

  • Explain the relationship without looking at the equation.
  • Check a sign, a unit and a model assumption in your working.
  • Return to the lab or worked example if a step is still unclear.

Extra challenging questions

Connect several ideas, explore supplied data, and compare your reasoning with a worked solution.