Author: brentworden
Date: Thu Jun 7 06:30:19 2007
New Revision: 545174
URL: http://svn.apache.org/viewvc?view=rev&rev=545174
Log:
Removed dependency on DistributionFactory. Added settable chi-squared
distribution field.
Modified:
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java
Modified:
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java?view=diff&rev=545174&r1=545173&r2=545174
==============================================================================
---
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java
(original)
+++
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/ChiSquareTestImpl.java
Thu Jun 7 06:30:19 2007
@@ -17,8 +17,9 @@
package org.apache.commons.math.stat.inference;
import org.apache.commons.math.MathException;
-import org.apache.commons.math.distribution.DistributionFactory;
import org.apache.commons.math.distribution.ChiSquaredDistribution;
+import org.apache.commons.math.distribution.ChiSquaredDistributionImpl;
+import org.apache.commons.math.distribution.DistributionFactory;
/**
* Implements Chi-Square test statistics defined in the [EMAIL PROTECTED]
ChiSquareTest} interface.
@@ -26,17 +27,27 @@
* @version $Revision$ $Date$
*/
public class ChiSquareTestImpl implements ChiSquareTest {
-
- /** Cached DistributionFactory used to create ChiSquaredDistribution
instances */
- private DistributionFactory distributionFactory = null;
+
+ /** Distribution used to compute inference statistics. */
+ private ChiSquaredDistribution distribution;
/**
* Construct a ChiSquareTestImpl
*/
public ChiSquareTestImpl() {
- super();
+ this(new ChiSquaredDistributionImpl(1.0));
}
+ /**
+ * Create a test instance using the given distribution for computing
+ * inference statistics.
+ * @param x distribution used to compute inference statistics.
+ * @since 1.2
+ */
+ public ChiSquareTestImpl(ChiSquaredDistribution x) {
+ super();
+ setDistribution(x);
+ }
/**
* @param observed array of observed frequency counts
* @param expected array of expected frequency counts
@@ -72,11 +83,9 @@
*/
public double chiSquareTest(double[] expected, long[] observed)
throws IllegalArgumentException, MathException {
- ChiSquaredDistribution chiSquaredDistribution =
- getDistributionFactory().createChiSquareDistribution(
- (double) expected.length - 1);
- return 1 - chiSquaredDistribution.cumulativeProbability(
- chiSquare(expected, observed));
+ distribution.setDegreesOfFreedom(expected.length - 1.0);
+ return 1.0 - distribution.cumulativeProbability(
+ chiSquare(expected, observed));
}
/**
@@ -143,9 +152,8 @@
throws IllegalArgumentException, MathException {
checkArray(counts);
double df = ((double) counts.length -1) * ((double) counts[0].length -
1);
- ChiSquaredDistribution chiSquaredDistribution =
- getDistributionFactory().createChiSquareDistribution(df);
- return 1 -
chiSquaredDistribution.cumulativeProbability(chiSquare(counts));
+ distribution.setDegreesOfFreedom(df);
+ return 1 - distribution.cumulativeProbability(chiSquare(counts));
}
/**
@@ -195,14 +203,11 @@
//--------------------- Protected methods
---------------------------------
/**
* Gets a DistributionFactory to use in creating ChiSquaredDistribution
instances.
- *
- * @return a DistributionFactory
+ * @deprecated inject ChiSquaredDistribution instances directly instead of
+ * using a factory.
*/
protected DistributionFactory getDistributionFactory() {
- if (distributionFactory == null) {
- distributionFactory = DistributionFactory.newInstance();
- }
- return distributionFactory;
+ return DistributionFactory.newInstance();
}
//--------------------- Private array methods -- should find a utility
home for these
@@ -277,4 +282,12 @@
return true;
}
+ /**
+ * Modify the distribution used to compute inference statistics.
+ * @param value the new distribution
+ * @since 1.2
+ */
+ public void setDistribution(ChiSquaredDistribution value) {
+ distribution = value;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]