Probability Distributions and their Stories

Discrete distributions

Poisson distribution

  • Story. Rare events occur with a rate λ per unit time. There is no "memory" of previous events; i.e., that rate is independent of time. A process that generates such events is called a Poisson process. The occurrence of a rare event in this context is referred to as an arrival. The number n of arrivals in unit time is Poisson distributed.
  • Example. The number of mutations in a strand of DNA per unit length (since mutations are rare) are Poisson distributed.
  • Parameter. The single parameter is the rate λ of the rare events occurring.
  • Support. The Poisson distribution is supported on the set of nonnegative integers.
  • Probability mass function.

    \begin{align}f(n;\lambda) = \frac{\lambda^n}{n!}\,\mathrm{e}^{-\lambda}\end{align}.

  • Usage

  • Package Syntax
    NumPy np.random.poisson(lam)
    SciPy scipy.stats.poisson(lam)
    Stan poisson(lam)


  • Related distributions.
    • In the limit of N→∞ and θ→0 such that the quantity Nθ is fixed, the Binomial distribution becomes a Poisson distribution with parameter Nθ. Thus, for large N and small θ,
    \begin{align}\\ \phantom{blah}f_\mathrm{Poisson}(n;\lambda) \approx f_\mathrm{Binomial}(n;N, \theta)\\ \phantom{blah}\end{align},
    with λ=Nθ. Considering the biological example of mutations, this is Binomially distributed: There are N bases, each with a probability θ of mutation, so the number of mutations, n is binomially distributed. Since θ is small and N is large, it is approximately Poisson distributed.

    • Under the (μ,ϕ) parametrization of the Negative Binomial distribution, taking the limit of large ϕ yields the Poisson distribution.
params = [dict(name='λ', start=1, end=20, value=5, step=0.1)] 
app = distribution_plot_app(x_min=0,
                            x_max=40,
                            scipy_dist=st.poisson,
                           params=params,
                           x_axis_label='n',
                           title='Poisson')
bokeh.io.show(app, notebook_url=notebook_url)