Description Usage Arguments Details Value References Examples

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

.

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

`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

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

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.