Author: tn Date: Thu May 1 11:54:06 2014 New Revision: 1591624 URL: http://svn.apache.org/r1591624 Log: [MATH-1110] Added constructor to OLSMultipleLinearRegression to be able to specify a custom singularity threshold for QR decomposition. Thanks to Edward Segall.
Modified: commons/proper/math/trunk/src/changes/changes.xml commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression.java commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegressionTest.java Modified: commons/proper/math/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/changes/changes.xml?rev=1591624&r1=1591623&r2=1591624&view=diff ============================================================================== --- commons/proper/math/trunk/src/changes/changes.xml (original) +++ commons/proper/math/trunk/src/changes/changes.xml Thu May 1 11:54:06 2014 @@ -80,6 +80,10 @@ Users are encouraged to upgrade to this classes are intended to be package private only and are not supposed to be used for other purposes. "> + <action dev="tn" type="add" issue="MATH-1110"> + Added new constructor to "OLSMultipleLinearRegression" to be able + to specify a custom singularity threshold for QR decomposition. + </action> <action dev="erans" type="fix" issue="MATH-1092"> Extracted class "LineSearch" from "PowellOptimizer", to be used in "NonLinearConjugateGradientOptimizer" (in place of the implementation Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression.java?rev=1591624&r1=1591623&r2=1591624&view=diff ============================================================================== --- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression.java (original) +++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegression.java Thu May 1 11:54:06 2014 @@ -57,6 +57,27 @@ public class OLSMultipleLinearRegression /** Cached QR decomposition of X matrix */ private QRDecomposition qr = null; + /** Singularity threshold for QR decomposition */ + private final double threshold; + + /** + * Create an empty OLSMultipleLinearRegression instance. + */ + public OLSMultipleLinearRegression() { + this(0d); + } + + /** + * Create an empty OLSMultipleLinearRegression instance, using the given + * singularity threshold for the QR decomposition. + * + * @param threshold the singularity threshold + * @since 3.3 + */ + public OLSMultipleLinearRegression(final double threshold) { + this.threshold = threshold; + } + /** * Loads model x and y sample data, overriding any previous sample. * @@ -79,7 +100,7 @@ public class OLSMultipleLinearRegression @Override public void newSampleData(double[] data, int nobs, int nvars) { super.newSampleData(data, nobs, nvars); - qr = new QRDecomposition(getX()); + qr = new QRDecomposition(getX(), threshold); } /** Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegressionTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegressionTest.java?rev=1591624&r1=1591623&r2=1591624&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegressionTest.java (original) +++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegressionTest.java Thu May 1 11:54:06 2014 @@ -18,10 +18,10 @@ package org.apache.commons.math3.stat.re import org.apache.commons.math3.TestUtils; +import org.apache.commons.math3.linear.Array2DRowRealMatrix; import org.apache.commons.math3.linear.DefaultRealMatrixChangingVisitor; import org.apache.commons.math3.linear.MatrixUtils; import org.apache.commons.math3.linear.RealMatrix; -import org.apache.commons.math3.linear.Array2DRowRealMatrix; import org.apache.commons.math3.linear.RealVector; import org.apache.commons.math3.stat.StatUtils; import org.junit.Assert;