PoissonBinomial-Distribution | R Documentation |

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

.

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")

`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 |

`log, log.p` |
Logical value indicating if results are given as logarithms. |

`lower.tail` |
Logical value indicating if results are |

`p` |
Vector of probabilities for computation of quantiles. |

`n` |
Number of observations. If |

`generator` |
Character string that specifies the random number
generator and must either be |

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.

`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.

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

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")

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.