Class AndersonDarlingTest


  • @Reference(authors="T. W. Anderson, D. A. Darling",
               title="Asymptotic theory of certain \'goodness of fit\' criteria based on stochastic processes",
               booktitle="Annals of mathematical statistics 23(2)",
               url="https://doi.org/10.1214/aoms/1177729437",
               bibkey="doi:10.1214/aoms/1177729437")
    public class AndersonDarlingTest
    extends java.lang.Object
    Perform Anderson-Darling test for a Gaussian distribution.

    This is a test against normality / goodness of fit. I.e. you can use it to reject the hypothesis that the data is normal distributed. Such tests are sensitive to data set size: on small samples, even large deviations could be by-chance and thus not allow rejection. On the other hand, on large data sets even a slight deviation can be unlikely to happen if the data were indeed normal distributed. Thus, this test is more likely to fail to reject small data sets even when they intuitively do not appear to be normal distributed, while it will reject large data sets that originate from a distribution only slightly different from the normal distribution.

    Before using, make sure you have understood statistical tests, and the difference between failure-to-reject and acceptance!

    The data size should be at least 8 before the results start getting somewhat reliable. For large data sets, the chance of rejecting the normal distribution hypothesis increases a lot: no real data looks exactly like a normal distribution.

    References:

    T. W. Anderson, D. A. Darling
    Asymptotic theory of certain 'goodness of fit' criteria based on stochastic processes
    Annals of mathematical statistics 23(2)

    M. A. Stephens
    EDF Statistics for Goodness of Fit and Some Comparisons
    Journal of the American Statistical Association 69(347)

    Ralph B. D'Agostino
    Tests for the Normal Distribution
    Goodness-of-Fit Techniques

    L. Jäntschi and S. D. Bolboacă
    Computation of Probability Associated with Anderson–Darling Statistic
    Mathematics (MDPI, 2018)

    Since:
    0.7.0
    Author:
    Erich Schubert, Robert Gehde
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static double SMALL
      Cut-off for extreme values.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private AndersonDarlingTest()
      Private constructor.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static double A2Noncentral​(double[] sorted)
      Test a sorted but not standardized data set.
      static double A2StandardNormal​(double[] sorted)
      Test a sorted data set against the standard normal distribution.
      static double calculateQuantileCase0​(double A2, int n)
      Calculates the p-value for an Anderson Darling statistic in the case where both center and variance are known.
      static double calculateQuantileCase3​(double A2)
      Calculates the quantile for an Anderson Darling statistic in the case where both center and variance are unknown.
      static double pValueCase0​(double A2, int n)
      Calculates the p-value for an Anderson Darling statistic in the case where both center and variance are known.
      static double pValueCase3​(double A2)
      Calculates the p-value for an Anderson Darling statistic in the case where both center and variance are unknown.
      static double removeBiasNormalDistribution​(double A2, int n)
      Remove bias from the Anderson-Darling statistic if the mean and standard deviation were estimated from the data, and a normal distribution was assumed.
      static double removeBiasNormalDistributionDAgostino​(double A2, int n)
      Remove bias from the Anderson-Darling statistic if the mean and standard deviation were estimated from the data, and a normal distribution was assumed.
      • Methods inherited from class java.lang.Object

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

      • SMALL

        private static final double SMALL
        Cut-off for extreme values.
    • Constructor Detail

      • AndersonDarlingTest

        private AndersonDarlingTest()
        Private constructor. Static methods only.
    • Method Detail

      • A2StandardNormal

        public static double A2StandardNormal​(double[] sorted)
        Test a sorted data set against the standard normal distribution.

        Note: the data will be compared to the standard normal distribution, i.e. with mean 0 and variance 1.

        The data size should be at least 8 before the results start getting somewhat reliable. For large data sets, the chance of rejecting increases a lot: no real data looks exactly like a normal distribution.

        Parameters:
        sorted - Sorted input data.
        Returns:
        Test statistic A².
      • A2Noncentral

        public static double A2Noncentral​(double[] sorted)
        Test a sorted but not standardized data set.

        The data size should be at least 8!

        Parameters:
        sorted - Sorted input data.
        Returns:
        Test statistic A², after bias removal.
      • removeBiasNormalDistribution

        @Reference(authors="M. A. Stephens",
                   title="EDF Statistics for Goodness of Fit and Some Comparisons",
                   booktitle="Journal of the American Statistical Association, Volume 69, Issue 347",
                   url="https://doi.org/10.1080/01621459.1974.10480196",
                   bibkey="doi:10.1080/01621459.1974.10480196")
        public static double removeBiasNormalDistribution​(double A2,
                                                          int n)
        Remove bias from the Anderson-Darling statistic if the mean and standard deviation were estimated from the data, and a normal distribution was assumed.
        Parameters:
        A2 - A2 statistic
        n - Sample size
        Returns:
        Unbiased test statistic
      • removeBiasNormalDistributionDAgostino

        @Reference(authors="R. B. D\'Agostino",
                   title="Tests for the Normal Distribution",
                   booktitle="Goodness-of-Fit Techniques",
                   url="https://doi.org/10.1201/9780203753064-9",
                   bibkey="doi:10.1201/9780203753064-9")
        public static double removeBiasNormalDistributionDAgostino​(double A2,
                                                                   int n)
        Remove bias from the Anderson-Darling statistic if the mean and standard deviation were estimated from the data, and a normal distribution was assumed.
        Parameters:
        A2 - A2 statistic
        n - Sample size
        Returns:
        Unbiased test statistic
      • calculateQuantileCase3

        public static double calculateQuantileCase3​(double A2)
        Calculates the quantile for an Anderson Darling statistic in the case where both center and variance are unknown.

        Note: the equations assume a correction with removeBiasNormalDistributionDAgostino(double, int).

        Parameters:
        A2 - Anderson Darling statistic
        Returns:
        quantile
      • pValueCase3

        @Reference(authors="R. B. D\'Agostino",
                   title="Tests for the Normal Distribution",
                   booktitle="Goodness-of-Fit Techniques",
                   url="https://doi.org/10.1201/9780203753064-9",
                   bibkey="doi:10.1201/9780203753064-9")
        public static double pValueCase3​(double A2)
        Calculates the p-value for an Anderson Darling statistic in the case where both center and variance are unknown.

        Note: the equations assume a correction with removeBiasNormalDistributionDAgostino(double, int).

        Parameters:
        A2 - Anderson Darling statistic
        Returns:
        quantile
      • calculateQuantileCase0

        public static double calculateQuantileCase0​(double A2,
                                                    int n)
        Calculates the p-value for an Anderson Darling statistic in the case where both center and variance are known.

        Note: the equations assume a correction with removeBiasNormalDistributionDAgostino(double, int).

        Parameters:
        A2 - Anderson Darling statistic
        n - sample size
        Returns:
        quantile
      • pValueCase0

        @Reference(authors="L. J\u00e4ntschi and S. D. Bolboac\u0103",
                   booktitle="Mathematics 6(6)",
                   title="Computation of Probability Associated with Anderson-Darling Statistic",
                   url="https://doi.org/10.3390/math6060088",
                   bibkey="doi:10.3390/math6060088")
        public static double pValueCase0​(double A2,
                                         int n)
        Calculates the p-value for an Anderson Darling statistic in the case where both center and variance are known.

        Note: the equations assume a correction with removeBiasNormalDistributionDAgostino(double, int).

        Reference:

        L. Jäntschi and S. D. Bolboacă
        Computation of Probability Associated with Anderson-Darling Statistic
        Mathematics 6(6)

        Parameters:
        A2 - Anderson Darling statistic
        n - sample size
        Returns:
        quantile