gov.sandia.cognition.statistics.distribution
Class ChiSquareDistribution

java.lang.Object
  extended by gov.sandia.cognition.util.AbstractCloneableSerializable
      extended by gov.sandia.cognition.statistics.AbstractDistribution<NumberType>
          extended by gov.sandia.cognition.statistics.AbstractClosedFormUnivariateDistribution<Double>
              extended by gov.sandia.cognition.statistics.AbstractClosedFormSmoothUnivariateDistribution
                  extended by gov.sandia.cognition.statistics.distribution.ChiSquareDistribution
All Implemented Interfaces:
Vectorizable, ClosedFormComputableDistribution<Double>, ClosedFormDistribution<Double>, ClosedFormUnivariateDistribution<Double>, ComputableDistribution<Double>, Distribution<Double>, DistributionWithMean<Double>, SmoothUnivariateDistribution, UnivariateDistribution<Double>, CloneableSerializable, Serializable, Cloneable
Direct Known Subclasses:
ChiSquareDistribution.CDF, ChiSquareDistribution.PDF

@PublicationReference(author="Wikipedia",
                      title="Chi-square distribution",
                      type=WebPage,
                      year=2009,
                      url="http://en.wikipedia.org/wiki/Chi-square_distribution")
public class ChiSquareDistribution
extends AbstractClosedFormSmoothUnivariateDistribution

Describes a Chi-Square Distribution. The Chi-Square distribution occurs when Y = X1^2 + X2^2 + ... + Xn^2. In this case, Y will be a Chi-Square Random Variable with "n" degrees of freedom, iff the Xi are independent Gaussian Random Variables. The chi-square distribution is a member of the Gamma-distribution family.

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

Nested Class Summary
static class ChiSquareDistribution.CDF
          Cumulative Distribution Function (CDF) of a Chi-Square Distribution
static class ChiSquareDistribution.PDF
          PDF of the Chi-Square distribution
 
Field Summary
static double DEFAULT_DEGREES_OF_FREEDOM
          Default degrees of freedom, 2.0.
 
Constructor Summary
ChiSquareDistribution()
          Default constructor.
ChiSquareDistribution(ChiSquareDistribution other)
          Copy constructor
ChiSquareDistribution(double degreesOfFreedom)
          Creates a new instance of ChiSquareDistribution
 
Method Summary
 ChiSquareDistribution clone()
          This makes public the clone method on the Object class and removes the exception that it throws.
 void convertFromVector(Vector parameters)
          Sets the parameter of the chi-square PDF
 Vector convertToVector()
          Returns the parameter of the chi-square PDF
 ChiSquareDistribution.CDF getCDF()
          Gets the CDF of a scalar distribution.
 double getDegreesOfFreedom()
          Getter for degrees of freedom
 Double getMaxSupport()
          Gets the minimum support (domain or input) of the distribution.
 Double getMean()
          Gets the arithmetic mean, or "first central moment" or "expectation", of the distribution.
 Double getMinSupport()
          Gets the minimum support (domain or input) of the distribution.
 ChiSquareDistribution.PDF getProbabilityFunction()
          Gets the distribution function associated with this Distribution, either the PDF or PMF.
 double getVariance()
          Gets the variance of the distribution.
static ArrayList<Double> sample(double degreesOfFreedom, Random random, int numSamples)
          Samples from a Chi-Square distribution with the given degrees of freedom
 ArrayList<Double> sample(Random random, int numSamples)
          Draws multiple random samples from the distribution.
 void setDegreesOfFreedom(double degreesOfFreedom)
          Setter for degrees of freedom
 
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_DEGREES_OF_FREEDOM

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

See Also:
Constant Field Values
Constructor Detail

ChiSquareDistribution

public ChiSquareDistribution()
Default constructor.


ChiSquareDistribution

public ChiSquareDistribution(double degreesOfFreedom)
Creates a new instance of ChiSquareDistribution

Parameters:
degreesOfFreedom - Number of degrees of freedom in the distribution, must be greater than 0.0

ChiSquareDistribution

public ChiSquareDistribution(ChiSquareDistribution other)
Copy constructor

Parameters:
other - ChiSquareDistribution to copy
Method Detail

clone

public ChiSquareDistribution 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 AbstractClosedFormUnivariateDistribution<Double>
Returns:
A clone of this object.

getDegreesOfFreedom

public double getDegreesOfFreedom()
Getter for degrees of freedom

Returns:
Number of degrees of freedom in the distribution, must be greater than 0.0

setDegreesOfFreedom

public void setDegreesOfFreedom(double degreesOfFreedom)
Setter for degrees of freedom

Parameters:
degreesOfFreedom - Number of degrees of freedom in the distribution, must be greater than 0.0

getMean

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

Returns:
Mean of the distribution.

getVariance

public double getVariance()
Description copied from interface: UnivariateDistribution
Gets the variance of the distribution. This is sometimes called the second central moment by more pedantic people, which is equivalent to the square of the standard deviation.

Returns:
Variance of the distribution.

convertToVector

public Vector convertToVector()
Returns the parameter of the chi-square PDF

Returns:
1-dimensional Vector containing the degrees of freedom

convertFromVector

public void convertFromVector(Vector parameters)
Sets the parameter of the chi-square PDF

Parameters:
parameters - 1-dimensional Vector containing the degrees of freedom

sample

public ArrayList<Double> 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.)

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.

sample

public static ArrayList<Double> sample(double degreesOfFreedom,
                                       Random random,
                                       int numSamples)
Samples from a Chi-Square distribution with the given degrees of freedom

Parameters:
degreesOfFreedom - Degrees of freedom of the Chi-Square distribution
random - Random number generator
numSamples - Number of samples to generate
Returns:
Samples from the GammaDistribution using the Chi-Square DOFs.

getCDF

public ChiSquareDistribution.CDF getCDF()
Description copied from interface: UnivariateDistribution
Gets the CDF of a scalar distribution.

Returns:
CDF of the scalar distribution.

getProbabilityFunction

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

Returns:
Distribution function associated with this Distribution.

getMinSupport

public Double getMinSupport()
Description copied from interface: UnivariateDistribution
Gets the minimum support (domain or input) of the distribution.

Returns:
Minimum support.

getMaxSupport

public Double getMaxSupport()
Description copied from interface: UnivariateDistribution
Gets the minimum support (domain or input) of the distribution.

Returns:
Minimum support.