Class TDistribution

All Implemented Interfaces:
ContinuousDistribution
Direct Known Subclasses:
TDistribution.NormalTDistribution, TDistribution.StudentsTDistribution

public abstract class TDistribution extends AbstractContinuousDistribution
Implementation of Student's t-distribution.

The probability density function of \( X \) is:

\[ f(x; v) = \frac{\Gamma(\frac{\nu+1}{2})} {\sqrt{\nu\pi}\,\Gamma(\frac{\nu}{2})} \left(1+\frac{t^2}{\nu} \right)^{\!-\frac{\nu+1}{2}} \]

for \( v > 0 \) the degrees of freedom, \( \Gamma \) is the gamma function, and \( x \in (-\infty, \infty) \).

See Also:
  • Field Details

    • STANDARD_NORMAL

      static final NormalDistribution STANDARD_NORMAL
      A standard normal distribution used for calculations. This is immutable and thread-safe and can be used across instances.
    • degreesOfFreedom

      private final double degreesOfFreedom
      The degrees of freedom.
  • Constructor Details

    • TDistribution

      private TDistribution(double degreesOfFreedom)
      Parameters:
      degreesOfFreedom - Degrees of freedom.
  • Method Details

    • of

      public static TDistribution of(double degreesOfFreedom)
      Creates a Student's t-distribution.
      Parameters:
      degreesOfFreedom - Degrees of freedom.
      Returns:
      the distribution
      Throws:
      IllegalArgumentException - if degreesOfFreedom <= 0
    • getDegreesOfFreedom

      public double getDegreesOfFreedom()
      Gets the degrees of freedom parameter of this distribution.
      Returns:
      the degrees of freedom.
    • survivalProbability

      public double survivalProbability(double x)
      For a random variable X whose values are distributed according to this distribution, this method returns P(X > x). In other words, this method represents the complementary cumulative distribution function.

      By default, this is defined as 1 - cumulativeProbability(x), but the specific implementation may be more accurate.

      Parameters:
      x - Point at which the survival function is evaluated.
      Returns:
      the probability that a random variable with this distribution takes a value greater than x.
    • inverseSurvivalProbability

      public double inverseSurvivalProbability(double p)
      Computes the inverse survival probability function of this distribution. For a random variable X distributed according to this distribution, the returned value is:

      \[ x = \begin{cases} \inf \{ x \in \mathbb R : P(X \ge x) \le p\} & \text{for } 0 \le p \lt 1 \\ \inf \{ x \in \mathbb R : P(X \ge x) \lt 1 \} & \text{for } p = 1 \end{cases} \]

      By default, this is defined as inverseCumulativeProbability(1 - p), but the specific implementation may be more accurate.

      The default implementation returns:

      Specified by:
      inverseSurvivalProbability in interface ContinuousDistribution
      Overrides:
      inverseSurvivalProbability in class AbstractContinuousDistribution
      Parameters:
      p - Survival probability.
      Returns:
      the smallest (1-p)-quantile of this distribution (largest 0-quantile for p = 1).
    • getMean

      public abstract double getMean()
      Gets the mean of this distribution.

      For degrees of freedom parameter \( v \), the mean is:

      \[ \mathbb{E}[X] = \begin{cases} 0 & \text{for } v \gt 1 \\ \text{undefined} & \text{otherwise} \end{cases} \]

      Returns:
      the mean, or NaN if it is not defined.
    • getVariance

      public abstract double getVariance()
      Gets the variance of this distribution.

      For degrees of freedom parameter \( v \), the variance is:

      \[ \operatorname{var}[X] = \begin{cases} \frac{v}{v - 2} & \text{for } v \gt 2 \\ \infty & \text{for } 1 \lt v \le 2 \\ \text{undefined} & \text{otherwise} \end{cases} \]

      Returns:
      the variance, or NaN if it is not defined.
    • getSupportLowerBound

      public double getSupportLowerBound()
      Gets the lower bound of the support. It must return the same value as inverseCumulativeProbability(0), i.e. \( \inf \{ x \in \mathbb R : P(X \le x) \gt 0 \} \).

      The lower bound of the support is always negative infinity.

      Returns:
      negative infinity.
    • getSupportUpperBound

      public double getSupportUpperBound()
      Gets the upper bound of the support. It must return the same value as inverseCumulativeProbability(1), i.e. \( \inf \{ x \in \mathbb R : P(X \le x) = 1 \} \).

      The upper bound of the support is always positive infinity.

      Returns:
      positive infinity.