Let \(X\) be a random variable representing the total number of events occurring in a fixed interval of time or space, satisfying the following:
Events occur independently at a constant average rate.
Two events cannot occur at the exact same instantaneous moment.
\(\lambda\) (lambda) represents the expected (average) number of occurrences in that interval.
Pmf as a Binomial Limit
The Poisson distribution can be derived by slicing a continuous interval into \(n\) tiny, equal sub-intervals.
Let the probability of an event in any single sub-interval be \(p = \frac{\lambda}{n}\). If \(n \to \infty\), the number of successes \(X\) approaches a Poisson random variablevand its pmf is given by
To calculate the cumulative density function (cdf), we use ppois. The calculation for Example 1 simplifies to:
ppois(2, lambda=4)
[1] 0.2381033
To discover specific thresholds, we use the quantile function qpois. To run stochastic simulations, we use rpois.
Example 3
If an intersection averages 3 accidents per month (\(\lambda = 3\)), what is the probability of experiencing exactly 60 accidents next year?
Solution:
The number of accidents, X, in a 12-month period has a Poisson(36) distribution.
\(P(X = 60)\) is evaluated as:
dpois(60, lambda =36)
[1] 6.658461e-05
Example 4
What is the probability of experiencing less than 36 accidents?
Solution:
\(P(X < 36) = P(X \le 35)\) is evaluated as:
ppois(35, lambda =36)
[1] 0.4778333
Example 5
What is the probability of experiencing anywhere from 30 to 40 accidents?
Solution:
\(P(30 \le X \le 40)\) is calculated as:
ppois(40, lambda =36) -ppois(29, lambda =36)
[1] 0.6392148
Example 6
What is the 3rd quartile (75th percentile) of the number of accidents per year?
Solution:
qpois(0.75, lambda =36)
[1] 40
Empirical Simulation: Call Arrivals
What happens if we simulate a Poisson process empirically over many intervals?
Experiment: Simulate monitoring an arrival loop with an average rate of \(\lambda = 8\) events per interval.
Repetitions: Run this process \(1,000\) independent times.
Objective: Map the results to show how close the empirical mean and variance are to \(\lambda\).
Simulation
library(ggplot2)set.seed(42) # Ensure reproducible results# 1000 intervals simulated with average lambda = 8sim_events <-rpois(n =1000, lambda =8)df_sim <-data.frame(events = sim_events)sim_mean <-mean(sim_events)sim_var <-var(sim_events)plot_title <-paste0("Empirical Poisson Simulation (1000 intervals of lambda = 8)\n","Simulated Mean: ", round(sim_mean, 2), " | Simulated Variance: ", round(sim_var, 2))ggplot(df_sim, aes(x = events)) +geom_histogram(binwidth =1, fill ="purple", color ="white", alpha =0.8) +geom_vline(xintercept = sim_mean, color ="black", linetype ="dashed", size =1) +labs(title = plot_title, x ="Number of Events (X)", y ="Frequency") +theme_minimal()
Simulation
Note that because both theoretical mean and variance are equal to \(\lambda = 8\), the empirical mean and variance from the simulation are pretty close.
References
History of the Distribution: Hald, A. (1998). A History of Mathematical Statistics from 1750 to 1930. New York, NY: John Wiley & Sons.
Properties of the Distribution Ross, S. M. (2014). A First Course in Probability (9th ed.). Pearson.
Computational Software: R Core Team (2026). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. Vienna, Austria. Available at https://www.R-project.org/.