|
| | 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. |