Class OneWayAnovaImpl

  • All Implemented Interfaces:
    OneWayAnova

    public class OneWayAnovaImpl
    extends java.lang.Object
    implements OneWayAnova
    Implements one-way ANOVA statistics defined in the OneWayAnovaImpl interface.

    Uses the commons-math F Distribution implementation to estimate exact p-values.

    This implementation is based on a description at http://faculty.vassar.edu/lowry/ch13pt1.html

     Abbreviations: bg = between groups,
                    wg = within groups,
                    ss = sum squared deviations
     
    Since:
    1.2
    • Constructor Summary

      Constructors 
      Constructor Description
      OneWayAnovaImpl()
      Default constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double anovaFValue​(java.util.Collection<double[]> categoryData)
      Computes the ANOVA F-value for a collection of double[] arrays.
      double anovaPValue​(java.util.Collection<double[]> categoryData)
      Computes the ANOVA P-value for a collection of double[] arrays.
      boolean anovaTest​(java.util.Collection<double[]> categoryData, double alpha)
      Performs an ANOVA test, evaluating the null hypothesis that there is no difference among the means of the data categories.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • OneWayAnovaImpl

        public OneWayAnovaImpl()
        Default constructor.
    • Method Detail

      • anovaFValue

        public double anovaFValue​(java.util.Collection<double[]> categoryData)
                           throws java.lang.IllegalArgumentException,
                                  MathException
        Computes the ANOVA F-value for a collection of double[] arrays.

        Preconditions:

        • The categoryData Collection must contain double[] arrays.
        • There must be at least two double[] arrays in the categoryData collection and each of these arrays must contain at least two values.

        This implementation computes the F statistic using the definitional formula

           F = msbg/mswg
        where
          msbg = between group mean square
          mswg = within group mean square
        are as defined here

        Specified by:
        anovaFValue in interface OneWayAnova
        Parameters:
        categoryData - Collection of double[] arrays each containing data for one category
        Returns:
        Fvalue
        Throws:
        java.lang.IllegalArgumentException - if the preconditions are not met
        MathException - if the statistic can not be computed do to a convergence or other numerical error.
      • anovaPValue

        public double anovaPValue​(java.util.Collection<double[]> categoryData)
                           throws java.lang.IllegalArgumentException,
                                  MathException
        Computes the ANOVA P-value for a collection of double[] arrays.

        Preconditions:

        • The categoryData Collection must contain double[] arrays.
        • There must be at least two double[] arrays in the categoryData collection and each of these arrays must contain at least two values.

        This implementation uses the commons-math F Distribution implementation to estimate the exact p-value, using the formula

           p = 1 - cumulativeProbability(F)
        where F is the F value and cumulativeProbability is the commons-math implementation of the F distribution.

        Specified by:
        anovaPValue in interface OneWayAnova
        Parameters:
        categoryData - Collection of double[] arrays each containing data for one category
        Returns:
        Pvalue
        Throws:
        java.lang.IllegalArgumentException - if the preconditions are not met
        MathException - if the statistic can not be computed do to a convergence or other numerical error.
      • anovaTest

        public boolean anovaTest​(java.util.Collection<double[]> categoryData,
                                 double alpha)
                          throws java.lang.IllegalArgumentException,
                                 MathException
        Performs an ANOVA test, evaluating the null hypothesis that there is no difference among the means of the data categories.

        Preconditions:

        • The categoryData Collection must contain double[] arrays.
        • There must be at least two double[] arrays in the categoryData collection and each of these arrays must contain at least two values.
        • alpha must be strictly greater than 0 and less than or equal to 0.5.

        This implementation uses the commons-math F Distribution implementation to estimate the exact p-value, using the formula

           p = 1 - cumulativeProbability(F)
        where F is the F value and cumulativeProbability is the commons-math implementation of the F distribution.

        True is returned iff the estimated p-value is less than alpha.

        Specified by:
        anovaTest in interface OneWayAnova
        Parameters:
        categoryData - Collection of double[] arrays each containing data for one category
        alpha - significance level of the test
        Returns:
        true if the null hypothesis can be rejected with confidence 1 - alpha
        Throws:
        java.lang.IllegalArgumentException - if the preconditions are not met
        MathException - if the statistic can not be computed do to a convergence or other numerical error.