linconGaussR

Published in CRAN, 2021

Header only R implementation of

Gessner, Alexandra, Oindrila Kanjilal, and Philipp Hennig. “Integrals over Gaussians under linear domain constraints.” International Conference on Artificial Intelligence and Statistics. PMLR, 2020.download.

The original Python implementation can be found here

The package is on CRAN, to install it, use:

install.packages("linconGaussR")

To install from Github:

devtools::install_github("YunyiShen/linconGaussR")

This package was written as header-only, with all the sampling method/classes used in the inst/include directory. If you just wish to use the C++ API of this implementation, consider install this package, and add linconGaussR (for sure RcppArmadillo and Rcpp) to your LinkingTo field of the description. The main sampling function is linconGaussR::linconGauss_cpp. Below is a sample implementation calling this method only:

// [[Rcpp::depends(RcppArmadillo)]]
#include <linconGaussR.h>// we call RcppArmadillo

using namespace Rcpp;
using namespace arma;
using namespace std;
using namespace linconGaussR;


//[[Rcpp::export]]
arma::mat linconGauss_cpp(int n, // sample size
                            arma::mat A, // linear constraint
                            arma::vec b, // offset of the linear constraint, so that Ax+b>0
                            arma::mat Sigma, // covariance
                            arma::vec mu, // mean
                            arma::vec x_init, // an initial value, necessary
                            bool intersection=true, // whether to sample from the intersection (otherwise from the union)
                            int nskp=5){ // number of sample to skip during iterations
    return linconGaussR::linconGauss_cpp(n,A,b,Sigma,mu,x_init,intersection,nskp);
}