Learn R Programming

distributions3 (version 0.2.2)

HurdlePoisson: Create a hurdle Poisson distribution

Description

Hurdle Poisson distributions are frequently used to model counts with many zero observations.

Usage

HurdlePoisson(lambda, pi)

Value

A HurdlePoisson object.

Arguments

lambda

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

pi

Zero-hurdle 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 hurdle Poisson random variable with parameter lambda = \(\lambda\).

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

Mean: $$ \lambda \cdot \frac{\pi}{1 - e^{-\lambda}} $$

Variance: \(m \cdot (\lambda + 1 - m)\), where \(m\) is the mean above.

Probability mass function (p.m.f.): \(P(X = 0) = 1 - \pi\) and for \(k > 0\)

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

where \(f(k; \lambda)\) is the p.m.f. of the Poisson distribution.

Cumulative distribution function (c.d.f.): \(P(X \le 0) = 1 - \pi\) and for \(k > 0\)

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

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

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

Omitted for now.

See Also

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

Examples

Run this code
## set up a hurdle Poisson distribution
X <- HurdlePoisson(lambda = 2.5, pi = 0.75)
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