Author: brentworden
Date: Thu Jun  7 06:08:57 2007
New Revision: 545161

URL: http://svn.apache.org/viewvc?view=rev&rev=545161
Log:
Removed dependency on DistributionFactory.  Added settable t distribution field.

Modified:
    
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/regression/SimpleRegression.java

Modified: 
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/regression/SimpleRegression.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/regression/SimpleRegression.java?view=diff&rev=545161&r1=545160&r2=545161
==============================================================================
--- 
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/regression/SimpleRegression.java
 (original)
+++ 
jakarta/commons/proper/math/trunk/src/java/org/apache/commons/math/stat/regression/SimpleRegression.java
 Thu Jun  7 06:08:57 2007
@@ -19,8 +19,8 @@
 import java.io.Serializable;
 
 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;
 
 /**
  * Estimates an ordinary least squares regression model
@@ -57,6 +57,9 @@
     /** Serializable version identifier */
     private static final long serialVersionUID = -3004689053607543335L;
 
+    /** the distribution used to compute inference statistics. */
+    private TDistribution distribution;
+    
     /** sum of x values */
     private double sumX = 0d;
 
@@ -87,7 +90,18 @@
      * Create an empty SimpleRegression instance
      */
     public SimpleRegression() {
+        this(new TDistributionImpl(1.0));
+    }
+    
+    /**
+     * Create an empty SimpleRegression using the given distribution object to
+     * compute inference statistics.
+     * @param t the distribution used to compute inference statistics.
+     * @since 1.2
+     */
+    public SimpleRegression(TDistribution t) {
         super();
+        setDistribution(t);
     }
     
     /**
@@ -119,6 +133,10 @@
         sumX += x;
         sumY += y;
         n++;
+        
+        if (n > 2) {
+            distribution.setDegreesOfFreedom(n - 2);
+        }
     }
 
     /**
@@ -455,7 +473,7 @@
             throw new IllegalArgumentException();
         }
         return getSlopeStdErr() *
-            getTDistribution().inverseCumulativeProbability(1d - alpha / 2d);
+            distribution.inverseCumulativeProbability(1d - alpha / 2d);
     }
 
     /**
@@ -480,7 +498,7 @@
      * @throws MathException if the significance level can not be computed.
      */
     public double getSignificance() throws MathException {
-        return 2d* (1.0 - getTDistribution().cumulativeProbability(
+        return 2d * (1.0 - distribution.cumulativeProbability(
                     Math.abs(getSlope()) / getSlopeStdErr()));
     }
 
@@ -507,14 +525,18 @@
     private double getRegressionSumSquares(double slope) {
         return slope * slope * sumXX;
     }
-
+    
     /**
-     * Uses distribution framework to get a t distribution instance 
-     * with df = n - 2
-     *
-     * @return t distribution with df = n - 2
-     */
-    private TDistribution getTDistribution() {
-        return DistributionFactory.newInstance().createTDistribution(n - 2);
+     * Modify the distribution used to compute inference statistics.
+     * @param value the new distribution
+     * @since 1.2
+     */
+    public void setDistribution(TDistribution value) {
+        distribution = value;
+        
+        // modify degrees of freedom
+        if (n > 2) {
+            distribution.setDegreesOfFreedom(n - 2);
+        }
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to