org.apache.commons.math.distribution

## Class FDistributionImpl

- java.lang.Object
- - org.apache.commons.math.distribution.AbstractDistribution
  - - org.apache.commons.math.distribution.AbstractContinuousDistribution
    - - org.apache.commons.math.distribution.FDistributionImpl

All Implemented Interfaces:
  java.io.Serializable, ContinuousDistribution, Distribution, FDistribution

    public class FDistributionImpl
    extends AbstractContinuousDistribution
    implements FDistribution, java.io.Serializable

Default implementation of `FDistribution`.

Version:
  $Revision: 1054524 $ $Date: 2011-01-03 05:59:18 +0100 (lun. 03 janv. 2011) $
See Also:
  Serialized Form

### Field Summary

Fields
`static double` `DEFAULT_INVERSE_ABSOLUTE_ACCURACY` Default inverse cumulative probability accuracy
`private double` `denominatorDegreesOfFreedom` The numerator degrees of freedom
`private double` `numeratorDegreesOfFreedom` The numerator degrees of freedom
`private static long` `serialVersionUID` Serializable version identifier
`private double` `solverAbsoluteAccuracy` Inverse cumulative probability accuracy

### Fields inherited from class org.apache.commons.math.distribution.AbstractContinuousDistribution

`randomData`

### Constructor Summary

Constructors
Constructor and Description
`FDistributionImpl(double numeratorDegreesOfFreedom, double denominatorDegreesOfFreedom)` Create a F distribution using the given degrees of freedom.
`FDistributionImpl(double numeratorDegreesOfFreedom, double denominatorDegreesOfFreedom, double inverseCumAccuracy)` Create a F distribution using the given degrees of freedom and inverse cumulative probability accuracy.

### Method Summary

Methods
`double` `cumulativeProbability(double x)` For this distribution, X, this method returns P(X < x).
`double` `density(double x)` Returns the probability density for a particular point.
`double` `getDenominatorDegreesOfFreedom()` Access the denominator degrees of freedom.
`protected double` `getDomainLowerBound(double p)` Access the domain value lower bound, based on `p`, used to bracket a CDF root.
`protected double` `getDomainUpperBound(double p)` Access the domain value upper bound, based on `p`, used to bracket a CDF root.
`protected double` `getInitialDomain(double p)` Access the initial domain value, based on `p`, used to bracket a CDF root.
`double` `getNumeratorDegreesOfFreedom()` Access the numerator degrees of freedom.
`double` `getNumericalMean()` Returns the mean of the distribution.
`double` `getNumericalVariance()` Returns the variance of the distribution.
`protected double` `getSolverAbsoluteAccuracy()` Return the absolute accuracy setting of the solver used to estimate inverse cumulative probabilities.
`double` `getSupportLowerBound()` Returns the lower bound of the support for the distribution.
`double` `getSupportUpperBound()` Returns the upper bound of the support for the distribution.
`double` `inverseCumulativeProbability(double p)` For this distribution, X, this method returns the critical point x, such that P(X < x) = `p`.
`void` `setDenominatorDegreesOfFreedom(double degreesOfFreedom)` Deprecated. as of 2.1 (class will become immutable in 3.0)
`private void` `setDenominatorDegreesOfFreedomInternal(double degreesOfFreedom)` Modify the denominator degrees of freedom.
`void` `setNumeratorDegreesOfFreedom(double degreesOfFreedom)` Deprecated. as of 2.1 (class will become immutable in 3.0)
`private void` `setNumeratorDegreesOfFreedomInternal(double degreesOfFreedom)` Modify the numerator degrees of freedom.

### Methods inherited from class org.apache.commons.math.distribution.AbstractContinuousDistribution

`reseedRandomGenerator, sample, sample`

### Methods inherited from class org.apache.commons.math.distribution.AbstractDistribution

`cumulativeProbability`

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

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

### Methods inherited from interface org.apache.commons.math.distribution.Distribution

`cumulativeProbability`

### Field Detail

#### DEFAULT_INVERSE_ABSOLUTE_ACCURACY

    public static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY

Default inverse cumulative probability accuracy

Since:
  2.1
See Also:
  Constant Field Values

#### serialVersionUID

    private static final long serialVersionUID

Serializable version identifier

See Also:
  Constant Field Values

#### numeratorDegreesOfFreedom

    private double numeratorDegreesOfFreedom

The numerator degrees of freedom

#### denominatorDegreesOfFreedom

    private double denominatorDegreesOfFreedom

The numerator degrees of freedom

#### solverAbsoluteAccuracy

    private final double solverAbsoluteAccuracy

Inverse cumulative probability accuracy

### Constructor Detail

#### FDistributionImpl

    public FDistributionImpl(double numeratorDegreesOfFreedom,
                     double denominatorDegreesOfFreedom)

Create a F distribution using the given degrees of freedom.

Parameters:
  `numeratorDegreesOfFreedom` - the numerator degrees of freedom.
  `denominatorDegreesOfFreedom` - the denominator degrees of freedom.

#### FDistributionImpl

    public FDistributionImpl(double numeratorDegreesOfFreedom,
                     double denominatorDegreesOfFreedom,
                     double inverseCumAccuracy)

Create a F distribution using the given degrees of freedom and inverse cumulative probability accuracy.

Parameters:
  `numeratorDegreesOfFreedom` - the numerator degrees of freedom.
  `denominatorDegreesOfFreedom` - the denominator degrees of freedom.
  `inverseCumAccuracy` - the maximum absolute error in inverse cumulative probability estimates (defaults to `DEFAULT_INVERSE_ABSOLUTE_ACCURACY`)
Since:
  2.1

### Method Detail

#### density

    public double density(double x)

Returns the probability density for a particular point.

Overrides:
  `density` in class `AbstractContinuousDistribution`
Parameters:
  `x` - The point at which the density should be computed.
Returns:
  The pdf at point x.
Since:
  2.1

#### cumulativeProbability

    public double cumulativeProbability(double x)
                                 throws MathException

For this distribution, X, this method returns P(X < x). The implementation of this method is based on:

- F-Distribution, equation (4).

Specified by:
  `cumulativeProbability` in interface `Distribution`
Parameters:
  `x` - the value at which the CDF is evaluated.
Returns:
  CDF for this distribution.
Throws:
  `MathException` - if the cumulative probability can not be computed due to convergence or other numerical errors.

#### inverseCumulativeProbability

    public double inverseCumulativeProbability(double p)
                                        throws MathException

For this distribution, X, this method returns the critical point x, such that P(X < x) = `p`.

Returns 0 for p=0 and `Double.POSITIVE_INFINITY` for p=1.

Specified by:
  `inverseCumulativeProbability` in interface `ContinuousDistribution`
Overrides:
  `inverseCumulativeProbability` in class `AbstractContinuousDistribution`
Parameters:
  `p` - the desired probability
Returns:
  x, such that P(X < x) = `p`
Throws:
  `MathException` - if the inverse cumulative probability can not be computed due to convergence or other numerical errors.
  `java.lang.IllegalArgumentException` - if `p` is not a valid probability.

#### getDomainLowerBound

    protected double getDomainLowerBound(double p)

Access the domain value lower bound, based on `p`, used to bracket a CDF root. This method is used by `inverseCumulativeProbability(double)` to find critical values.

Specified by:
  `getDomainLowerBound` in class `AbstractContinuousDistribution`
Parameters:
  `p` - the desired probability for the critical value
Returns:
  domain value lower bound, i.e. P(X < lower bound) < `p`

#### getDomainUpperBound

    protected double getDomainUpperBound(double p)

Access the domain value upper bound, based on `p`, used to bracket a CDF root. This method is used by `inverseCumulativeProbability(double)` to find critical values.

Specified by:
  `getDomainUpperBound` in class `AbstractContinuousDistribution`
Parameters:
  `p` - the desired probability for the critical value
Returns:
  domain value upper bound, i.e. P(X < upper bound) > `p`

#### getInitialDomain

    protected double getInitialDomain(double p)

Access the initial domain value, based on `p`, used to bracket a CDF root. This method is used by `inverseCumulativeProbability(double)` to find critical values.

Specified by:
  `getInitialDomain` in class `AbstractContinuousDistribution`
Parameters:
  `p` - the desired probability for the critical value
Returns:
  initial domain value

#### setNumeratorDegreesOfFreedom

    @Deprecated
    public void setNumeratorDegreesOfFreedom(double degreesOfFreedom)

Deprecated. as of 2.1 (class will become immutable in 3.0)
Modify the numerator degrees of freedom.

Specified by:
  `setNumeratorDegreesOfFreedom` in interface `FDistribution`
Parameters:
  `degreesOfFreedom` - the new numerator degrees of freedom.
Throws:
  `java.lang.IllegalArgumentException` - if `degreesOfFreedom` is not positive.

#### setNumeratorDegreesOfFreedomInternal

    private void setNumeratorDegreesOfFreedomInternal(double degreesOfFreedom)

Modify the numerator degrees of freedom.

Parameters:
  `degreesOfFreedom` - the new numerator degrees of freedom.
Throws:
  `java.lang.IllegalArgumentException` - if `degreesOfFreedom` is not positive.

#### getNumeratorDegreesOfFreedom

    public double getNumeratorDegreesOfFreedom()

Access the numerator degrees of freedom.

Specified by:
  `getNumeratorDegreesOfFreedom` in interface `FDistribution`
Returns:
  the numerator degrees of freedom.

#### setDenominatorDegreesOfFreedom

    @Deprecated
    public void setDenominatorDegreesOfFreedom(double degreesOfFreedom)

Deprecated. as of 2.1 (class will become immutable in 3.0)
Modify the denominator degrees of freedom.

Specified by:
  `setDenominatorDegreesOfFreedom` in interface `FDistribution`
Parameters:
  `degreesOfFreedom` - the new denominator degrees of freedom.
Throws:
  `java.lang.IllegalArgumentException` - if `degreesOfFreedom` is not positive.

#### setDenominatorDegreesOfFreedomInternal

    private void setDenominatorDegreesOfFreedomInternal(double degreesOfFreedom)

Modify the denominator degrees of freedom.

Parameters:
  `degreesOfFreedom` - the new denominator degrees of freedom.
Throws:
  `java.lang.IllegalArgumentException` - if `degreesOfFreedom` is not positive.

#### getDenominatorDegreesOfFreedom

    public double getDenominatorDegreesOfFreedom()

Access the denominator degrees of freedom.

Specified by:
  `getDenominatorDegreesOfFreedom` in interface `FDistribution`
Returns:
  the denominator degrees of freedom.

#### getSolverAbsoluteAccuracy

    protected double getSolverAbsoluteAccuracy()

Return the absolute accuracy setting of the solver used to estimate inverse cumulative probabilities.

Overrides:
  `getSolverAbsoluteAccuracy` in class `AbstractContinuousDistribution`
Returns:
  the solver absolute accuracy
Since:
  2.1

#### getSupportLowerBound

    public double getSupportLowerBound()

Returns the lower bound of the support for the distribution. The lower bound of the support is always 0, regardless of the parameters.

Returns:
  lower bound of the support (always 0)
Since:
  2.2

#### getSupportUpperBound

    public double getSupportUpperBound()

Returns the upper bound of the support for the distribution. The upper bound of the support is always positive infinity, regardless of the parameters.

Returns:
  upper bound of the support (always Double.POSITIVE_INFINITY)
Since:
  2.2

#### getNumericalMean

    public double getNumericalMean()

Returns the mean of the distribution. For denominator degrees of freedom parameter `b`, the mean is

- if `b > 2` then `b / (b - 2)`
- else `undefined`

Returns:
  the mean
Since:
  2.2

#### getNumericalVariance

    public double getNumericalVariance()

Returns the variance of the distribution. For numerator degrees of freedom parameter `a` and denominator degrees of freedom parameter `b`, the variance is

- if `b > 4` then `[ 2 * b^2 * (a + b - 2) ] / [ a * (b - 2)^2 * (b - 4) ]`
- else `undefined`

Returns:
  the variance
Since:
  2.2