Class ChiSquareTestImpl
 java.lang.Object

 org.apache.commons.math.stat.inference.ChiSquareTestImpl

 All Implemented Interfaces:
ChiSquareTest
,UnknownDistributionChiSquareTest
public class ChiSquareTestImpl extends java.lang.Object implements UnknownDistributionChiSquareTest
Implements ChiSquare test statistics defined in theUnknownDistributionChiSquareTest
interface.


Constructor Summary
Constructors Constructor Description ChiSquareTestImpl()
Construct a ChiSquareTestImplChiSquareTestImpl(ChiSquaredDistribution x)
Create a test instance using the given distribution for computing inference statistics.

Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description double
chiSquare(double[] expected, long[] observed)
double
chiSquare(long[][] counts)
Computes the ChiSquare statistic associated with a chisquare test of independence based on the inputcounts
array, viewed as a twoway table.double
chiSquareDataSetsComparison(long[] observed1, long[] observed2)
Computes a ChiSquare two sample test statistic comparing bin frequency counts inobserved1
andobserved2
.double
chiSquareTest(double[] expected, long[] observed)
Returns the observed significance level, or pvalue, associated with a Chisquare goodness of fit test comparing theobserved
frequency counts to those in theexpected
array.boolean
chiSquareTest(double[] expected, long[] observed, double alpha)
Performs a Chisquare goodness of fit test evaluating the null hypothesis that the observed counts conform to the frequency distribution described by the expected counts, with significance levelalpha
.double
chiSquareTest(long[][] counts)
Returns the observed significance level, or pvalue, associated with a chisquare test of independence based on the inputcounts
array, viewed as a twoway table.boolean
chiSquareTest(long[][] counts, double alpha)
Performs a chisquare test of independence evaluating the null hypothesis that the classifications represented by the counts in the columns of the input 2way table are independent of the rows, with significance levelalpha
.double
chiSquareTestDataSetsComparison(long[] observed1, long[] observed2)
Returns the observed significance level, or pvalue, associated with a ChiSquare two sample test comparing bin frequency counts inobserved1
andobserved2
.boolean
chiSquareTestDataSetsComparison(long[] observed1, long[] observed2, double alpha)
Performs a ChiSquare two sample test comparing two binned data sets.void
setDistribution(ChiSquaredDistribution value)
Modify the distribution used to compute inference statistics.



Constructor Detail

ChiSquareTestImpl
public ChiSquareTestImpl()
Construct a ChiSquareTestImpl

ChiSquareTestImpl
public ChiSquareTestImpl(ChiSquaredDistribution x)
Create a test instance using the given distribution for computing inference statistics. Parameters:
x
 distribution used to compute inference statistics. Since:
 1.2


Method Detail

chiSquare
public double chiSquare(double[] expected, long[] observed) throws java.lang.IllegalArgumentException
Computes the ChiSquare statistic comparingobserved
andexpected
frequency counts.This statistic can be used to perform a ChiSquare test evaluating the null hypothesis that the observed counts follow the expected distribution.
Preconditions:
 Expected counts must all be positive.
 Observed counts must all be >= 0.
 The observed and expected arrays must have the same length and their common length must be at least 2.
If any of the preconditions are not met, an
IllegalArgumentException
is thrown.Note: This implementation rescales the
expected
array if necessary to ensure that the sum of the expected and observed counts are equal. Specified by:
chiSquare
in interfaceChiSquareTest
 Parameters:
observed
 array of observed frequency countsexpected
 array of expected frequency counts Returns:
 chisquare test statistic
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not met or length is less than 2

chiSquareTest
public double chiSquareTest(double[] expected, long[] observed) throws java.lang.IllegalArgumentException, MathException
Returns the observed significance level, or pvalue, associated with a Chisquare goodness of fit test comparing theobserved
frequency counts to those in theexpected
array.The number returned is the smallest significance level at which one can reject the null hypothesis that the observed counts conform to the frequency distribution described by the expected counts.
Preconditions:
 Expected counts must all be positive.
 Observed counts must all be >= 0.
 The observed and expected arrays must have the same length and their common length must be at least 2.
If any of the preconditions are not met, an
IllegalArgumentException
is thrown.Note: This implementation rescales the
expected
array if necessary to ensure that the sum of the expected and observed counts are equal. Specified by:
chiSquareTest
in interfaceChiSquareTest
 Parameters:
observed
 array of observed frequency countsexpected
 array of expected frequency counts Returns:
 pvalue
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not metMathException
 if an error occurs computing the pvalue

chiSquareTest
public boolean chiSquareTest(double[] expected, long[] observed, double alpha) throws java.lang.IllegalArgumentException, MathException
Performs a Chisquare goodness of fit test evaluating the null hypothesis that the observed counts conform to the frequency distribution described by the expected counts, with significance levelalpha
. Returns true iff the null hypothesis can be rejected with 100 * (1  alpha) percent confidence.Example:
To test the hypothesis thatobserved
followsexpected
at the 99% level, usechiSquareTest(expected, observed, 0.01)
Preconditions:
 Expected counts must all be positive.
 Observed counts must all be >= 0.
 The observed and expected arrays must have the same length and their common length must be at least 2.

0 < alpha < 0.5
If any of the preconditions are not met, an
IllegalArgumentException
is thrown.Note: This implementation rescales the
expected
array if necessary to ensure that the sum of the expected and observed counts are equal. Specified by:
chiSquareTest
in interfaceChiSquareTest
 Parameters:
observed
 array of observed frequency countsexpected
 array of expected frequency countsalpha
 significance level of the test Returns:
 true iff null hypothesis can be rejected with confidence 1  alpha
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not metMathException
 if an error occurs performing the test

chiSquare
public double chiSquare(long[][] counts) throws java.lang.IllegalArgumentException
Description copied from interface:ChiSquareTest
Computes the ChiSquare statistic associated with a chisquare test of independence based on the inputcounts
array, viewed as a twoway table.The rows of the 2way table are
count[0], ... , count[count.length  1]
Preconditions:
 All counts must be >= 0.
 The count array must be rectangular (i.e. all count[i] subarrays must have the same length).
 The 2way table represented by
counts
must have at least 2 columns and at least 2 rows.
If any of the preconditions are not met, an
IllegalArgumentException
is thrown. Specified by:
chiSquare
in interfaceChiSquareTest
 Parameters:
counts
 array representation of 2way table Returns:
 chisquare test statistic
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not met

chiSquareTest
public double chiSquareTest(long[][] counts) throws java.lang.IllegalArgumentException, MathException
Description copied from interface:ChiSquareTest
Returns the observed significance level, or pvalue, associated with a chisquare test of independence based on the inputcounts
array, viewed as a twoway table.The rows of the 2way table are
count[0], ... , count[count.length  1]
Preconditions:
 All counts must be >= 0.
 The count array must be rectangular (i.e. all count[i] subarrays must have the same length).
 The 2way table represented by
counts
must have at least 2 columns and at least 2 rows.
If any of the preconditions are not met, an
IllegalArgumentException
is thrown. Specified by:
chiSquareTest
in interfaceChiSquareTest
 Parameters:
counts
 array representation of 2way table Returns:
 pvalue
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not metMathException
 if an error occurs computing the pvalue

chiSquareTest
public boolean chiSquareTest(long[][] counts, double alpha) throws java.lang.IllegalArgumentException, MathException
Description copied from interface:ChiSquareTest
Performs a chisquare test of independence evaluating the null hypothesis that the classifications represented by the counts in the columns of the input 2way table are independent of the rows, with significance levelalpha
. Returns true iff the null hypothesis can be rejected with 100 * (1  alpha) percent confidence.The rows of the 2way table are
count[0], ... , count[count.length  1]
Example:
To test the null hypothesis that the counts incount[0], ... , count[count.length  1]
all correspond to the same underlying probability distribution at the 99% level, usechiSquareTest(counts, 0.01)
Preconditions:
 All counts must be >= 0.
 The count array must be rectangular (i.e. all count[i] subarrays must have the same length).
 The 2way table represented by
counts
must have at least 2 columns and at least 2 rows.
If any of the preconditions are not met, an
IllegalArgumentException
is thrown. Specified by:
chiSquareTest
in interfaceChiSquareTest
 Parameters:
counts
 array representation of 2way tablealpha
 significance level of the test Returns:
 true iff null hypothesis can be rejected with confidence 1  alpha
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not metMathException
 if an error occurs performing the test

chiSquareDataSetsComparison
public double chiSquareDataSetsComparison(long[] observed1, long[] observed2) throws java.lang.IllegalArgumentException
Description copied from interface:UnknownDistributionChiSquareTest
Computes a ChiSquare two sample test statistic comparing bin frequency counts in
observed1
andobserved2
. The sums of frequency counts in the two samples are not required to be the same. The formula used to compute the test statistic is∑[(K * observed1[i]  observed2[i]/K)^{2} / (observed1[i] + observed2[i])]
whereK = &sqrt;[&sum(observed2 / ∑(observed1)]
This statistic can be used to perform a ChiSquare test evaluating the null hypothesis that both observed counts follow the same distribution.
Preconditions:
 Observed counts must be nonnegative.
 Observed counts for a specific bin must not both be zero.
 Observed counts for a specific sample must not all be 0.
 The arrays
observed1
andobserved2
must have the same length and their common length must be at least 2.
If any of the preconditions are not met, an
IllegalArgumentException
is thrown. Specified by:
chiSquareDataSetsComparison
in interfaceUnknownDistributionChiSquareTest
 Parameters:
observed1
 array of observed frequency counts of the first data setobserved2
 array of observed frequency counts of the second data set Returns:
 chisquare test statistic
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not met Since:
 1.2

chiSquareTestDataSetsComparison
public double chiSquareTestDataSetsComparison(long[] observed1, long[] observed2) throws java.lang.IllegalArgumentException, MathException
Description copied from interface:UnknownDistributionChiSquareTest
Returns the observed significance level, or pvalue, associated with a ChiSquare two sample test comparing bin frequency counts in
observed1
andobserved2
.The number returned is the smallest significance level at which one can reject the null hypothesis that the observed counts conform to the same distribution.
See
Preconditions:UnknownDistributionChiSquareTest.chiSquareDataSetsComparison(long[], long[])
for details on the formula used to compute the test statistic. The degrees of of freedom used to perform the test is one less than the common length of the input observed count arrays. Observed counts must be nonnegative.
 Observed counts for a specific bin must not both be zero.
 Observed counts for a specific sample must not all be 0.
 The arrays
observed1
andobserved2
must have the same length and their common length must be at least 2.
If any of the preconditions are not met, an
IllegalArgumentException
is thrown. Specified by:
chiSquareTestDataSetsComparison
in interfaceUnknownDistributionChiSquareTest
 Parameters:
observed1
 array of observed frequency counts of the first data setobserved2
 array of observed frequency counts of the second data set Returns:
 pvalue
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not metMathException
 if an error occurs computing the pvalue Since:
 1.2

chiSquareTestDataSetsComparison
public boolean chiSquareTestDataSetsComparison(long[] observed1, long[] observed2, double alpha) throws java.lang.IllegalArgumentException, MathException
Description copied from interface:UnknownDistributionChiSquareTest
Performs a ChiSquare two sample test comparing two binned data sets. The test evaluates the null hypothesis that the two lists of observed counts conform to the same frequency distribution, with significance level
alpha
. Returns true iff the null hypothesis can be rejected with 100 * (1  alpha) percent confidence.See
Preconditions:UnknownDistributionChiSquareTest.chiSquareDataSetsComparison(long[], long[])
for details on the formula used to compute the Chisquare statistic used in the test. The degrees of of freedom used to perform the test is one less than the common length of the input observed count arrays. Observed counts must be nonnegative.
 Observed counts for a specific bin must not both be zero.
 Observed counts for a specific sample must not all be 0.
 The arrays
observed1
andobserved2
must have the same length and their common length must be at least 2. 
0 < alpha < 0.5
If any of the preconditions are not met, an
IllegalArgumentException
is thrown. Specified by:
chiSquareTestDataSetsComparison
in interfaceUnknownDistributionChiSquareTest
 Parameters:
observed1
 array of observed frequency counts of the first data setobserved2
 array of observed frequency counts of the second data setalpha
 significance level of the test Returns:
 true iff null hypothesis can be rejected with confidence 1  alpha
 Throws:
java.lang.IllegalArgumentException
 if preconditions are not metMathException
 if an error occurs performing the test Since:
 1.2

setDistribution
public void setDistribution(ChiSquaredDistribution value)
Modify the distribution used to compute inference statistics. Parameters:
value
 the new distribution Since:
 1.2

