SciPy - Poisson Distribution

Poisson Distribution is a discrete probability distribution and it expresses the probability of a given number of events occurring in a fixed interval of time or space if these events occur with a known constant mean rate and independently of the time since the last event.

The probability mass function (pmf) of poisson distribution is defined as: Where, k is the number of occurrences (k=0,1,2...), μ is average number of events.

An poisson distribution has mean μ and variance μ.

The cumulative distribution function (cdf) evaluated at k, is the probability that the random variable (X) will take a value less than or equal to k. The cdf of poisson distribution is defined as: Where, [k] is the greatest integer less than or equal to k.

The scipy.stats.poisson contains all the methods required to generate and work with a poisson distribution. The most frequently methods are mentioned below:

Syntax

scipy.stats.poisson.pmf(k, mu, loc=1)
scipy.stats.poisson.cdf(k, mu, loc=1)
scipy.stats.poisson.ppf(q, mu, loc=1)
scipy.stats.poisson.rvs(mu, loc=0, size=1)

Parameters

 k Required. Specify float or array_like of floats representing random variable. q Required. Specify float or array_like of floats representing probabilities. mu Required. Specify float or array_like of floats of (non-negative) means. loc Optional. Specify the location of the distribution. Default is 1. size Optional. Specify output shape.

poisson.pmf()

The poisson.pmf() function measures probability mass function (pmf) of the distribution.

from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#creating an array of values between
#0 to 20 with a difference of 1
x = np.arange(0, 20, 1)

y = poisson.pmf(x, 10, 0)

plt.plot(x, y, 'bo')
plt.show()

The output of the above code will be: poisson.cdf()

The poisson.cdf() function returns cumulative distribution function (cdf) of the distribution.

from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#creating an array of values between
#0 to 20 with a difference of 0.01
x = np.arange(0, 20, 0.01)

y = poisson.cdf(x, 10, 0)

plt.plot(x, y)
plt.show()

The output of the above code will be: poisson.ppf()

The poisson.ppf() function takes the probability value and returns cumulative value corresponding to probability value of the distribution.

from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#creating an array of probability from
#0 to 1 with a difference of 0.001
x = np.arange(0, 1, 0.001)

y = poisson.ppf(x, 10, 0)

plt.plot(x, y)
plt.show()

The output of the above code will be: poisson.rvs()

The poisson.ppf() function generates an array containing specified number of random values drawn from the given poisson distribution. In the example below, a histogram is plotted to visualize the result.

from scipy.stats import poisson
import matplotlib.pyplot as plt
import numpy as np

#fixing the seed for reproducibility
#of the result
np.random.seed(10)

#creating a vector containing 10000
#random values from poisson distribution
y = poisson.rvs(10, 0, 10000)

#creating bin
bin = np.arange(0,25,1)

plt.hist(y, bins=bin, edgecolor='blue')
plt.show()

The output of the above code will be: 5