Class OneWayAnovaImpl

java.lang.Object
org.apache.commons.math.stat.inference.OneWayAnovaImpl
All Implemented Interfaces:
OneWayAnova

public class OneWayAnovaImpl extends 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
Version:
$Revision: 983921 $ $Date: 2010-08-10 12:46:06 +0200 (mar. 10 août 2010) $
  • Constructor Summary

    Constructors
    Constructor
    Description
    Default constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    anovaFValue(Collection<double[]> categoryData)
    Computes the ANOVA F-value for a collection of double[] arrays.
    double
    anovaPValue(Collection<double[]> categoryData)
    Computes the ANOVA P-value for a collection of double[] arrays.
    boolean
    anovaTest(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

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

    • OneWayAnovaImpl

      public OneWayAnovaImpl()
      Default constructor.
  • Method Details

    • anovaFValue

      public double anovaFValue(Collection<double[]> categoryData) throws 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:
      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(Collection<double[]> categoryData) throws 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:
      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(Collection<double[]> categoryData, double alpha) throws 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:
      IllegalArgumentException - if the preconditions are not met
      MathException - if the statistic can not be computed do to a convergence or other numerical error.