|
SSJ V. 2.0. |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectumontreal.iro.lecuyer.randvarmulti.RandomMultivariateGen
umontreal.iro.lecuyer.randvarmulti.MultinormalCholeskyGen
public class MultinormalCholeskyGen
Extends RandomMultivariateGen for a
multivariate normal (or multinormal) distribution,
generated via a Cholesky decomposition of the covariance matrix.
The d-dimensional multivariate normal distribution
with mean vector
μ∈Rd and (symmetric positive-definite)
covariance matrix
Σ, denoted
N(μ, Σ), has density
exp(- (X - μ)tΣ-1(X - μ)/2),
]
In this class, the covariance matrix is decomposed (by the constructor) as Σ = AAt where A is a lower-triangular matrix (this is the Cholesky decomposition), and X is generated via
| Constructor Summary | |
|---|---|
MultinormalCholeskyGen(NormalGen gen1,
double[] mu,
double[][] sigma)
Equivalent to MultinormalCholeskyGen (gen1, mu, new DenseDoubleMatrix2D (sigma)). |
|
MultinormalCholeskyGen(NormalGen gen1,
double[] mu,
DoubleMatrix2D sigma)
Constructs a multinormal generator with mean vector mu and covariance matrix sigma. |
|
MultinormalCholeskyGen(NormalGen gen1,
int d)
Constructs a generator with the standard multinormal distribution (with μ = 0 and Σ = I) in d dimensions. |
|
| Method Summary | |
|---|---|
DoubleMatrix2D |
getCholeskyDecompSigma()
Returns the lower-triangular matrix A in the Cholesky decomposition of Σ. |
double[] |
getMu()
Returns the mean vector used by this generator. |
double |
getMu(int i)
Returns the i-th component of the mean vector for this generator. |
DoubleMatrix2D |
getSigma()
Returns the covariance matrix Σ used by this generator. |
void |
nextPoint(double[] p)
Generates a point from this multinormal distribution. |
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 Z, and using the cholesky decomposition of Σ. |
void |
setMu(double[] mu)
Sets the mean vector to mu. |
void |
setMu(int i,
double mui)
Sets the i-th component of the mean vector to mui. |
void |
setSigma(DoubleMatrix2D sigma)
Sets the covariance matrix Σ of this multinormal generator to sigma (and recomputes A). |
| Methods inherited from class umontreal.iro.lecuyer.randvarmulti.RandomMultivariateGen |
|---|
getDimension, getStream, nextArrayOfPoints, setStream |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public MultinormalCholeskyGen(NormalGen gen1,
int d)
gen1 - the one-dimensional generatord - the dimension of the generated vectors
IllegalArgumentException - if the one-dimensional normal
generator uses a normal distribution with μ not equal to 0, or
σ not equal to 1.
IllegalArgumentException - if d
is negative.
NullPointerException - if gen1 is null.
public MultinormalCholeskyGen(NormalGen gen1,
double[] mu,
DoubleMatrix2D sigma)
gen1 - the one-dimensional generatormu - the mean vector.sigma - the covariance matrix.
NullPointerException - if any argument is null.
IllegalArgumentException - if the length of the mean
vector is incompatible with the dimensions of the covariance matrix.
public MultinormalCholeskyGen(NormalGen gen1,
double[] mu,
double[][] sigma)
MultinormalCholeskyGen (gen1, mu, new DenseDoubleMatrix2D (sigma)).
| Method Detail |
|---|
public double[] getMu()
public double getMu(int i)
i - the index of the required component.
ArrayIndexOutOfBoundsException - if
i is negative or greater than or equal to getDimension.public void setMu(double[] mu)
mu - the new mean vector.
NullPointerException - if mu is null.
IllegalArgumentException - if the length of mu
does not correspond to getDimension.
public void setMu(int i,
double mui)
i - the index of the modified component.mui - the new value of μi.
ArrayIndexOutOfBoundsException - if i
is negative or greater than or equal to getDimension.public DoubleMatrix2D getSigma()
public DoubleMatrix2D getCholeskyDecompSigma()
public void setSigma(DoubleMatrix2D sigma)
sigma - the new covariance matrix.
IllegalArgumentException - if sigma has
incorrect dimensions.
public static void nextPoint(NormalGen gen1,
double[] mu,
DoubleMatrix2D sigma,
double[] p)
p - the array to be filled with the generated point.
IllegalArgumentException - if the one-dimensional normal
generator uses a normal distribution with μ not equal to 0, or
σ 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.
public static void nextPoint(NormalGen gen1,
double[] mu,
double[][] sigma,
double[] p)
nextPoint (gen1, mu, new DenseDoubleMatrix2D (sigma), p).
public void nextPoint(double[] p)
nextPoint in class RandomMultivariateGenp - the array to be filled with the generated point
|
SSJ V. 2.0. |
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||