KolmogorovSmirnovDistribution
org.apache.commons.math3.distribution

Class KolmogorovSmirnovDistribution

  • All Implemented Interfaces:
    Serializable


    public class KolmogorovSmirnovDistributionextends Objectimplements Serializable
    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:
    Kolmogorov-Smirnov test (Wikipedia), Serialized Form
    • Method Summary

      Methods 
      Modifier and TypeMethod and Description
      doublecdf(double d)
      Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above).
      doublecdf(double d, boolean exact)
      Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above).
      doublecdfExact(double d)
      Calculates P(D_n < d) using method described in [1] with quick decisions for extreme values given in [2] (see above).
    • Method Detail

      • cdf

        public double cdf(double d)           throws MathArithmeticException
        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
        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
        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.

SCaVis 1.7 © jWork.org