ShiftConvolve
is a R package which uses exponential shifting and the Fast Fourier Transformations (FFT) to compute the (right) tail of distribution of the Poisson Binomial Distribution.
This package makes use of the minimalist Fast Fourier Transform library known as minFFT to perform the necessary DFT and Inverse DFT computations.
This the repository responsible for managing CRAN updates and submissions. For the active development repository, please go to: https://github.com/andrew12678/ShiftConvolve.
For the ShiftConvolve
implementation which uses FFTW3 to perform the Fourier Transformations please go to https://github.com/andrew12678/ShiftConvolveFFTW.
In the interest of speed we all significant computational aspects of our procedure are executed by code written in C and the R code mainly acts as a wrapper around that compiled C code.
We have successfully installed ShiftConvolveFFTW
on Windows 10: Professional Version 1909
, macOS: Mojave 10.14.6/Catalina 10.15.4
and Linux: Ubuntu 18.04/Manjaro 19.02 KDE Plasma
. A full installation guide will be provided below for all 3 Operating Systems.
ShiftConvolveFFTW
has also been installed on both AMD
and Intel
CPU systems. Specifically, a Intel Core i7 MacMini with 32GB of RAM
, AMD Ryzen 5 2600 with 16GB of RAM
and a Macbook Pro i7 with 16GB of RAM
There are no external dependencies required to be installed for this version of ShiftConvolve
. The required minFFT
files have been compiled and included into the ShiftConvolve
project.
Windows
users may be required (instructed by compilation errors later anyways) to install Rtools
from the following website https://cran.r-project.org/bin/windows/Rtools/. Make sure to tick the box saying 'Add to system path variables' when installing.
The most simple installation involves installing devtools
in R and using the install_github()
function.
install.packages('devtools') # If you have not installed devtools
devtools::install_github('https://github.com/andrew12678/ShiftConvolvePoibin.git')
An alternative installation procedure involves cloning the repository, creating a RStudio
project and then building.
An simple example with the uniform distribution
library(ShiftConvolvePoibin)
set.seed(18)
n=1000
probs <- runif(n)
x <- c(200, 500, 800)
p <- seq(0, 1, 0.01)
dpoisbin(x,probs,method="ShiftConvolve",log.p=FALSE)
ppoisbin(x,probs,method="ShiftConvolve",lower.tail=FALSE,log.p=TRUE)
qpoisbin(p,probs,method="ShiftConvolve",lower.tail=TRUE,log.p=FALSE)
rpoisbin(n,probs)
[1] Peres, N., Lee, A., and Keich, U. (2020). Exactly computing the tail of the Poisson-Binomial Distribution. arXiv:2004.07429