@Test(expectedExceptions = IllegalArgumentException.class) public void testInputs() { new LeastSquaresRegressionResult(null); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullNames() { new NamedVariableLeastSquaresRegressionResult(null, new LeastSquaresRegressionResult(null, null, 0, null, 0, 0, null, null, false)); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNonMatchingInputs() { final List<String> names = Arrays.asList("A", "B"); final double[] array = new double[] {1. }; final LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(array, array, 0., array, 0., 0., array, array, false); new NamedVariableLeastSquaresRegressionResult(names, result); }
pValues[i] = 1 - studentT.cumulativeProbability(Math.abs(tStats[i])); return new LeastSquaresRegressionResult( betas, residuals, meanSquareError, stdErrorBetas, rSquared, adjustedRSquared, tStats, pValues, useIntercept);
/** * This regression method is private and called in other regression methods * @param xDataMatrix _nData x (_degree + 1) matrix whose low vector is (xData[i]^0, xData[i]^1, ..., xData[i]^{_degree}) * @param yDataVector the y-values * @param nData Number of data points * @param degree the degree */ private LeastSquaresRegressionResult regress( DoubleMatrix xDataMatrix, DoubleArray yDataVector, int nData, int degree) { Decomposition<QRDecompositionResult> qrComm = new QRDecompositionCommons(); DecompositionResult decompResult = qrComm.apply(xDataMatrix); _qrResult = (QRDecompositionResult) decompResult; DoubleMatrix qMatrix = _qrResult.getQ(); DoubleMatrix rMatrix = _qrResult.getR(); double[] betas = backSubstitution(qMatrix, rMatrix, yDataVector, degree); double[] residuals = residualsSolver(xDataMatrix, betas, yDataVector); for (int i = 0; i < degree + 1; ++i) { ArgChecker.isFalse(Double.isNaN(betas[i]), "Input is too large or small"); } for (int i = 0; i < nData; ++i) { ArgChecker.isFalse(Double.isNaN(residuals[i]), "Input is too large or small"); } return new LeastSquaresRegressionResult(betas, residuals, 0.0, null, 0.0, 0.0, null, null, true); }
final double[] pValues = new double[] {1.4, 2.4, 3.4 }; final boolean hasIntercept = false; final LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept); LeastSquaresRegressionResult other = new LeastSquaresRegressionResult(result); assertEquals(result, other); assertEquals(result.hashCode(), other.hashCode()); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept); assertEquals(result, other); assertEquals(result.hashCode(), other.hashCode()); final double[] x = new double[] {1.5, 2.5, 3.5 }; other = new LeastSquaresRegressionResult(x, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, x, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError + 1, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, x, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared + 1, rSquaredAdjusted, tStats, pValues, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted + 1, tStats, pValues, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, x, pValues, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, x, hasIntercept); assertFalse(result.equals(other)); other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, !hasIntercept); assertFalse(result.equals(other));
@Test public void testGetters() { final double[] residuals = new double[] {1, 2, 3 }; final double[] betas = new double[] {1.1, 2.1, 3.1 }; final double meanSquareError = 0.78; final double[] standardErrorOfBeta = new double[] {1.2, 2.2, 3.2 }; final double rSquared = 0.98; final double rSquaredAdjusted = 0.96; final double[] tStats = new double[] {1.3, 2.3, 3.3 }; final double[] pValues = new double[] {1.4, 2.4, 3.4 }; final boolean hasIntercept = false; final LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept); assertEquals(result.getAdjustedRSquared(), rSquaredAdjusted, 0); assertArrayEquals(result.getBetas(), betas, 0); assertEquals(result.getMeanSquareError(), meanSquareError, 0); assertArrayEquals(result.getPValues(), pValues, 0); assertArrayEquals(result.getResiduals(), residuals, 0); assertEquals(result.getRSquared(), rSquared, 0); assertArrayEquals(result.getStandardErrorOfBetas(), standardErrorOfBeta, 0); assertArrayEquals(result.getTStatistics(), tStats, 0); } }