Learn R Programming

distributions3 (version 0.2.2)

ZIPoisson: Create a zero-inflated Poisson distribution

Description

Zero-inflated Poisson distributions are frequently used to model counts with many zero observations.

Usage

ZIPoisson(lambda, pi)

Value

A ZIPoisson object.

Arguments

lambda

Parameter of the Poisson component of the distribution. Can be any positive number.

pi

Zero-inflation probability, can be any value in [0, 1].

Details

We recommend reading this documentation on https://alexpghayes.github.io/distributions3/, where the math will render with additional detail.

In the following, let \(X\) be a zero-inflated Poisson random variable with parameter lambda = \(\lambda\).

Support: \(\{0, 1, 2, 3, ...\}\)

Mean: \((1 - \pi) \cdot \lambda\)

Variance: \((1 - \pi) \cdot \lambda \cdot (1 + \pi \cdot \lambda)\)

Probability mass function (p.m.f.):

$$ P(X = k) = \pi \cdot I_{0}(k) + (1 - \pi) \cdot f(k; \lambda) $$

where \(I_{0}(k)\) is the indicator function for zero and \(f(k; \lambda)\) is the p.m.f. of the Poisson distribution.

Cumulative distribution function (c.d.f.):

$$ P(X \le k) = \pi + (1 - \pi) \cdot F(k; \lambda) $$

where \(F(k; \lambda)\) is the c.d.f. of the Poisson distribution.

Moment generating function (m.g.f.):

$$ E(e^{tX}) = \pi + (1 - \pi) \cdot e^{\lambda (e^t - 1)} $$

See Also

Other discrete distributions: Bernoulli(), Binomial(), Categorical(), Geometric(), HurdleNegativeBinomial(), HurdlePoisson(), HyperGeometric(), Multinomial(), NegativeBinomial(), Poisson(), PoissonBinomial(), ZINegativeBinomial(), ZTNegativeBinomial(), ZTPoisson()

Examples

Run this code
## set up a zero-inflated Poisson distribution
X <- ZIPoisson(lambda = 2.5, pi = 0.25)
X

## standard functions
pdf(X, 0:8)
cdf(X, 0:8)
quantile(X, seq(0, 1, by = 0.25))

## cdf() and quantile() are inverses for each other
quantile(X, cdf(X, 3))

## density visualization
plot(0:8, pdf(X, 0:8), type = "h", lwd = 2)

## corresponding sample with histogram of empirical frequencies
set.seed(0)
x <- random(X, 500)
hist(x, breaks = -1:max(x) + 0.5)

Run the code above in your browser using DataLab