The Poisson process family has a rich collection of closure properties: combining, decomposing, and conditioning Poisson processes yields more Poisson processes. These results are not only mathematically elegant; they are practically useful for building complex models from simple components.
Theorem (Superposition). If N₁, N₂, ..., Nₖ are independent Poisson processes with intensity functions λ₁(t), λ₂(t), ..., λₖ(t), then their superposition (union of all event times) is a Poisson process with intensity:
λ(t) = λ₁(t) + λ₂(t) + ... + λₖ(t)
Intuition: Each process contributes independently to the overall arrival rate. Knowing which sub-process produced a given event tells you nothing about the others.
Example: Three independent server instances each handling requests at rate 2 req/s. The combined request stream is Poisson with rate 6 req/s. This is why the Poisson model is so prevalent in queueing theory.
def superpose(*processes):
all_times = np.concatenate(processes)
return np.sort(all_times)
Theorem (Thinning / Coloring). Let N be a Poisson process with intensity λ(t). Independently color each event: with probability p(t) it is type 1, with probability 1 − p(t) it is type 0. Then:
p(t) · λ(t)(1 − p(t)) · λ(t)N₁ ~ NHPP(p(t) · λ(t))
N₀ ~ NHPP((1−p(t)) · λ(t))
N₁ ⊥ N₀
Practical significance: Thinning is the mechanism behind Lewis-Shedler simulation (chapter 3). It also explains how to model events of different types originating from a common Poisson stream.
Independence of thinned streams is a key property: knowing about type-1 events gives no information about type-0 events. This is unique to the Poisson family.
Theorem. Given N(T) = n (exactly n events in [0, T]), the event times t₁ < t₂ < ... < tₙ are distributed as the order statistics of n i.i.d. Uniform(0, T) random variables.
This is a remarkable result: conditioning on the total count completely removes the Poisson randomness, and the event times become uniform.
Generalization for NHPP: Given N(T) = n, the event times are i.i.d. with density:
f(t) = λ(t) / Λ(T), t ∈ [0, T]
Events concentrate in regions where λ(t) is large.
# Test conditional uniformity via KS test
from scipy import stats
n = len(events)
scaled = events / T # should be Uniform(0,1)
ks_stat, p_value = stats.kstest(scaled, 'uniform')
Palm theory asks: what does the process look like from the perspective of a typical event? For a stationary HPP with rate λ, the Palm distribution is the conditional distribution of the process given an event at time 0.
By the PASTA property (Poisson Arrivals See Time Averages): for a Poisson process, the distribution seen by an arriving event equals the unconditional time-average distribution of the system state. This is crucial in queueing theory.
All three properties (superposition, thinning independence, conditional uniformity) hold for Poisson processes but fail for Hawkes processes. This is precisely because Hawkes processes have memory:
N(T) = n for a Hawkes process, the event times are not uniform — they are clustered due to self-excitation.Recognizing these failures is important when modeling: if you observe that thinned sub-streams are dependent, a Poisson model is inadequate.
A Neyman-Scott cluster process is constructed as follows:
The resulting process of all offspring (parents included or excluded) is a Poisson process under mild conditions — this is the cluster property of Poisson processes.
This cluster representation is exactly how we will understand the Hawkes process (chapter 6): each event spawns offspring according to the excitation kernel. The key difference from Neyman-Scott is that Hawkes offspring can themselves spawn offspring (it is a branching process, not just two levels).
| ← Chapter 3 | Table of Contents | Chapter 5: Renewal Processes → |