SSJ  3.3.1
Stochastic Simulation in Java
Public Member Functions | Static Public Member Functions | List of all members
MultinormalCholeskyGen Class Reference

Extends MultinormalGen for a multivariate normal distribution [98] , generated via a Cholesky decomposition of the covariance matrix. More...

Inheritance diagram for MultinormalCholeskyGen:
[legend]
Collaboration diagram for MultinormalCholeskyGen:
[legend]

Public Member Functions

 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.
 

Static Public Member Functions

static void nextPoint (NormalGen gen1, double[] mu, double[][] sigma, double[] p)
 Equivalent to nextPoint(gen1, mu, new DenseDoubleMatrix2D(sigma), p).
 
static void nextPoint (NormalGen gen1, double[] mu, DoubleMatrix2D sigma, double[] p)
 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}\). More...
 

Additional Inherited Members

- Protected Member Functions inherited from MultinormalGen
 MultinormalGen (NormalGen gen1, double[] mu, DoubleMatrix2D sigma)
 Constructs a multinormal generator with mean vector mu and covariance matrix sigma. More...
 
 MultinormalGen (NormalGen gen1, double[] mu, double[][] sigma)
 Equivalent to MultinormalGen(gen1, mu, new DenseDoubleMatrix2D (sigma)).
 
- Protected Attributes inherited from MultinormalGen
double [] mu
 
DoubleMatrix2D sigma
 
DoubleMatrix2D sqrtSigma
 
double [] temp
 
- Protected Attributes inherited from RandomMultivariateGen
int dimension
 
RandomStream stream
 
RandomVariateGen gen1
 
- Static Protected Attributes inherited from MultinormalGen
static final double MYINF = 37.54
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ MultinormalCholeskyGen() [1/2]

MultinormalCholeskyGen ( NormalGen  gen1,
double []  mu,
double  sigma[][] 
)

Equivalent to MultinormalCholeskyGen(gen1, mu, new DenseDoubleMatrix2D(sigma)).

Parameters
gen1the one-dimensional generator
muthe mean vector.
sigmathe covariance matrix.
Exceptions
NullPointerExceptionif any argument is null.
IllegalArgumentExceptionif the length of the mean vector is incompatible with the dimensions of the covariance matrix.

◆ MultinormalCholeskyGen() [2/2]

MultinormalCholeskyGen ( NormalGen  gen1,
double []  mu,
DoubleMatrix2D  sigma 
)

Constructs a multinormal generator with mean vector mu and covariance matrix sigma.

The mean vector must have the same length as the dimensions of the covariance matrix, which must be symmetric and positive-definite. If any of the above conditions is violated, an exception is thrown. The vector \(\mathbf{Z}\) is generated by calling \(d\) times the generator gen1, which must be a standard normal 1-dimensional generator.

Parameters
gen1the one-dimensional generator
muthe mean vector.
sigmathe covariance matrix.
Exceptions
NullPointerExceptionif any argument is null.
IllegalArgumentExceptionif the length of the mean vector is incompatible with the dimensions of the covariance matrix.

Member Function Documentation

◆ getCholeskyDecompSigma()

DoubleMatrix2D getCholeskyDecompSigma ( )

Returns the lower-triangular matrix \(\mathbf{A}\) in the Cholesky decomposition of \(\boldsymbol{\Sigma}\).

Returns
the Cholesky decomposition of the covariance matrix.

◆ nextPoint() [1/2]

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
pthe array to be filled with the generated point.
Exceptions
IllegalArgumentExceptionif the one-dimensional normal generator uses a normal distribution with \(\mu\) not equal to 0, or \(\sigma\) not equal to 1.
IllegalArgumentExceptionif 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.
NullPointerExceptionif any argument is null.

◆ nextPoint() [2/2]

void nextPoint ( double []  p)

Generates a point from this multinormal distribution.

This is much faster than the static method as it computes the singular value decomposition matrix only once in the constructor.

Parameters
pthe array to be filled with the generated point

◆ setSigma()

void setSigma ( DoubleMatrix2D  sigma)

Sets the covariance matrix \(\boldsymbol{\Sigma}\) of this multinormal generator to sigma (and recomputes \(\mathbf{A}\)).

Parameters
sigmathe new covariance matrix.
Exceptions
IllegalArgumentExceptionif sigma has incorrect dimensions.

The documentation for this class was generated from the following file: