|
| MultinormalPCAGen (NormalGen gen1, double[] mu, double[][] sigma) |
| Equivalent to MultinormalPCAGen(gen1, mu, new DenseDoubleMatrix2D(sigma)).
|
|
| MultinormalPCAGen (NormalGen gen1, double[] mu, DoubleMatrix2D sigma) |
| Constructs a multinormal generator with mean vector mu and covariance matrix sigma . More...
|
|
DoubleMatrix2D | getPCADecompSigma () |
| Returns the matrix \(\mathbf{A}= \mathbf{V}\sqrt{\boldsymbol{\Lambda}}\) of this object. More...
|
|
double [] | getLambda () |
| Returns the eigenvalues of \(\boldsymbol{\Sigma}\) in decreasing order.
|
|
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 DoubleMatrix2D | decompPCA (double[][] sigma) |
| Computes the decomposition sigma = \(\boldsymbol{\Sigma}= \mathbf{V}\boldsymbol{\Lambda}\mathbf{V}^{\mathsf{t}}\). More...
|
|
static DoubleMatrix2D | decompPCA (DoubleMatrix2D sigma) |
| Computes the decomposition sigma = \(\boldsymbol{\Sigma}= \mathbf{V}\boldsymbol{\Lambda}\mathbf{V}^{\mathsf{t}}\). More...
|
|
static double [] | getLambda (DoubleMatrix2D sigma) |
| Computes and returns the eigenvalues of sigma in decreasing order.
|
|
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 PCA decomposition of \(\boldsymbol{\Sigma}\). More...
|
|
static void | nextPoint (NormalGen gen1, double[] mu, double[][] sigma, double[] p) |
| Equivalent to nextPoint(gen1, mu, new DenseDoubleMatrix2D(sigma), p).
|
|
Extends MultinormalGen for a multivariate normal distribution [98] , generated via the method of principal components analysis (PCA) of the covariance matrix.
The covariance matrix \(\boldsymbol{\Sigma}\) is decomposed (by the constructor) as \(\boldsymbol{\Sigma}= \mathbf{V}\boldsymbol{\Lambda}\mathbf{V}^{\mathsf{t}}\) where \(\mathbf{V}\) is an orthogonal matrix and \(\boldsymbol{\Lambda}\) is the diagonal matrix made up of the eigenvalues of \(\boldsymbol{\Sigma}\). \(\mathbf{V}^{\mathsf{t}}\) is the transpose matrix of \(\mathbf{V}\). The eigenvalues are ordered from the largest ( \(\lambda_1\)) to the smallest ( \(\lambda_d\)). The random multinormal vector \(\mathbf{X}\) is generated via
\[ \mathbf{X}= \boldsymbol{\mu}+ \mathbf{A}\mathbf{Z}, \]
where \(\mathbf{A}= \mathbf{V}\sqrt{\boldsymbol{\Lambda}}\), and \(\mathbf{Z}\) is a \(d\)-dimensional vector of independent standard normal random variates. The decomposition method uses the SingularValueDecomposition
class in colt
.
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 semi-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
-
gen1 | the one-dimensional generator |
mu | the mean vector. |
sigma | the covariance matrix. |
- Exceptions
-
NullPointerException | if any argument is null . |
IllegalArgumentException | if the length of the mean vector is incompatible with the dimensions of the covariance matrix. |
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 PCA decomposition of \(\boldsymbol{\Sigma}\).
The resulting vector is put into p
. Note that this static method will be very slow for large dimensions, because it recomputes the singular value decomposition at every call. It is therefore recommended to use a MultinormalPCAGen
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 . |