public class MultivariateNormalDistribution extends AbstractMultivariateRealDistribution
Modifier and Type | Field and Description |
---|---|
private RealMatrix |
covarianceMatrix
Covariance matrix.
|
private double |
covarianceMatrixDeterminant
The determinant of the covariance matrix.
|
private RealMatrix |
covarianceMatrixInverse
The matrix inverse of the covariance matrix.
|
private double[] |
means
Vector of means.
|
private RealMatrix |
samplingMatrix
Matrix used in computation of samples.
|
random
Constructor and Description |
---|
MultivariateNormalDistribution(double[] means,
double[][] covariances)
Creates a multivariate normal distribution with the given mean vector and
covariance matrix.
|
MultivariateNormalDistribution(RandomGenerator rng,
double[] means,
double[][] covariances)
Creates a multivariate normal distribution with the given mean vector and
covariance matrix.
|
Modifier and Type | Method and Description |
---|---|
double |
density(double[] vals)
Returns the probability density function (PDF) of this distribution
evaluated at the specified point
x . |
RealMatrix |
getCovariances()
Gets the covariance matrix.
|
private double |
getExponentTerm(double[] values)
Computes the term used in the exponent (see definition of the distribution).
|
double[] |
getMeans()
Gets the mean vector.
|
double[] |
getStandardDeviations()
Gets the square root of each element on the diagonal of the covariance
matrix.
|
double[] |
sample()
Generates a random value vector sampled from this distribution.
|
getDimension, reseedRandomGenerator, sample
private final double[] means
private final RealMatrix covarianceMatrix
private final RealMatrix covarianceMatrixInverse
private final double covarianceMatrixDeterminant
private final RealMatrix samplingMatrix
public MultivariateNormalDistribution(double[] means, double[][] covariances) throws SingularMatrixException, DimensionMismatchException, NonPositiveDefiniteMatrixException
Note: this constructor will implicitly create an instance of
Well19937c
as random generator to be used for sampling only (see
sample()
and AbstractMultivariateRealDistribution.sample(int)
). In case no sampling is
needed for the created distribution, it is advised to pass null
as random generator via the appropriate constructors to avoid the
additional initialisation overhead.
means
- Vector of means.covariances
- Covariance matrix.DimensionMismatchException
- if the arrays length are
inconsistent.SingularMatrixException
- if the eigenvalue decomposition cannot
be performed on the provided covariance matrix.NonPositiveDefiniteMatrixException
- if any of the eigenvalues is
negative.public MultivariateNormalDistribution(RandomGenerator rng, double[] means, double[][] covariances) throws SingularMatrixException, DimensionMismatchException, NonPositiveDefiniteMatrixException
rng
- Random Number Generator.means
- Vector of means.covariances
- Covariance matrix.DimensionMismatchException
- if the arrays length are
inconsistent.SingularMatrixException
- if the eigenvalue decomposition cannot
be performed on the provided covariance matrix.NonPositiveDefiniteMatrixException
- if any of the eigenvalues is
negative.public double[] getMeans()
public RealMatrix getCovariances()
public double density(double[] vals) throws DimensionMismatchException
x
. In general, the PDF is the
derivative of the cumulative distribution function. If the derivative
does not exist at x
, then an appropriate replacement should be
returned, e.g. Double.POSITIVE_INFINITY
, Double.NaN
, or
the limit inferior or limit superior of the difference quotient.vals
- Point at which the PDF is evaluated.x
.DimensionMismatchException
public double[] getStandardDeviations()
public double[] sample()
sample
in interface MultivariateRealDistribution
sample
in class AbstractMultivariateRealDistribution
private double getExponentTerm(double[] values)
values
- Values at which to compute density.