org.apache.commons.math.stat.inference
Class OneWayAnovaImpl

java.lang.Object
  extended by org.apache.commons.math.stat.inference.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
Version:
$Revision: 983921 $ $Date: 2010-08-10 12:46:06 +0200 (mar. 10 ao??t 2010) $

Nested Class Summary
private static class OneWayAnovaImpl.AnovaStats
          Convenience class to pass dfbg,dfwg,F values around within AnovaImpl.
 
Constructor Summary
OneWayAnovaImpl()
          Default constructor.
 
Method Summary
 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.
private  OneWayAnovaImpl.AnovaStats anovaStats(java.util.Collection<double[]> categoryData)
          This method actually does the calculations (except P-value).
 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
clone, equals, finalize, 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:

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:

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:

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.

anovaStats

private OneWayAnovaImpl.AnovaStats anovaStats(java.util.Collection<double[]> categoryData)
                                       throws java.lang.IllegalArgumentException,
                                              MathException
This method actually does the calculations (except P-value).

Parameters:
categoryData - Collection of double[] arrays each containing data for one category
Returns:
computed AnovaStats
Throws:
java.lang.IllegalArgumentException - if categoryData does not meet preconditions specified in the interface definition
MathException - if an error occurs computing the Anova stats


Copyright (c) 2003-2011 Apache Software Foundation