# Zero-truncated Poisson distribution

In probability theory, the zero-truncated Poisson (ZTP) distribution is a certain discrete probability distribution whose support is the set of positive integers. This distribution is also known as the conditional Poisson distribution or the positive Poisson distribution. It is the conditional probability distribution of a Poisson-distributed random variable, given that the value of the random variable is not zero. Thus it is impossible for a ZTP random variable to be zero. Consider for example the random variable of the number of items in a shopper's basket at a supermarket checkout line. Presumably a shopper does not stand in line with nothing to buy (i.e., the minimum purchase is 1 item), so this phenomenon may follow a ZTP distribution.

Since the ZTP is a truncated distribution with the truncation stipulated as k > 0, one can derive the probability mass function g(k;λ) from a standard Poisson distribution f(k;λ) as follows: 

$g(k;\lambda )=P(X=k\mid X>0)={\frac {f(k;\lambda )}{1-f(0;\lambda )}}={\frac {\lambda ^{k}e^{-\lambda }}{k!\left(1-e^{-\lambda }\right)}}={\frac {\lambda ^{k}}{(e^{\lambda }-1)k!}}$ The mean is

$\operatorname {E} [X]={\frac {\lambda }{1-e^{-\lambda }}}={\frac {\lambda e^{\lambda }}{e^{\lambda }-1}}$ and the variance is

$\operatorname {Var} [X]={\frac {\lambda +\lambda ^{2}}{1-e^{-\lambda }}}-{\frac {\lambda ^{2}}{(1-e^{-\lambda })^{2}}}=\operatorname {E} [X](1+\lambda -\operatorname {E} [X])$ ## Parameter estimation

The maximum-likelihood estimator ${\widehat {\lambda }}$ for the parameter $\lambda$ is obtained by solving

${\frac {\widehat {\lambda }}{1-e^{-{\widehat {\lambda }}}}}={\bar {x}}$ where ${\bar {x}}$ is the sample mean.

## Generated Zero-truncated Poisson-distributed random variables

Random variables sampled from the Zero-truncated Poisson distribution may be achieved using algorithms derived from Poisson distributing sampling algorithms.

    init:
Let k ← 1, t ← e−λ / (1 - e−λ) * λ, s ← t.
Generate uniform random number u in [0,1].
while s < u do:
k ← k + 1.
t ← t * λ / k.
s ← s + t.
return k.