public class MultivariateGaussianDistribution extends java.lang.Object implements MultivariateDistribution, MultivariateExponentialFamily
GaussianDistribution
,
Serialized FormModifier and Type | Field and Description |
---|---|
boolean |
diagonal
True if the covariance matrix is diagonal.
|
double[] |
mu
The mean vector.
|
Matrix |
sigma
The covariance matrix.
|
Constructor and Description |
---|
MultivariateGaussianDistribution(double[] mean,
double variance)
Constructor.
|
MultivariateGaussianDistribution(double[] mean,
double[] variance)
Constructor.
|
MultivariateGaussianDistribution(double[] mean,
Matrix cov)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
double |
cdf(double[] x)
Algorithm from Alan Genz (1992) Numerical Computation of
Multivariate Normal Probabilities, Journal of Computational and
Graphical Statistics, pp.
|
Matrix |
cov()
The covariance matrix of distribution.
|
double |
entropy()
Shannon entropy of the distribution.
|
static MultivariateGaussianDistribution |
fit(double[][] data)
Estimates the mean and diagonal covariance by MLE.
|
static MultivariateGaussianDistribution |
fit(double[][] data,
boolean diagonal)
Estimates the mean and covariance by MLE.
|
int |
length()
The number of parameters of the distribution.
|
double |
logp(double[] x)
The density at x in log scale, which may prevents the underflow problem.
|
MultivariateMixture.Component |
M(double[][] data,
double[] posteriori)
The M step in the EM algorithm, which depends the specific distribution.
|
double[] |
mean()
The mean vector of distribution.
|
double |
p(double[] x)
The probability density function for continuous distribution
or probability mass function for discrete distribution at x.
|
double[] |
rand()
Generate a random multivariate Gaussian sample.
|
double[][] |
rand(int n)
Generates a set of random numbers following this distribution.
|
double |
scatter()
Returns the scatter of distribution, which is defined as |Σ|.
|
java.lang.String |
toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
likelihood, logLikelihood
public final double[] mu
public final Matrix sigma
public final boolean diagonal
public MultivariateGaussianDistribution(double[] mean, double variance)
mean
- mean vector.variance
- variance.public MultivariateGaussianDistribution(double[] mean, double[] variance)
mean
- mean vector.variance
- variance vector.public MultivariateGaussianDistribution(double[] mean, Matrix cov)
mean
- mean vector.cov
- covariance matrix.public static MultivariateGaussianDistribution fit(double[][] data)
data
- the training data.public static MultivariateGaussianDistribution fit(double[][] data, boolean diagonal)
data
- the training data.diagonal
- true if covariance matrix is diagonal.public int length()
MultivariateDistribution
length
in interface MultivariateDistribution
public double entropy()
MultivariateDistribution
entropy
in interface MultivariateDistribution
public double[] mean()
MultivariateDistribution
mean
in interface MultivariateDistribution
public Matrix cov()
MultivariateDistribution
cov
in interface MultivariateDistribution
public double scatter()
public double logp(double[] x)
MultivariateDistribution
logp
in interface MultivariateDistribution
public double p(double[] x)
MultivariateDistribution
p
in interface MultivariateDistribution
public double cdf(double[] x)
cdf
in interface MultivariateDistribution
public double[] rand()
public double[][] rand(int n)
public MultivariateMixture.Component M(double[][] data, double[] posteriori)
MultivariateExponentialFamily
M
in interface MultivariateExponentialFamily
data
- the input data for estimationposteriori
- the posteriori probability.public java.lang.String toString()
toString
in class java.lang.Object