Class KolmogorovSmirnovDistribution

java.lang.Object
org.apache.commons.math3.distribution.KolmogorovSmirnovDistribution
All Implemented Interfaces:
Serializable

public class KolmogorovSmirnovDistribution extends Object implements Serializable
Deprecated.
to be removed in version 4.0 - use KolmogorovSmirnovTest
Implementation of the Kolmogorov-Smirnov distribution.

Treats the distribution of the two-sided P(D_n < d) where D_n = sup_x |G(x) - G_n (x)| for the theoretical cdf G and the empirical cdf G_n.

This implementation is based on [1] with certain quick decisions for extreme values given in [2].

In short, when wanting to evaluate P(D_n < d), the method in [1] is to write d = (k - h) / n for positive integer k and 0 <= h < 1. Then P(D_n < d) = (n! / n^n) * t_kk, where t_kk is the (k, k)'th entry in the special matrix H^n, i.e. H to the n'th power.

References:

Note that [1] contains an error in computing h, refer to MATH-437 for details.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private int
    Deprecated.
    Number of observations.
    private static final long
    Deprecated.
    Serializable version identifier.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Deprecated.
     
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    cdf(double d)
    Deprecated.
    Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above).
    double
    cdf(double d, boolean exact)
    Deprecated.
    Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above).
    double
    cdfExact(double d)
    Deprecated.
    Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above).
    createH(double d)
    Deprecated.
    Creates H of size m x m as described in [1] (see above).
    private double
    exactK(double d)
    Deprecated.
    Calculates the exact value of P(D_n < d) using method described in [1] and BigFraction (see above).
    private double
    roundedK(double d)
    Deprecated.
    Calculates P(D_n < d) using method described in [1] and doubles (see above).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Deprecated.
      Serializable version identifier.
      See Also:
    • n

      private int n
      Deprecated.
      Number of observations.
  • Constructor Details

  • Method Details

    • cdf

      public double cdf(double d) throws MathArithmeticException
      Deprecated.
      Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above). The result is not exact as with cdfExact(double) because calculations are based on double rather than BigFraction.
      Parameters:
      d - statistic
      Returns:
      the two-sided probability of P(D_n < d)
      Throws:
      MathArithmeticException - if algorithm fails to convert h to a BigFraction in expressing d as (k - h) / m for integer k, m and 0 <= h < 1.
    • cdfExact

      public double cdfExact(double d) throws MathArithmeticException
      Deprecated.
      Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above). The result is exact in the sense that BigFraction/BigReal is used everywhere at the expense of very slow execution time. Almost never choose this in real applications unless you are very sure; this is almost solely for verification purposes. Normally, you would choose cdf(double)
      Parameters:
      d - statistic
      Returns:
      the two-sided probability of P(D_n < d)
      Throws:
      MathArithmeticException - if algorithm fails to convert h to a BigFraction in expressing d as (k - h) / m for integer k, m and 0 <= h < 1.
    • cdf

      public double cdf(double d, boolean exact) throws MathArithmeticException
      Deprecated.
      Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above).
      Parameters:
      d - statistic
      exact - whether the probability should be calculated exact using BigFraction everywhere at the expense of very slow execution time, or if double should be used convenient places to gain speed. Almost never choose true in real applications unless you are very sure; true is almost solely for verification purposes.
      Returns:
      the two-sided probability of P(D_n < d)
      Throws:
      MathArithmeticException - if algorithm fails to convert h to a BigFraction in expressing d as (k - h) / m for integer k, m and 0 <= h < 1.
    • exactK

      private double exactK(double d) throws MathArithmeticException
      Deprecated.
      Calculates the exact value of P(D_n < d) using method described in [1] and BigFraction (see above).
      Parameters:
      d - statistic
      Returns:
      the two-sided probability of P(D_n < d)
      Throws:
      MathArithmeticException - if algorithm fails to convert h to a BigFraction in expressing d as (k - h) / m for integer k, m and 0 <= h < 1.
    • roundedK

      private double roundedK(double d) throws MathArithmeticException
      Deprecated.
      Calculates P(D_n < d) using method described in [1] and doubles (see above).
      Parameters:
      d - statistic
      Returns:
      the two-sided probability of P(D_n < d)
      Throws:
      MathArithmeticException - if algorithm fails to convert h to a BigFraction in expressing d as (k - h) / m for integer k, m and 0 <= h < 1.
    • createH

      Deprecated.
      Creates H of size m x m as described in [1] (see above).
      Parameters:
      d - statistic
      Returns:
      H matrix
      Throws:
      NumberIsTooLargeException - if fractional part is greater than 1
      FractionConversionException - if algorithm fails to convert h to a BigFraction in expressing d as (k - h) / m for integer k, m and 0 <= h < 1.