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 2012/03/03 04:35:21 UTC

svn commit: r1296570 - in /commons/proper/math/trunk/src: main/java/org/apache/commons/math3/stat/regression/ test/java/org/apache/commons/math3/stat/regression/

Author: erans
Date: Sat Mar  3 03:35:20 2012
New Revision: 1296570

URL: http://svn.apache.org/viewvc?rev=1296570&view=rev
Log:
Variable visibility: "protected" -> "private". Added "protected"
getter methods.

Modified:
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/AbstractMultipleLinearRegression.java
    commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegression.java
    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/GLSMultipleLinearRegressionTest.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/MultipleLinearRegressionAbstractTest.java
    commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/OLSMultipleLinearRegressionTest.java

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/AbstractMultipleLinearRegression.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/AbstractMultipleLinearRegression.java?rev=1296570&r1=1296569&r2=1296570&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/AbstractMultipleLinearRegression.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/AbstractMultipleLinearRegression.java Sat Mar  3 03:35:20 2012
@@ -39,15 +39,29 @@ public abstract class AbstractMultipleLi
         MultipleLinearRegression {
 
     /** X sample data. */
-    protected RealMatrix X;
+    private RealMatrix xMatrix;
 
     /** Y sample data. */
-    protected RealVector Y;
+    private RealVector yVector;
 
     /** Whether or not the regression model includes an intercept.  True means no intercept. */
     private boolean noIntercept = false;
 
     /**
+     * @return the X sample data.
+     */
+    protected RealMatrix getX() {
+        return xMatrix;
+    }
+
+    /**
+     * @return the Y sample data.
+     */
+    protected RealVector getY() {
+        return yVector;
+    }
+
+    /**
      * @return true if the model has no intercept term; false otherwise
      * @since 2.2
      */
@@ -121,8 +135,8 @@ public abstract class AbstractMultipleLi
                 x[i][j] = data[pointer++];
             }
         }
-        this.X = new Array2DRowRealMatrix(x);
-        this.Y = new ArrayRealVector(y);
+        this.xMatrix = new Array2DRowRealMatrix(x);
+        this.yVector = new ArrayRealVector(y);
     }
 
     /**
@@ -139,7 +153,7 @@ public abstract class AbstractMultipleLi
         if (y.length == 0) {
             throw new NoDataException();
         }
-        this.Y = new ArrayRealVector(y);
+        this.yVector = new ArrayRealVector(y);
     }
 
     /**
@@ -175,7 +189,7 @@ public abstract class AbstractMultipleLi
             throw new NoDataException();
         }
         if (noIntercept) {
-            this.X = new Array2DRowRealMatrix(x, true);
+            this.xMatrix = new Array2DRowRealMatrix(x, true);
         } else { // Augment design matrix with initial unitary column
             final int nVars = x[0].length;
             final double[][] xAug = new double[x.length][nVars + 1];
@@ -186,7 +200,7 @@ public abstract class AbstractMultipleLi
                 xAug[i][0] = 1.0d;
                 System.arraycopy(x[i], 0, xAug[i], 1, nVars);
             }
-            this.X = new Array2DRowRealMatrix(xAug, false);
+            this.xMatrix = new Array2DRowRealMatrix(xAug, false);
         }
     }
 
@@ -257,7 +271,7 @@ public abstract class AbstractMultipleLi
      */
     public double[] estimateResiduals() {
         RealVector b = calculateBeta();
-        RealVector e = Y.subtract(X.operate(b));
+        RealVector e = yVector.subtract(xMatrix.operate(b));
         return e.toArray();
     }
 
@@ -332,7 +346,7 @@ public abstract class AbstractMultipleLi
      * @return Y variance
      */
     protected double calculateYVariance() {
-        return new Variance().evaluate(Y.toArray());
+        return new Variance().evaluate(yVector.toArray());
     }
 
     /**
@@ -349,7 +363,7 @@ public abstract class AbstractMultipleLi
     protected double calculateErrorVariance() {
         RealVector residuals = calculateResiduals();
         return residuals.dotProduct(residuals) /
-               (X.getRowDimension() - X.getColumnDimension());
+               (xMatrix.getRowDimension() - xMatrix.getColumnDimension());
     }
 
     /**
@@ -364,7 +378,7 @@ public abstract class AbstractMultipleLi
      */
     protected RealVector calculateResiduals() {
         RealVector b = calculateBeta();
-        return Y.subtract(X.operate(b));
+        return yVector.subtract(xMatrix.operate(b));
     }
 
 }

Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegression.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegression.java?rev=1296570&r1=1296569&r2=1296570&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegression.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegression.java Sat Mar  3 03:35:20 2012
@@ -93,10 +93,10 @@ public class GLSMultipleLinearRegression
     @Override
     protected RealVector calculateBeta() {
         RealMatrix OI = getOmegaInverse();
-        RealMatrix XT = X.transpose();
-        RealMatrix XTOIX = XT.multiply(OI).multiply(X);
+        RealMatrix XT = getX().transpose();
+        RealMatrix XTOIX = XT.multiply(OI).multiply(getX());
         RealMatrix inverse = new LUDecomposition(XTOIX).getSolver().getInverse();
-        return inverse.multiply(XT).multiply(OI).operate(Y);
+        return inverse.multiply(XT).multiply(OI).operate(getY());
     }
 
     /**
@@ -109,7 +109,7 @@ public class GLSMultipleLinearRegression
     @Override
     protected RealMatrix calculateBetaVariance() {
         RealMatrix OI = getOmegaInverse();
-        RealMatrix XTOIX = X.transpose().multiply(OI).multiply(X);
+        RealMatrix XTOIX = getX().transpose().multiply(OI).multiply(getX());
         return new LUDecomposition(XTOIX).getSolver().getInverse();
     }
 
@@ -129,7 +129,7 @@ public class GLSMultipleLinearRegression
     protected double calculateErrorVariance() {
         RealVector residuals = calculateResiduals();
         double t = residuals.dotProduct(getOmegaInverse().operate(residuals));
-        return t / (X.getRowDimension() - X.getColumnDimension());
+        return t / (getX().getRowDimension() - getX().getColumnDimension());
 
     }
 

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=1296570&r1=1296569&r2=1296570&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 Sat Mar  3 03:35:20 2012
@@ -78,7 +78,7 @@ public class OLSMultipleLinearRegression
     @Override
     public void newSampleData(double[] data, int nobs, int nvars) {
         super.newSampleData(data, nobs, nvars);
-        qr = new QRDecomposition(X);
+        qr = new QRDecomposition(getX());
     }
 
     /**
@@ -132,9 +132,9 @@ public class OLSMultipleLinearRegression
      */
     public double calculateTotalSumOfSquares() {
         if (isNoIntercept()) {
-            return StatUtils.sumSq(Y.toArray());
+            return StatUtils.sumSq(getY().toArray());
         } else {
-            return new SecondMoment().evaluate(Y.toArray());
+            return new SecondMoment().evaluate(getY().toArray());
         }
     }
 
@@ -180,12 +180,12 @@ public class OLSMultipleLinearRegression
      * @since 2.2
      */
     public double calculateAdjustedRSquared() {
-        final double n = X.getRowDimension();
+        final double n = getX().getRowDimension();
         if (isNoIntercept()) {
-            return 1 - (1 - calculateRSquared()) * (n / (n - X.getColumnDimension()));
+            return 1 - (1 - calculateRSquared()) * (n / (n - getX().getColumnDimension()));
         } else {
             return 1 - (calculateResidualSumOfSquares() * (n - 1)) /
-                (calculateTotalSumOfSquares() * (n - X.getColumnDimension()));
+                (calculateTotalSumOfSquares() * (n - getX().getColumnDimension()));
         }
     }
 
@@ -197,7 +197,7 @@ public class OLSMultipleLinearRegression
     @Override
     protected void newXSampleData(double[][] x) {
         super.newXSampleData(x);
-        qr = new QRDecomposition(X);
+        qr = new QRDecomposition(getX());
     }
 
     /**
@@ -207,7 +207,7 @@ public class OLSMultipleLinearRegression
      */
     @Override
     protected RealVector calculateBeta() {
-        return qr.getSolver().solve(Y);
+        return qr.getSolver().solve(getY());
     }
 
     /**
@@ -223,7 +223,7 @@ public class OLSMultipleLinearRegression
      */
     @Override
     protected RealMatrix calculateBetaVariance() {
-        int p = X.getColumnDimension();
+        int p = getX().getColumnDimension();
         RealMatrix Raug = qr.getR().getSubMatrix(0, p - 1 , 0, p - 1);
         RealMatrix Rinv = new LUDecomposition(Raug).getSolver().getInverse();
         return Rinv.multiply(Rinv.transpose());

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegressionTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegressionTest.java?rev=1296570&r1=1296569&r2=1296570&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegressionTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/GLSMultipleLinearRegressionTest.java Sat Mar  3 03:35:20 2012
@@ -178,13 +178,13 @@ public class GLSMultipleLinearRegression
         double[][] covariance = MatrixUtils.createRealIdentityMatrix(4).scalarMultiply(2).getData();
         GLSMultipleLinearRegression regression = new GLSMultipleLinearRegression();
         regression.newSampleData(y, x, covariance);
-        RealMatrix combinedX = regression.X.copy();
-        RealVector combinedY = regression.Y.copy();
+        RealMatrix combinedX = regression.getX().copy();
+        RealVector combinedY = regression.getY().copy();
         RealMatrix combinedCovInv = regression.getOmegaInverse();
         regression.newXSampleData(x);
         regression.newYSampleData(y);
-        Assert.assertEquals(combinedX, regression.X);
-        Assert.assertEquals(combinedY, regression.Y);
+        Assert.assertEquals(combinedX, regression.getX());
+        Assert.assertEquals(combinedY, regression.getY());
         Assert.assertEquals(combinedCovInv, regression.getOmegaInverse());
     }
     
@@ -253,7 +253,7 @@ public class GLSMultipleLinearRegression
         OLSMultipleLinearRegression ols = new OLSMultipleLinearRegression();
         ols.newSampleData(longley, nObs, 6);
         final RealVector b = ols.calculateBeta().copy();
-        final RealMatrix x = ols.X.copy();
+        final RealMatrix x = ols.getX().copy();
         
         // Create a GLS model to reuse
         GLSMultipleLinearRegression gls = new GLSMultipleLinearRegression();

Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/MultipleLinearRegressionAbstractTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/MultipleLinearRegressionAbstractTest.java?rev=1296570&r1=1296569&r2=1296570&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/MultipleLinearRegressionAbstractTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math3/stat/regression/MultipleLinearRegressionAbstractTest.java Sat Mar  3 03:35:20 2012
@@ -86,22 +86,22 @@ public abstract class MultipleLinearRegr
         };
         AbstractMultipleLinearRegression regression = createRegression();
         regression.newSampleData(design, 4, 3);
-        RealMatrix flatX = regression.X.copy();
-        RealVector flatY = regression.Y.copy();
+        RealMatrix flatX = regression.getX().copy();
+        RealVector flatY = regression.getY().copy();
         regression.newXSampleData(x);
         regression.newYSampleData(y);
-        Assert.assertEquals(flatX, regression.X);
-        Assert.assertEquals(flatY, regression.Y);
+        Assert.assertEquals(flatX, regression.getX());
+        Assert.assertEquals(flatY, regression.getY());
         
         // No intercept
         regression.setNoIntercept(true);
         regression.newSampleData(design, 4, 3);
-        flatX = regression.X.copy();
-        flatY = regression.Y.copy();
+        flatX = regression.getX().copy();
+        flatY = regression.getY().copy();
         regression.newXSampleData(x);
         regression.newYSampleData(y);
-        Assert.assertEquals(flatX, regression.X);
-        Assert.assertEquals(flatY, regression.Y);
+        Assert.assertEquals(flatX, regression.getX());
+        Assert.assertEquals(flatY, regression.getY());
     }
     
     @Test(expected=IllegalArgumentException.class)

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=1296570&r1=1296569&r2=1296570&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 Sat Mar  3 03:35:20 2012
@@ -434,7 +434,7 @@ public class OLSMultipleLinearRegression
          */
         double[] residuals = model.estimateResiduals();
         RealMatrix I = MatrixUtils.createRealIdentityMatrix(10);
-        double[] hatResiduals = I.subtract(hat).operate(model.Y).toArray();
+        double[] hatResiduals = I.subtract(hat).operate(model.getY()).toArray();
         TestUtils.assertEquals(residuals, hatResiduals, 10e-12);
     }
 
@@ -457,11 +457,11 @@ public class OLSMultipleLinearRegression
      */
     protected void checkVarianceConsistency(OLSMultipleLinearRegression model) throws Exception {
         // Check Y variance consistency
-        TestUtils.assertEquals(StatUtils.variance(model.Y.toArray()), model.calculateYVariance(), 0);
+        TestUtils.assertEquals(StatUtils.variance(model.getY().toArray()), model.calculateYVariance(), 0);
         
         // Check residual variance consistency
         double[] residuals = model.calculateResiduals().toArray();
-        RealMatrix X = model.X;
+        RealMatrix X = model.getX();
         TestUtils.assertEquals(
                 StatUtils.variance(model.calculateResiduals().toArray()) * (residuals.length - 1),
                 model.calculateErrorVariance() * (X.getRowDimension() - X.getColumnDimension()), 1E-20);
@@ -482,22 +482,22 @@ public class OLSMultipleLinearRegression
         };
         OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
         regression.newSampleData(y, x);
-        RealMatrix combinedX = regression.X.copy();
-        RealVector combinedY = regression.Y.copy();
+        RealMatrix combinedX = regression.getX().copy();
+        RealVector combinedY = regression.getY().copy();
         regression.newXSampleData(x);
         regression.newYSampleData(y);
-        Assert.assertEquals(combinedX, regression.X);
-        Assert.assertEquals(combinedY, regression.Y);
+        Assert.assertEquals(combinedX, regression.getX());
+        Assert.assertEquals(combinedY, regression.getY());
         
         // No intercept
         regression.setNoIntercept(true);
         regression.newSampleData(y, x);
-        combinedX = regression.X.copy();
-        combinedY = regression.Y.copy();
+        combinedX = regression.getX().copy();
+        combinedY = regression.getY().copy();
         regression.newXSampleData(x);
         regression.newYSampleData(y);
-        Assert.assertEquals(combinedX, regression.X);
-        Assert.assertEquals(combinedY, regression.Y);
+        Assert.assertEquals(combinedX, regression.getX());
+        Assert.assertEquals(combinedY, regression.getY());
     }
     
     @Test(expected=IllegalArgumentException.class)