|
| MultinormalCholeskyGen (NormalGen gen1, double[] mu, double[][] sigma) |
| Equivalent to MultinormalCholeskyGen(gen1, mu, new DenseDoubleMatrix2D(sigma)). More...
|
|
| MultinormalCholeskyGen (NormalGen gen1, double[] mu, DoubleMatrix2D sigma) |
| Constructs a multinormal generator with mean vector mu and covariance matrix sigma . More...
|
|
DoubleMatrix2D | getCholeskyDecompSigma () |
| Returns the lower-triangular matrix \(\mathbf{A}\) in the Cholesky decomposition of \(\boldsymbol{\Sigma}\). More...
|
|
void | setSigma (DoubleMatrix2D sigma) |
| Sets the covariance matrix \(\boldsymbol{\Sigma}\) of this multinormal generator to sigma (and recomputes \(\mathbf{A}\)). More...
|
|
void | nextPoint (double[] p) |
| Generates a point from this multinormal distribution. More...
|
|
Public Member Functions inherited from MultinormalGen |
| MultinormalGen (NormalGen gen1, int d) |
| Constructs a generator with the standard multinormal distribution (with \(\boldsymbol{\mu}=\boldsymbol{0}\) and \(\boldsymbol{\Sigma}= \mathbf{I}\)) in \(d\) dimensions. More...
|
|
double [] | getMu () |
| Returns the mean vector used by this generator. More...
|
|
double | getMu (int i) |
| Returns the \(i\)-th component of the mean vector for this generator. More...
|
|
void | setMu (double[] mu) |
| Sets the mean vector to mu . More...
|
|
void | setMu (int i, double mui) |
| Sets the \(i\)-th component of the mean vector to mui . More...
|
|
DoubleMatrix2D | getSigma () |
| Returns the covariance matrix \(\boldsymbol{\Sigma}\) used by this generator. More...
|
|
void | nextPoint (double[] p) |
| Generates a point from this multinormal distribution. More...
|
|
Public Member Functions inherited from RandomMultivariateGen |
abstract void | nextPoint (double[] p) |
| Generates a random point \(p\) using the the stream contained in this object.
|
|
void | nextArrayOfPoints (double[][] v, int start, int n) |
| Generates \(n\) random points. More...
|
|
int | getDimension () |
| Returns the dimension of this multivariate generator (the dimension of the random points).
|
|
RandomStream | getStream () |
| Returns the umontreal.ssj.rng.RandomStream used by this object. More...
|
|
void | setStream (RandomStream stream) |
| Sets the umontreal.ssj.rng.RandomStream used by this object to stream .
|
|
Extends MultinormalGen for a multivariate normal distribution [98] , generated via a Cholesky decomposition of the covariance matrix.
The covariance matrix \(\boldsymbol{\Sigma}\) is decomposed (by the constructor) as \(\boldsymbol{\Sigma}= \mathbf{A}\mathbf{A}^{\!\mathsf{t}}\) where \(\mathbf{A}\) is a lower-triangular matrix (this is the Cholesky decomposition), and \(\mathbf{X}\) is generated via
\[ \mathbf{X}= \boldsymbol{\mu}+ \mathbf{A}\mathbf{Z}, \]
where \(\mathbf{Z}\) is a \(d\)-dimensional vector of independent standard normal random variates, and \(\mathbf{A}^{\!\mathsf{t}}\) is the transpose of \(\mathbf{A}\). The covariance matrix \(\boldsymbol{\Sigma}\) must be positive-definite, otherwise the Cholesky decomposition will fail. The decomposition method uses the CholeskyDecomposition
class in colt
.
static void nextPoint |
( |
NormalGen |
gen1, |
|
|
double [] |
mu, |
|
|
DoubleMatrix2D |
sigma, |
|
|
double [] |
p |
|
) |
| |
|
static |
Generates a \(d\)-dimensional vector from the multinormal distribution with mean vector mu
and covariance matrix sigma
, using the one-dimensional normal generator gen1
to generate the coordinates of \(\mathbf{Z}\), and using the Cholesky decomposition of \(\boldsymbol{\Sigma}\).
The resulting vector is put into p
. Note that this static method will be very slow for large dimensions, since it computes the Cholesky decomposition at every call. It is therefore recommended to use a MultinormalCholeskyGen
object instead, if the method is to be called more than once.
- Parameters
-
p | the array to be filled with the generated point. |
- Exceptions
-
IllegalArgumentException | if the one-dimensional normal generator uses a normal distribution with \(\mu\) not equal to 0, or \(\sigma\) not equal to 1. |
IllegalArgumentException | if the length of the mean vector is different from the dimensions of the covariance matrix, or if the covariance matrix is not symmetric and positive-definite. |
NullPointerException | if any argument is null . |