I thought I’d show some examples of solving some common statistical word problems using Python. Today I’ll look at exponential random variables; this is a continuous random variable used to model the waiting time between independent events. Sometimes this is posed as the waiting time for the first event in a Poisson process.

Suppose a clerk is helping people in a line, one at a time. Let be the number of minutes needed to help each person. Assume that has an exponential distribution, with a mean consultation time of 4 minutes.

## Find the probability that a wait time is in some range

Find the probability that the clerk spends 3 to 5 minutes with any given person. For the scipy.stats implementation of the exponential CDF function, the scale parameter is the expected wait time for each consultation.

import scipy import scipy.stats scipy.stats.expon.cdf(5, scale=4) - scipy.stats.expon.cdf(3, scale=4)

0.18586175588082454

## Find the maximum wait time experienced 50% of the time

Find the 50th percentile, meaning, in 50% of interactions, the clerk spends minutes or less; find . To solve this, we use the percent point function, this is the inverse of the cumulative density function, and it works in percentiles.

scipy.stats.expon.ppf(0.5, scale=4)

2.772588722239781

So this means that half of the interactions take about 2.8 minutes or less.

## Fit parameters to observed data

For this exercise we’ll fake some data:

X = scipy.stats.expon.rvs(scale=4, size=2000) scipy.stats.expon.fit(X) # returns (loc, scale)