Title: | Sampling Multivariate Normal Distribution under Linear Constraints |
---|---|
Description: | Sample truncated multivariate Normal distribution following Gessner, A., Kanjilal, O., & Hennig, P. (2019). Integrals over Gaussians under Linear Domain Constraints. 108. <arxiv:1910.09328>. |
Authors: | Yunyi Shen [aut, cre] |
Maintainer: | Yunyi Shen <[email protected]> |
License: | GPL-3 |
Version: | 0.1 |
Built: | 2024-11-02 03:26:09 UTC |
Source: | https://github.com/yunyishen/lincongaussr |
Sample Gaussian distribution with linear constraints Taking truncated sample of Gaussian distribution over a linear constraint domain.
linconGauss( n, A, b, Sigma, mu, x_init = NULL, intersection = TRUE, n_retry_init = 1000, nskp = 5 )
linconGauss( n, A, b, Sigma, mu, x_init = NULL, intersection = TRUE, n_retry_init = 1000, nskp = 5 )
n |
number of samples to take |
A |
a matrix with M by D dimensions, the linear constraints, such that Ax+b>=0 |
b |
the offset of the linear constraints with dimension M such that Ax+b>=0 |
Sigma |
covariance matrix of the Gaussian |
mu |
mean vector of the Gaussian |
x_init |
the sample to start with, if NULL, a sample will be drawn using rejection method |
intersection |
bool whether sample from the intersection or the union of the linear constraints, default true, sample from the intersection |
n_retry_init |
how many times to try finding a initial value |
nskp |
how many sample to skip during the sampling routine |
a matrix with truncated sample, row as samples
my_sample <- linconGauss(100, diag(2),c(0,0),diag(2),c(0,0)) MASS_sample <- MASS::mvrnorm(1000,c(0,0),diag(2)) plot(MASS_sample) points(my_sample,col = "red") abline(h=0) abline(v=0)
my_sample <- linconGauss(100, diag(2),c(0,0),diag(2),c(0,0)) MASS_sample <- MASS::mvrnorm(1000,c(0,0),diag(2)) plot(MASS_sample) points(my_sample,col = "red") abline(h=0) abline(v=0)