The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Each procedure’s probability mass function (PMF) and cumulative
distribution function (CDF) was implemented in C++ using the
Rcpp
package. By means of Rcpp::interface
,
these functions are exported to both the package’s R namespace
and C++ headers. That way, the following functions can then be
used by other packages that use Rcpp
:
/*** Ordinary Poisson Binomial Distribution ***/
/*** Exact Procedures ***/
// Direct Convolution (DC)
// PMF
NumericVector dpb_conv(const IntegerVector obs,
const NumericVector probs);
// CDF
NumericVector ppb_conv(const IntegerVector obs,
const NumericVector probs,
const bool lower_tail);
// Divide & Conquer FFT Tree Convolution (DC-FFT)
// PMF
NumericVector dpb_dc(const IntegerVector obs,
const NumericVector probs);
// CDF
NumericVector ppb_dc(const IntegerVector obs,
const NumericVector probs,
const bool lower_tail);
// Discrete Fourier Transformation of the Characteristic Function (DFT-CF)
// PMF
NumericVector dpb_dftcf(const IntegerVector obs,
const NumericVector probs);
// CDF
NumericVector ppb_dftcf(const IntegerVector obs, const NumericVector probs,
const bool lower_tail);
// Recursive Formula (RF)
// PMF
NumericVector dpb_rf(const IntegerVector obs,
const NumericVector probs);
// CDF
NumericVector ppb_rf(const IntegerVector obs,
const NumericVector probs,
const bool lower_tail);
/*** Approximations ***/
// Arithmetic Mean Binomial Approximation (AMBA)
// PMF
NumericVector dpb_mean(const IntegerVector obs,
const NumericVector probs);
// CDF
NumericVector ppb_mean(const IntegerVector obs,
const NumericVector probs,
const bool lower_tail);
// Geometric Mean Binomial Approximations (GMBA)
// PMF
NumericVector dpb_gmba(const IntegerVector obs,
const NumericVector const probs,
const bool anti);
// CDF
NumericVector ppb_gmba(const IntegerVector obs,
const NumericVector probs,
const bool anti,
const bool lower_tail);
// Poisson Approximation (PA)
// PMF
NumericVector dpb_pa(const IntegerVector obs,
const NumericVector probs);
// CDF
NumericVector ppb_pa(const IntegerVector obs,
const NumericVector probs,
const bool lower_tail);
// Normal Approximations (NA, RNA)
// PMF
NumericVector dpb_na(const IntegerVector obs,
const NumericVector probs,
const bool refined);
// CDF
NumericVector ppb_na(const IntegerVector obs,
const NumericVector probs,
const bool refined,
const bool lower_tail);
/*** Generalized Poisson Binomial Distribution ***/
/*** Exact Procedures ***/
// Generalized Direct Convolution (G-DC)
// PMF
NumericVector dgpb_conv(const IntegerVector obs,
const NumericVector probs,
const NumericVector val_p,
const NumericVector val_q);
// CDF
NumericVector pgpb_conv(const IntegerVector obs,
const NumericVector probs,
const NumericVector val_p,
const NumericVector val_q,
const bool lower_tail);
// Generalized Discrete Fourier Transformation of the Characteristic Function (G-DFT-CF)
// PMF
NumericVector dgpb_dftcf(const IntegerVector obs,
const NumericVector probs,
const NumericVector val_p,
const NumericVector val_q);
// CDF
NumericVector pgpb_dftcf(const IntegerVector obs,
const NumericVector probs,
const NumericVector val_p,
const NumericVector val_q,
const bool lower_tail);
/*** Approximations ***/
// Generalized Normal Approximations (G-NA, G-RNA)
// PMF
NumericVector dgpb_na(const IntegerVector obs,
const NumericVector probs,
const NumericVector val_p,
const NumericVector val_q,
const bool refined,
const bool lower_tail);
// CDF
NumericVector pgpb_na(const IntegerVector obs,
const NumericVector probs,
const NumericVector val_p,
const NumericVector val_q,
const bool refined,
const bool lower_tail);
There are only a few simple steps to follow:
Rcpp
and PoissonBinomial
packages
to the Imports
and LinkingTo
fields of the
DESCRIPTION
file.#include <PoissonBinomial.h>
to source
(.cpp
) and/or header (.h
, .hpp
)
files in which these functions are to be used.using namespace PoissonBinomial;
. Without
it, the use of functions of this package must be fully qualified with
PoissonBinomial::
,
e.g. PoissonBinomial::dpb_dc
instead of
dpb_dc
For better performance, the PMFs and CDFs do not check any of their parameters for plausibility! This must be done by the user by means of R or C/C++ functions. It must be made sure that
obs
vectors are valid,probs
vector are in \((0, 1)\) anddpb_gmba
, ppb_gmba
,
dpb_na
, ppb_na
, dgpb_na
and
pgpb_na
: the probabilities in the probs
vector
must not contain zeros or ones.Furthermore, the CDFs only compute non-logarithmic probabilities. If logarithms are needed, they must be computed “manually”.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.