gov.sandia.cognition.statistics.distribution
Class MultivariateStudentTDistribution

java.lang.Object
  extended by gov.sandia.cognition.util.AbstractCloneableSerializable
      extended by gov.sandia.cognition.statistics.AbstractDistribution<Vector>
          extended by gov.sandia.cognition.statistics.distribution.MultivariateStudentTDistribution
All Implemented Interfaces:
Vectorizable, ClosedFormComputableDistribution<Vector>, ClosedFormDistribution<Vector>, ComputableDistribution<Vector>, Distribution<Vector>, DistributionWithMean<Vector>, CloneableSerializable, Serializable, Cloneable
Direct Known Subclasses:
MultivariateStudentTDistribution.PDF

@PublicationReferences(references={@PublicationReference(author="Christopher M. Bishop",title="Pattern Recognition and Machine Learning",type=Book,year=2006,pages={104,105}),@PublicationReference(author="Wikipedia",title="Multivariate Student distribution",type=WebPage,year=2010,url="http://en.wikipedia.org/wiki/Multivariate_Student_distribution")})
public class MultivariateStudentTDistribution
extends AbstractDistribution<Vector>
implements ClosedFormComputableDistribution<Vector>

Multivariate generalization of the noncentral Student's t-distribution.

Since:
3.0
Author:
Kevin R. Dixon
See Also:
Serialized Form

Nested Class Summary
static class MultivariateStudentTDistribution.PDF
          PDF of the MultivariateStudentTDistribution
 
Field Summary
static double DEFAULT_DEGREES_OF_FREEDOM
          Default degrees of freedom, 3.0.
static int DEFAULT_DIMENSIONALITY
          Default dimensionality, 2.
protected  double degreesOfFreedom
          Degrees of freedom in the distribution, usually the number of datapoints - 1, DOFs must be greater than zero.
protected  Vector mean
          Mean, or noncentrality parameter, of the distribution
 
Constructor Summary
MultivariateStudentTDistribution()
          Creates a new instance of MultivariateStudentTDistribution
MultivariateStudentTDistribution(double degreesOfFreedom, Vector mean, Matrix precision)
          Creates a distribution with the given dimensionality.
MultivariateStudentTDistribution(int dimensionality)
          Creates a distribution with the given dimensionality.
MultivariateStudentTDistribution(MultivariateStudentTDistribution other)
          Copy constructor
 
Method Summary
 MultivariateStudentTDistribution clone()
          This makes public the clone method on the Object class and removes the exception that it throws.
 void convertFromVector(Vector parameters)
          Converts the object from a Vector of parameters.
 Vector convertToVector()
          Converts the object to a vector.
 Matrix getCovariance()
          Computes the covariance of the distribution, which involves inverting the precision matrix.
 double getDegreesOfFreedom()
          Getter for degreesOfFreedom
 int getInputDimensionality()
          Gets the dimensionality of the distribution.
 Vector getMean()
          Gets the arithmetic mean, or "first central moment" or "expectation", of the distribution.
 Matrix getPrecision()
          Getter for precision
 MultivariateStudentTDistribution.PDF getProbabilityFunction()
          Gets the distribution function associated with this Distribution, either the PDF or PMF.
 ArrayList<Vector> sample(Random random, int numSamples)
          Draws multiple random samples from the distribution.
 void setDegreesOfFreedom(double degreesOfFreedom)
          Setter for degreesOfFreedom
 void setMean(Vector mean)
          Setter for mean
 void setPrecision(Matrix precision)
          Setter for precision
 
Methods inherited from class gov.sandia.cognition.statistics.AbstractDistribution
sample
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface gov.sandia.cognition.statistics.Distribution
sample
 

Field Detail

DEFAULT_DIMENSIONALITY

public static final int DEFAULT_DIMENSIONALITY
Default dimensionality, 2.

See Also:
Constant Field Values

DEFAULT_DEGREES_OF_FREEDOM

public static final double DEFAULT_DEGREES_OF_FREEDOM
Default degrees of freedom, 3.0.

See Also:
Constant Field Values

degreesOfFreedom

protected double degreesOfFreedom
Degrees of freedom in the distribution, usually the number of datapoints - 1, DOFs must be greater than zero.


mean

protected Vector mean
Mean, or noncentrality parameter, of the distribution

Constructor Detail

MultivariateStudentTDistribution

public MultivariateStudentTDistribution()
Creates a new instance of MultivariateStudentTDistribution


MultivariateStudentTDistribution

public MultivariateStudentTDistribution(int dimensionality)
Creates a distribution with the given dimensionality.

Parameters:
dimensionality - Dimensionality of the distribution.

MultivariateStudentTDistribution

public MultivariateStudentTDistribution(double degreesOfFreedom,
                                        Vector mean,
                                        Matrix precision)
Creates a distribution with the given dimensionality.

Parameters:
degreesOfFreedom - Degrees of freedom in the distribution, usually the number of datapoints - 1, DOFs must be greater than zero.
mean - Mean, or noncentrality parameter, of the distribution
precision - Precision, which is proportionate to the inverse of variance, of the distribution, must be symmetric and positive definite.

MultivariateStudentTDistribution

public MultivariateStudentTDistribution(MultivariateStudentTDistribution other)
Copy constructor

Parameters:
other - MultivariateStudentTDistribution to copy
Method Detail

clone

public MultivariateStudentTDistribution clone()
Description copied from class: AbstractCloneableSerializable
This makes public the clone method on the Object class and removes the exception that it throws. Its default behavior is to automatically create a clone of the exact type of object that the clone is called on and to copy all primitives but to keep all references, which means it is a shallow copy. Extensions of this class may want to override this method (but call super.clone() to implement a "smart copy". That is, to target the most common use case for creating a copy of the object. Because of the default behavior being a shallow copy, extending classes only need to handle fields that need to have a deeper copy (or those that need to be reset). Some of the methods in ObjectUtil may be helpful in implementing a custom clone method. Note: The contract of this method is that you must use super.clone() as the basis for your implementation.

Specified by:
clone in interface Vectorizable
Specified by:
clone in interface CloneableSerializable
Overrides:
clone in class AbstractCloneableSerializable
Returns:
A clone of this object.

getDegreesOfFreedom

public double getDegreesOfFreedom()
Getter for degreesOfFreedom

Returns:
Degrees of freedom in the distribution, usually the number of datapoints - 1, DOFs must be greater than zero.

setDegreesOfFreedom

public void setDegreesOfFreedom(double degreesOfFreedom)
Setter for degreesOfFreedom

Parameters:
degreesOfFreedom - Degrees of freedom in the distribution, usually the number of datapoints - 1, DOFs must be greater than zero.

getMean

public Vector getMean()
Description copied from interface: DistributionWithMean
Gets the arithmetic mean, or "first central moment" or "expectation", of the distribution.

Specified by:
getMean in interface DistributionWithMean<Vector>
Returns:
Mean of the distribution.

setMean

public void setMean(Vector mean)
Setter for mean

Parameters:
mean - Mean, or noncentrality parameter, of the distribution

getPrecision

public Matrix getPrecision()
Getter for precision

Returns:
Precision, which is proportionate to the inverse of variance, of the distribution, must be symmetric and positive definite.

setPrecision

public void setPrecision(Matrix precision)
Setter for precision

Parameters:
precision - Precision, which is proportionate to the inverse of variance, of the distribution, must be symmetric and positive definite.

getCovariance

public Matrix getCovariance()
Computes the covariance of the distribution, which involves inverting the precision matrix.

Returns:
covariance of the distribution, which involves inverting the precision matrix.

sample

public ArrayList<Vector> sample(Random random,
                                int numSamples)
Description copied from interface: Distribution
Draws multiple random samples from the distribution. It is generally more efficient to use this multiple-sample method than multiple calls of the single-sample method. (But not always.)

Specified by:
sample in interface Distribution<Vector>
Parameters:
random - Random-number generator to use in order to generate random numbers.
numSamples - Number of samples to draw from the distribution.
Returns:
Samples drawn according to this distribution.

convertToVector

public Vector convertToVector()
Description copied from interface: Vectorizable
Converts the object to a vector.

Specified by:
convertToVector in interface Vectorizable
Returns:
The Vector form of the object.

convertFromVector

public void convertFromVector(Vector parameters)
Description copied from interface: Vectorizable
Converts the object from a Vector of parameters.

Specified by:
convertFromVector in interface Vectorizable
Parameters:
parameters - The parameters to incorporate.

getInputDimensionality

public int getInputDimensionality()
Gets the dimensionality of the distribution.

Returns:
Dimensionality of the distribution.

getProbabilityFunction

public MultivariateStudentTDistribution.PDF getProbabilityFunction()
Description copied from interface: ComputableDistribution
Gets the distribution function associated with this Distribution, either the PDF or PMF.

Specified by:
getProbabilityFunction in interface ComputableDistribution<Vector>
Returns:
Distribution function associated with this Distribution.