# GammaPoiss: Gamma-Poisson distribution In extraDistr: Additional Univariate and Multivariate Distributions

## Description

Probability mass function and random generation for the gamma-Poisson distribution.

## Usage

 ```1 2 3 4 5``` ```dgpois(x, shape, rate, scale = 1/rate, log = FALSE) pgpois(q, shape, rate, scale = 1/rate, lower.tail = TRUE, log.p = FALSE) rgpois(n, shape, rate, scale = 1/rate) ```

## Arguments

 `x, q` vector of quantiles. `shape, scale` shape and scale parameters. Must be positive, scale strictly. `rate` an alternative way to specify the scale. `log, log.p` logical; if TRUE, probabilities p are given as log(p). `lower.tail` logical; if TRUE (default), probabilities are P[X ≤ x] otherwise, P[X > x]. `n` number of observations. If `length(n) > 1`, the length is taken to be the number required.

## Details

Gamma-Poisson distribution arises as a continuous mixture of Poisson distributions, where the mixing distribution of the Poisson rate λ is a gamma distribution. When X ~ Poisson(λ) and λ ~ Gamma(α, β), then X ~ Gamma-Poisson(α, β).

Probability mass function

f(x) = Γ(α+x) / (x!*Γ(α)) * (β/(1+β))^x * (1-β/(1+β))^α

Cumulative distribution function is calculated using recursive algorithm that employs the fact that Γ(x) = (x - 1)!. This enables re-writing probability mass function as

f(x) = ((α+x-1)!)/(x!*Γ(α))*(β/(1+β))^x*(1-β/(1+β))^α

what makes recursive updating from x to x+1 easy using the properties of factorials

f(x+1) = ((α+x-1)!*(α+x))/(x!*(x+1)*Γ(α))*(β/(1+β))^x*(β/(1+β))*(1-β/(1+β))^α

and let's us efficiently calculate cumulative distribution function as a sum of probability mass functions

F(x) = f(0)+...+f(x)

`Gamma`, `Poisson`
 ```1 2 3 4 5 6 7 8``` ```x <- rgpois(1e5, 7, 0.002) xx <- seq(0, 12000, by = 1) hist(x, 100, freq = FALSE) lines(xx, dgpois(xx, 7, 0.002), col = "red") hist(pgpois(x, 7, 0.002)) xx <- seq(0, 12000, by = 0.1) plot(ecdf(x)) lines(xx, pgpois(xx, 7, 0.002), col = "red", lwd = 2) ```