org.apache.commons.math3.distribution

## 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 inherited from class org.apache.commons.math3.distribution.AbstractMultivariateRealDistribution

      `random`

  - ### Constructor Summary

    Constructors
    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.

  - ### Method Summary

    Methods
    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.
    `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`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### MultivariateNormalDistribution

          public MultivariateNormalDistribution(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.

      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.

      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 DimensionMismatchException

      Returns the probability density function (PDF) of this distribution evaluated at the specified point `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.
      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:
        `sample` in interface `MultivariateRealDistribution`
      Specified by:
        `sample` in class `AbstractMultivariateRealDistribution`
      Returns:
        a random value vector.

Copyright © 2003–2016 The Apache Software Foundation. All rights reserved.