BetaNegBinom function

Beta-negative binomial distribution

Beta-negative binomial distribution

Probability mass function and random generation for the beta-negative binomial distribution.

dbnbinom(x, size, alpha = 1, beta = 1, log = FALSE) pbnbinom(q, size, alpha = 1, beta = 1, lower.tail = TRUE, log.p = FALSE) rbnbinom(n, size, alpha = 1, beta = 1)

Arguments

  • x, q: vector of quantiles.

  • size: number of trials (zero or more). Must be strictly positive, need not be integer.

  • alpha, beta: non-negative parameters of the beta distribution.

  • log, log.p: logical; if TRUE, probabilities p are given as log(p).

  • lower.tail: logical; if TRUE (default), probabilities are P[Xx]P[X \le x]

    otherwise, P[X>x]P[X > x].

  • n: number of observations. If length(n) > 1, the length is taken to be the number required.

Details

If p Beta(α,β)p ~ Beta(\alpha, \beta) and X NegBinomial(r,p)X ~ NegBinomial(r, p), then X BetaNegBinomial(r,α,β)X ~ BetaNegBinomial(r, \alpha, \beta).

Probability mass function

f(x)=Γ(r+x)x!Γ(r)B(α+r,β+x)B(α,β)f(x)=Γ(r+x)/(x!Γ(r))B(α+r,β+x)/B(α,β) f(x) = \frac{\Gamma(r+x)}{x! \,\Gamma(r)}\frac{\mathrm{B}(\alpha+r, \beta+x)}{\mathrm{B}(\alpha, \beta)}f(x) = \Gamma(r+x)/(x! \Gamma(r)) * B(\alpha+r, \beta+x) / B(\alpha, \beta)

Cumulative distribution function is calculated using recursive algorithm that employs the fact that Γ(x)=(x1)!\Gamma(x) = (x - 1)! and c("\n\n", "B(x,y)=(Gamma(x)Gamma(y))/Gamma(x+y)\nB(x, y) = (\\Gamma(x)\\Gamma(y))/\\Gamma(x+y)\n"). This enables re-writing probability mass function as

f(x)=(r+x1)!x!Γ(r)(α+r1)!(β+x1)!(α+β+r+x1)!B(α,β)f(x)=((r+x1)!)/(x!Γ(r))(((α+r1)!(β+x1)!)/((α+β+r+x1)!))/B(α,β) f(x) = \frac{(r+x-1)!}{x! \, \Gamma(r)} \frac{\frac{(\alpha+r-1)!\,(\beta+x-1)!}{(\alpha+\beta+r+x-1)!}}{\mathrm{B}(\alpha,\beta)}f(x) = ((r+x-1)!)/(x!*\Gamma(r))*(((\alpha+r-1)!*(\beta+x-1)!)/((\alpha+\beta+r+x-1)!))/B(\alpha,\beta)

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

f(x+1)=(r+x1)!(r+x)x!(x+1)Γ(r)(α+r1)!(β+x1)!(β+x)(α+β+r+x1)!(α+β+r+x)B(α,β)f(x+1)=((r+x1)!(r+x))/(x!(x+1)Γ(r))(((α+r1)!(β+x1)!(β+x))/((α+β+r+x1)!(α+β+r+x)))/B(α,β) f(x+1) = \frac{(r+x-1)!\,(r+x)}{x!\,(x+1) \, \Gamma(r)} \frac{\frac{(\alpha+r-1)!\,(\beta+x-1)!\,(\beta+x)}{(\alpha+\beta+r+x-1)!\,(\alpha+\beta+r+x)}}{\mathrm{B}(\alpha,\beta)}f(x+1) = ((r+x-1)!*(r+x))/(x!*(x+1)*\Gamma(r))*(((\alpha+r-1)!*(\beta+x-1)!*(\beta+x))/((\alpha+\beta+r+x-1)!*(\alpha+\beta+r+x)))/B(\alpha,\beta)

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

F(x)=k=0xf(k)F(x)=f(0)+...+f(x) F(x) = \sum_{k=0}^x f(k)F(x) = f(0)+...+f(x)

Examples

x <- rbnbinom(1e5, 1000, 5, 13) xx <- 0:1e5 hist(x, 100, freq = FALSE) lines(xx-0.5, dbnbinom(xx, 1000, 5, 13), col = "red") hist(pbnbinom(x, 1000, 5, 13)) xx <- seq(0, 1e5, by = 0.1) plot(ecdf(x)) lines(xx, pbnbinom(xx, 1000, 5, 13), col = "red", lwd = 2)

See Also

Beta, NegBinomial

  • Maintainer: Tymoteusz Wolodzko
  • License: GPL-2
  • Last published: 2023-11-30