Author: brentworden
Date: Thu Jun 7 06:22:45 2007
New Revision: 545169
URL: http://svn.apache.org/viewvc?view=rev&rev=545169
Log:
Removed dependency on DistributionFactory. Added settable t distribution field.
Modified:
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/TTestImpl.java
Modified:
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/TTestImpl.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/TTestImpl.java?view=diff&rev=545169&r1=545168&r2=545169
==============================================================================
---
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/TTestImpl.java
(original)
+++
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/inference/TTestImpl.java
Thu Jun 7 06:22:45 2007
@@ -19,6 +19,7 @@
import org.apache.commons.math.MathException;
import org.apache.commons.math.distribution.DistributionFactory;
import org.apache.commons.math.distribution.TDistribution;
+import org.apache.commons.math.distribution.TDistributionImpl;
import org.apache.commons.math.stat.StatUtils;
import org.apache.commons.math.stat.descriptive.StatisticalSummary;
@@ -32,14 +33,25 @@
*/
public class TTestImpl implements TTest {
- /** Cached DistributionFactory used to create TDistribution instances */
- private DistributionFactory distributionFactory = null;
+ /** Distribution used to compute inference statistics. */
+ private TDistribution distribution;
/**
* Default constructor.
*/
public TTestImpl() {
+ this(new TDistributionImpl(1.0));
+ }
+
+ /**
+ * Create a test instance using the given distribution for computing
+ * inference statistics.
+ * @param t distribution used to compute inference statistics.
+ * @since 1.2
+ */
+ public TTestImpl(TDistribution t) {
super();
+ setDistribution(t);
}
/**
@@ -910,12 +922,10 @@
/**
* Gets a DistributionFactory to use in creating TDistribution instances.
* @return a distribution factory.
+ * @deprecated inject TDistribution directly instead of using a factory.
*/
protected DistributionFactory getDistributionFactory() {
- if (distributionFactory == null) {
- distributionFactory = DistributionFactory.newInstance();
- }
- return distributionFactory;
+ return DistributionFactory.newInstance();
}
/**
@@ -995,9 +1005,8 @@
protected double tTest(double m, double mu, double v, double n)
throws MathException {
double t = Math.abs(t(m, mu, v, n));
- TDistribution tDistribution =
- getDistributionFactory().createTDistribution(n - 1);
- return 1.0 - tDistribution.cumulativeProbability(-t, t);
+ distribution.setDegreesOfFreedom(n - 1);
+ return 1.0 - distribution.cumulativeProbability(-t, t);
}
/**
@@ -1020,10 +1029,9 @@
throws MathException {
double t = Math.abs(t(m1, m2, v1, v2, n1, n2));
double degreesOfFreedom = 0;
- degreesOfFreedom= df(v1, v2, n1, n2);
- TDistribution tDistribution =
- getDistributionFactory().createTDistribution(degreesOfFreedom);
- return 1.0 - tDistribution.cumulativeProbability(-t, t);
+ degreesOfFreedom = df(v1, v2, n1, n2);
+ distribution.setDegreesOfFreedom(degreesOfFreedom);
+ return 1.0 - distribution.cumulativeProbability(-t, t);
}
/**
@@ -1045,10 +1053,17 @@
double v2, double n1, double n2)
throws MathException {
double t = Math.abs(homoscedasticT(m1, m2, v1, v2, n1, n2));
- double degreesOfFreedom = 0;
- degreesOfFreedom = (double) (n1 + n2 - 2);
- TDistribution tDistribution =
- getDistributionFactory().createTDistribution(degreesOfFreedom);
- return 1.0 - tDistribution.cumulativeProbability(-t, t);
- }
+ double degreesOfFreedom = (double) (n1 + n2 - 2);
+ distribution.setDegreesOfFreedom(degreesOfFreedom);
+ return 1.0 - distribution.cumulativeProbability(-t, t);
+ }
+
+ /**
+ * Modify the distribution used to compute inference statistics.
+ * @param value the new distribution
+ * @since 1.2
+ */
+ public void setDistribution(TDistribution value) {
+ distribution = value;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]