Class OneWayAnova
- java.lang.Object
-
- org.hipparchus.stat.inference.OneWayAnova
-
public class OneWayAnova extends Object
Implements one-way ANOVA (analysis of variance) statistics.Tests for differences between two or more categories of univariate data (for example, the body mass index of accountants, lawyers, doctors and computer programmers). When two categories are given, this is equivalent to the
TTest
.Uses the
Hipparchus 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
-
-
Constructor Summary
Constructors Constructor Description OneWayAnova()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
anovaFValue(Collection<double[]> categoryData)
Computes the ANOVA F-value for a collection ofdouble[]
arrays.double
anovaPValue(Collection<double[]> categoryData)
Computes the ANOVA P-value for a collection ofdouble[]
arrays.double
anovaPValue(Collection<StreamingStatistics> categoryData, boolean allowOneElementData)
Computes the ANOVA P-value for a collection ofStreamingStatistics
.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.
-
-
-
Method Detail
-
anovaFValue
public double anovaFValue(Collection<double[]> categoryData) throws MathIllegalArgumentException, NullArgumentException
Computes the ANOVA F-value for a collection ofdouble[]
arrays.Preconditions:
- The categoryData
Collection
must containdouble[]
arrays. - There must be at least two
double[]
arrays in thecategoryData
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
wheremsbg = between group mean square mswg = within group mean square
are as defined here- Parameters:
categoryData
-Collection
ofdouble[]
arrays each containing data for one category- Returns:
- Fvalue
- Throws:
NullArgumentException
- ifcategoryData
isnull
MathIllegalArgumentException
- if the length of thecategoryData
array is less than 2 or a containeddouble[]
array does not have at least two values
- The categoryData
-
anovaPValue
public double anovaPValue(Collection<double[]> categoryData) throws MathIllegalArgumentException, NullArgumentException, MathIllegalStateException
Computes the ANOVA P-value for a collection ofdouble[]
arrays.Preconditions:
- The categoryData
Collection
must containdouble[]
arrays. - There must be at least two
double[]
arrays in thecategoryData
collection and each of these arrays must contain at least two values.
This implementation uses the
Hipparchus F Distribution implementation
to estimate the exact p-value, using the formulap = 1 - cumulativeProbability(F)
whereF
is the F value andcumulativeProbability
is the Hipparchus implementation of the F distribution.- Parameters:
categoryData
-Collection
ofdouble[]
arrays each containing data for one category- Returns:
- Pvalue
- Throws:
NullArgumentException
- ifcategoryData
isnull
MathIllegalArgumentException
- if the length of thecategoryData
array is less than 2 or a containeddouble[]
array does not have at least two valuesMathIllegalStateException
- if the p-value can not be computed due to a convergence errorMathIllegalStateException
- if the maximum number of iterations is exceeded
- The categoryData
-
anovaPValue
public double anovaPValue(Collection<StreamingStatistics> categoryData, boolean allowOneElementData) throws MathIllegalArgumentException, NullArgumentException, MathIllegalStateException
Computes the ANOVA P-value for a collection ofStreamingStatistics
.Preconditions:
- The categoryData
Collection
must containStreamingStatistics
. - There must be at least two
StreamingStatistics
in thecategoryData
collection and each of these statistics must contain at least two values.
This implementation uses the
Hipparchus F Distribution implementation
to estimate the exact p-value, using the formulap = 1 - cumulativeProbability(F)
whereF
is the F value andcumulativeProbability
is the Hipparchus implementation of the F distribution.- Parameters:
categoryData
-Collection
ofStreamingStatistics
each containing data for one categoryallowOneElementData
- if true, allow computation for one catagory only or for one data element per category- Returns:
- Pvalue
- Throws:
NullArgumentException
- ifcategoryData
isnull
MathIllegalArgumentException
- if the length of thecategoryData
array is less than 2 or a containedStreamingStatistics
does not have at least two valuesMathIllegalStateException
- if the p-value can not be computed due to a convergence errorMathIllegalStateException
- if the maximum number of iterations is exceeded
- The categoryData
-
anovaTest
public boolean anovaTest(Collection<double[]> categoryData, double alpha) throws MathIllegalArgumentException, NullArgumentException, MathIllegalStateException
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 containdouble[]
arrays. - There must be at least two
double[]
arrays in thecategoryData
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
Hipparchus F Distribution implementation
to estimate the exact p-value, using the formulap = 1 - cumulativeProbability(F)
whereF
is the F value andcumulativeProbability
is the Hipparchus implementation of the F distribution.True is returned iff the estimated p-value is less than alpha.
- Parameters:
categoryData
-Collection
ofdouble[]
arrays each containing data for one categoryalpha
- significance level of the test- Returns:
- true if the null hypothesis can be rejected with confidence 1 - alpha
- Throws:
NullArgumentException
- ifcategoryData
isnull
MathIllegalArgumentException
- if the length of thecategoryData
array is less than 2 or a containeddouble[]
array does not have at least two valuesMathIllegalArgumentException
- ifalpha
is not in the range (0, 0.5]MathIllegalStateException
- if the p-value can not be computed due to a convergence errorMathIllegalStateException
- if the maximum number of iterations is exceeded
- The categoryData
-
-