Class MultivariateNormalDistribution
- java.lang.Object
-
- org.apache.commons.math3.distribution.AbstractMultivariateRealDistribution
-
- org.apache.commons.math3.distribution.MultivariateNormalDistribution
-
- All Implemented Interfaces:
MultivariateRealDistribution
public class MultivariateNormalDistribution extends AbstractMultivariateRealDistribution
Implementation of the multivariate normal (Gaussian) distribution.- Since:
- 3.1
- See Also:
- Multivariate normal distribution (Wikipedia), Multivariate normal distribution (MathWorld)
-
-
Field Summary
Fields Modifier and Type Field Description private RealMatrixcovarianceMatrixCovariance matrix.private doublecovarianceMatrixDeterminantThe determinant of the covariance matrix.private RealMatrixcovarianceMatrixInverseThe matrix inverse of the covariance matrix.private double[]meansVector of means.private RealMatrixsamplingMatrixMatrix used in computation of samples.-
Fields inherited from class org.apache.commons.math3.distribution.AbstractMultivariateRealDistribution
random
-
-
Constructor Summary
Constructors Constructor 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.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description doubledensity(double[] vals)Returns the probability density function (PDF) of this distribution evaluated at the specified pointx.RealMatrixgetCovariances()Gets the covariance matrix.private doublegetExponentTerm(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.-
Methods inherited from class org.apache.commons.math3.distribution.AbstractMultivariateRealDistribution
getDimension, reseedRandomGenerator, sample
-
-
-
-
Field Detail
-
means
private final double[] means
Vector of means.
-
covarianceMatrix
private final RealMatrix covarianceMatrix
Covariance matrix.
-
covarianceMatrixInverse
private final RealMatrix covarianceMatrixInverse
The matrix inverse of the covariance matrix.
-
covarianceMatrixDeterminant
private final double covarianceMatrixDeterminant
The determinant of the covariance matrix.
-
samplingMatrix
private final RealMatrix samplingMatrix
Matrix used in computation of samples.
-
-
Constructor Detail
-
MultivariateNormalDistribution
public MultivariateNormalDistribution(double[] means, double[][] covariances) throws SingularMatrixException, DimensionMismatchException, NonPositiveDefiniteMatrixExceptionCreates a multivariate normal distribution with the given mean vector and covariance matrix.
The number of dimensions is equal to the length of the mean vector and to the number of rows and columns of the covariance matrix. It is frequently written as "p" in formulae.Note: this constructor will implicitly create an instance of
Well19937cas random generator to be used for sampling only (seesample()andAbstractMultivariateRealDistribution.sample(int)). In case no sampling is needed for the created distribution, it is advised to passnullas random generator via the appropriate constructors to avoid the additional initialisation overhead.- Parameters:
means- Vector of means.covariances- Covariance matrix.- Throws:
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.
-
MultivariateNormalDistribution
public MultivariateNormalDistribution(RandomGenerator rng, double[] means, double[][] covariances) throws SingularMatrixException, DimensionMismatchException, NonPositiveDefiniteMatrixException
Creates a multivariate normal distribution with the given mean vector and covariance matrix.
The number of dimensions is equal to the length of the mean vector and to the number of rows and columns of the covariance matrix. It is frequently written as "p" in formulae.- Parameters:
rng- Random Number Generator.means- Vector of means.covariances- Covariance matrix.- Throws:
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.
-
-
Method Detail
-
getMeans
public double[] getMeans()
Gets the mean vector.- Returns:
- the mean vector.
-
getCovariances
public RealMatrix getCovariances()
Gets the covariance matrix.- Returns:
- the covariance matrix.
-
density
public double density(double[] vals) throws DimensionMismatchExceptionReturns the probability density function (PDF) of this distribution evaluated at the specified pointx. In general, the PDF is the derivative of the cumulative distribution function. If the derivative does not exist atx, 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.- Parameters:
vals- Point at which the PDF is evaluated.- Returns:
- the value of the probability density function at point
x. - Throws:
DimensionMismatchException
-
getStandardDeviations
public double[] getStandardDeviations()
Gets the square root of each element on the diagonal of the covariance matrix.- Returns:
- the standard deviations.
-
sample
public double[] sample()
Generates a random value vector sampled from this distribution.- Specified by:
samplein interfaceMultivariateRealDistribution- Specified by:
samplein classAbstractMultivariateRealDistribution- Returns:
- a random value vector.
-
getExponentTerm
private double getExponentTerm(double[] values)
Computes the term used in the exponent (see definition of the distribution).- Parameters:
values- Values at which to compute density.- Returns:
- the multiplication factor of density calculations.
-
-