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]

Reply via email to