You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2018/01/26 23:41:49 UTC

[math] Revert "MATH-1441: Cache instance of "TDistribution"."

Repository: commons-math
Updated Branches:
  refs/heads/master 1f07a0bf7 -> 60bcdd450


Revert "MATH-1441: Cache instance of "TDistribution"."

This reverts commit 1f07a0bf70049cb0a2f6b52ea7c261da5adb1abb.

Caching does not seem to provide any perfomance improvement.


Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/60bcdd45
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/60bcdd45
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/60bcdd45

Branch: refs/heads/master
Commit: 60bcdd450d6950da981d70b8b08379bdd744c82d
Parents: 1f07a0b
Author: Gilles <er...@apache.org>
Authored: Sat Jan 27 00:39:45 2018 +0100
Committer: Gilles <er...@apache.org>
Committed: Sat Jan 27 00:39:45 2018 +0100

----------------------------------------------------------------------
 .../math4/stat/regression/SimpleRegression.java | 26 ++++----------------
 1 file changed, 5 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-math/blob/60bcdd45/src/main/java/org/apache/commons/math4/stat/regression/SimpleRegression.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/math4/stat/regression/SimpleRegression.java b/src/main/java/org/apache/commons/math4/stat/regression/SimpleRegression.java
index f7340a3..7fc823d 100644
--- a/src/main/java/org/apache/commons/math4/stat/regression/SimpleRegression.java
+++ b/src/main/java/org/apache/commons/math4/stat/regression/SimpleRegression.java
@@ -91,9 +91,6 @@ public class SimpleRegression implements Serializable, UpdatingMultipleLinearReg
 
     /** include an intercept or not */
     private final boolean hasIntercept;
-
-    /** Cache (performance optimization). */
-    private transient TDistribution distribution;
     // ---------------------Public methods--------------------------------------
 
     /**
@@ -700,8 +697,9 @@ public class SimpleRegression implements Serializable, UpdatingMultipleLinearReg
                                           alpha, 0, 1);
         }
         // No advertised NotStrictlyPositiveException here - will return NaN above
+        TDistribution distribution = new TDistribution(n - 2);
         return getSlopeStdErr() *
-            getDistribution().inverseCumulativeProbability(1d - alpha / 2d);
+            distribution.inverseCumulativeProbability(1d - alpha / 2d);
     }
 
     /**
@@ -731,28 +729,14 @@ public class SimpleRegression implements Serializable, UpdatingMultipleLinearReg
             return Double.NaN;
         }
         // No advertised NotStrictlyPositiveException here - will return NaN above
-        return 2d * (1.0 - getDistribution()
-                     .cumulativeProbability(FastMath.abs(getSlope()) / getSlopeStdErr()));
+        TDistribution distribution = new TDistribution(n - 2);
+        return 2d * (1.0 - distribution.cumulativeProbability(
+                    FastMath.abs(getSlope()) / getSlopeStdErr()));
     }
 
     // ---------------------Private methods-----------------------------------
 
     /**
-     * Computes or return a cached distribution.
-     *
-     * @return the distribution.
-     */
-    private TDistribution getDistribution() {
-        final double numDeg = n - 2;
-        if (distribution == null ||
-            distribution.getDegreesOfFreedom() != numDeg) {
-            distribution = new TDistribution(numDeg);
-        }
-
-        return distribution;
-    }
-
-    /**
     * Returns the intercept of the estimated regression line, given the slope.
     * <p>
     * Will return <code>NaN</code> if slope is <code>NaN</code>.</p>