# PoissonBinomial-Distribution: The Poisson Binomial Distribution In PoissonBinomial: Efficient Computation of Ordinary and Generalized Poisson Binomial Distributions

## Description

Density, distribution function, quantile function and random generation for the Poisson binomial distribution with probability vector `probs`.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21``` ```dpbinom(x, probs, wts = NULL, method = "DivideFFT", log = FALSE) ppbinom( x, probs, wts = NULL, method = "DivideFFT", lower.tail = TRUE, log.p = FALSE ) qpbinom( p, probs, wts = NULL, method = "DivideFFT", lower.tail = TRUE, log.p = FALSE ) rpbinom(n, probs, wts = NULL, method = "DivideFFT", generator = "Sample") ```

## Arguments

 `x` Either a vector of observed numbers of successes or NULL. If NULL, probabilities of all possible observations are returned. `probs` Vector of probabilities of success of each Bernoulli trial. `wts` Vector of non-negative integer weights for the input probabilities. `method` Character string that specifies the method of computation and must be one of `"DivideFFT"`, `"Convolve"`, `"Characteristic"`, `"Recursive"`, `"Mean"`, `"GeoMean"`, `"GeoMeanCounter"`, `"Poisson"`, `"Normal"` or `"RefinedNormal"` (abbreviations are allowed). `log, log.p` Logical value indicating if results are given as logarithms. `lower.tail` Logical value indicating if results are P[X ≤q x] (if `TRUE`; default) or P[X > x] (if `FALSE`). `p` Vector of probabilities for computation of quantiles. `n` Number of observations. If `length(n) > 1`, the length is taken to be the number required. `generator` Character string that specifies the random number generator and must either be `"Sample"` (default) or `"Bernoulli"` (abbreviations are allowed). See Details for more information.

## Details

See the references for computational details. The Divide and Conquer (`"DivideFFT"`) and Direct Convolution (`"Convolve"`) algorithms are derived and described in Biscarri, Zhao & Brunner (2018). The Discrete Fourier Transformation of the Characteristic Function (`"Characteristic"`), the Recursive Formula (`"Recursive"`), the Poisson Approximation (`"Poisson"`), the Normal Approach (`"Normal"`) and the Refined Normal Approach (`"RefinedNormal"`) are described in Hong (2013). The calculation of the Recursive Formula was modified to overcome the excessive memory requirements of Hong's implementation.

The `"Mean"` method is a naive binomial approach using the arithmetic mean of the probabilities of success. Similarly, the `"GeoMean"` and `"GeoMeanCounter"` procedures are binomial approximations, too, but they form the geometric mean of the probabilities of success (`"GeoMean"`) and their counter probabilities (`"GeoMeanCounter"`), respectively.

In some special cases regarding the values of `probs`, the `method` parameter is ignored (see Introduction vignette).

Random numbers can be generated in two ways. The `"Sample"` method uses `R`'s `sample` function to draw random values according to their probabilities that are calculated by `dgpbinom`. The `"Bernoulli"` procedure ignores the `method` parameter and simulates Bernoulli-distributed random numbers according to the probabilities in `probs` and sums them up. It is a bit slower than the `"Sample"` generator, but may yield better results, as it allows to obtain observations that cannot be generated by the `"Sample"` procedure, because `dgpbinom` may compute 0-probabilities, due to rounding, if the length of `probs` is large and/or its values contain a lot of very small values.

## Value

`dpbinom` gives the density, `ppbinom` computes the distribution function, `qpbinom` gives the quantile function and `rpbinom` generates random deviates.

For `rpbinom`, the length of the result is determined by `n`, and is the lengths of the numerical arguments for the other functions.

## References

Hong, Y. (2013). On computing the distribution function for the Poisson binomial distribution. Computational Statistics & Data Analysis, 59, pp. 41-51. doi: 10.1016/j.csda.2012.10.006

Biscarri, W., Zhao, S. D. and Brunner, R. J. (2018) A simple and fast method for computing the Poisson binomial distribution. Computational Statistics and Data Analysis, 31, pp. 216–222. doi: 10.1016/j.csda.2018.01.007

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53``` ```set.seed(1) pp <- c(0, 0, runif(995), 1, 1, 1) qq <- seq(0, 1, 0.01) dpbinom(NULL, pp, method = "DivideFFT") ppbinom(450:550, pp, method = "DivideFFT") qpbinom(qq, pp, method = "DivideFFT") rpbinom(100, pp, method = "DivideFFT") dpbinom(NULL, pp, method = "Convolve") ppbinom(450:550, pp, method = "Convolve") qpbinom(qq, pp, method = "Convolve") rpbinom(100, pp, method = "Convolve") dpbinom(NULL, pp, method = "Characteristic") ppbinom(450:550, pp, method = "Characteristic") qpbinom(qq, pp, method = "Characteristic") rpbinom(100, pp, method = "Characteristic") dpbinom(NULL, pp, method = "Recursive") ppbinom(450:550, pp, method = "Recursive") qpbinom(qq, pp, method = "Recursive") rpbinom(100, pp, method = "Recursive") dpbinom(NULL, pp, method = "Mean") ppbinom(450:550, pp, method = "Mean") qpbinom(qq, pp, method = "Mean") rpbinom(100, pp, method = "Mean") dpbinom(NULL, pp, method = "GeoMean") ppbinom(450:550, pp, method = "GeoMean") qpbinom(qq, pp, method = "GeoMean") rpbinom(100, pp, method = "GeoMean") dpbinom(NULL, pp, method = "GeoMeanCounter") ppbinom(450:550, pp, method = "GeoMeanCounter") qpbinom(qq, pp, method = "GeoMeanCounter") rpbinom(100, pp, method = "GeoMeanCounter") dpbinom(NULL, pp, method = "Poisson") ppbinom(450:550, pp, method = "Poisson") qpbinom(qq, pp, method = "Poisson") rpbinom(100, pp, method = "Poisson") dpbinom(NULL, pp, method = "Normal") ppbinom(450:550, pp, method = "Normal") qpbinom(qq, pp, method = "Normal") rpbinom(100, pp, method = "Normal") dpbinom(NULL, pp, method = "RefinedNormal") ppbinom(450:550, pp, method = "RefinedNormal") qpbinom(qq, pp, method = "RefinedNormal") rpbinom(100, pp, method = "RefinedNormal") ```

PoissonBinomial documentation built on July 27, 2021, 9:08 a.m.