Class TDistribution

java.lang.Object
org.apache.commons.statistics.distribution.TDistribution
All Implemented Interfaces:
ContinuousDistribution

public abstract class TDistribution extends Object
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:
  • 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 \gt x) \le p\} & \text{for } 0 \le p \lt 1 \\ \inf \{ x \in \mathbb R : P(X \gt 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
      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.
    • probability

      public double probability(double x0, double x1)
      For a random variable X whose values are distributed according to this distribution, this method returns P(x0 < X <= x1). The default implementation uses the identity P(x0 < X <= x1) = P(X <= x1) - P(X <= x0)
      Specified by:
      probability in interface ContinuousDistribution
      Parameters:
      x0 - Lower bound (exclusive).
      x1 - Upper bound (inclusive).
      Returns:
      the probability that a random variable with this distribution takes a value between x0 and x1, excluding the lower and including the upper endpoint.
    • inverseCumulativeProbability

      public double inverseCumulativeProbability(double p)
      Computes the quantile 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 \le x) \ge p\} & \text{for } 0 \lt p \le 1 \\ \inf \{ x \in \mathbb R : P(X \le x) \gt 0 \} & \text{for } p = 0 \end{cases} \]

      The default implementation returns:

      Specified by:
      inverseCumulativeProbability in interface ContinuousDistribution
      Parameters:
      p - Cumulative probability.
      Returns:
      the smallest p-quantile of this distribution (largest 0-quantile for p = 0).
      Throws:
      IllegalArgumentException - if p < 0 or p > 1
    • createSampler

      public ContinuousDistribution.Sampler createSampler(org.apache.commons.rng.UniformRandomProvider rng)
      Creates a sampler.
      Specified by:
      createSampler in interface ContinuousDistribution
      Parameters:
      rng - Generator of uniformly distributed numbers.
      Returns:
      a sampler that produces random numbers according this distribution.