static LeastSquaresRegressionResultTest()
        {
            const int n = 100;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] x = new double[n][2];
//JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java:
//ORIGINAL LINE: double[][] x = new double[n][2];
            double[][] x = RectangularArrays.ReturnRectangularDoubleArray(n, 2);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] y1 = new double[n];
            double[] y1 = new double[n];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] y2 = new double[n];
            double[] y2 = new double[n];
            for (int i = 0; i < n; i++)
            {
                x[i][0] = RANDOM.NextDouble();
                x[i][1] = RANDOM.NextDouble();
                y1[i]   = F1.applyAsDouble(x[i][0], x[i][1]);
                y2[i]   = F2.applyAsDouble(x[i][0], x[i][1]);
            }
            NO_INTERCEPT = REGRESSION.regress(x, null, y1, false);
            INTERCEPT    = REGRESSION.regress(x, null, y2, true);
        }
 public NamedVariableLeastSquaresRegressionResult(IList <string> independentVariableNames, LeastSquaresRegressionResult result) : base(result)
 {
     if (independentVariableNames == null)
     {
         throw new System.ArgumentException("List of independent variable names was null");
     }
     _independentVariableNames = new List <>();
     if (result.hasIntercept())
     {
         if (independentVariableNames.Count != result.Betas.Length - 1)
         {
             throw new System.ArgumentException("Length of variable name array did not match number of results in the regression");
         }
         _independentVariableNames.Add(INTERCEPT_STRING);
     }
     else
     {
         if (independentVariableNames.Count != result.Betas.Length)
         {
             throw new System.ArgumentException("Length of variable name array did not match number of results in the regression");
         }
     }
     ((IList <string>)_independentVariableNames).AddRange(independentVariableNames);
     _result = result;
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testEqualsAndHashCode()
        public virtual void testEqualsAndHashCode()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] residuals = new double[] {1, 2, 3 };
            double[] residuals = new double[] { 1, 2, 3 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] betas = new double[] {1.1, 2.1, 3.1 };
            double[]     betas           = new double[] { 1.1, 2.1, 3.1 };
            const double meanSquareError = 0.78;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] standardErrorOfBeta = new double[] {1.2, 2.2, 3.2 };
            double[]     standardErrorOfBeta = new double[] { 1.2, 2.2, 3.2 };
            const double rSquared            = 0.98;
            const double rSquaredAdjusted    = 0.96;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] tStats = new double[] {1.3, 2.3, 3.3 };
            double[] tStats = new double[] { 1.3, 2.3, 3.3 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] pValues = new double[] {1.4, 2.4, 3.4 };
            double[]   pValues      = new double[] { 1.4, 2.4, 3.4 };
            const bool hasIntercept = false;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept);
            LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept);
            LeastSquaresRegressionResult other  = new LeastSquaresRegressionResult(result);

            assertEquals(result, other);
            assertEquals(result.GetHashCode(), other.GetHashCode());
            other = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept);
            assertEquals(result, other);
            assertEquals(result.GetHashCode(), other.GetHashCode());
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] x = new double[] {1.5, 2.5, 3.5 };
            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));
        }
Esempio n. 4
0
        public override bool Equals(object obj)
        {
            if (this == obj)
            {
                return(true);
            }
            if (obj == null)
            {
                return(false);
            }
            if (this.GetType() != obj.GetType())
            {
                return(false);
            }
            LeastSquaresRegressionResult other = (LeastSquaresRegressionResult)obj;

            if (!Arrays.Equals(_betas, other._betas))
            {
                return(false);
            }
            if (_hasIntercept != other._hasIntercept)
            {
                return(false);
            }
            if (System.BitConverter.DoubleToInt64Bits(_meanSquareError) != Double.doubleToLongBits(other._meanSquareError))
            {
                return(false);
            }
            if (!Arrays.Equals(_pValues, other._pValues))
            {
                return(false);
            }
            if (System.BitConverter.DoubleToInt64Bits(_rSquared) != Double.doubleToLongBits(other._rSquared))
            {
                return(false);
            }
            if (System.BitConverter.DoubleToInt64Bits(_rSquaredAdjusted) != Double.doubleToLongBits(other._rSquaredAdjusted))
            {
                return(false);
            }
            if (!Arrays.Equals(_residuals, other._residuals))
            {
                return(false);
            }
            if (!Arrays.Equals(_standardErrorOfBeta, other._standardErrorOfBeta))
            {
                return(false);
            }
            if (!Arrays.Equals(_tStats, other._tStats))
            {
                return(false);
            }
            return(true);
        }
Esempio n. 5
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void test()
        public virtual void test()
        {
            const int n = 20;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] x = new double[n][5];
//JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java:
//ORIGINAL LINE: double[][] x = new double[n][5];
            double[][] x = RectangularArrays.ReturnRectangularDoubleArray(n, 5);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] y1 = new double[n];
            double[] y1 = new double[n];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] y2 = new double[n];
            double[] y2 = new double[n];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] a1 = new double[] {3.4, 1.2, -0.62, -0.44, 0.65 };
            double[] a1 = new double[] { 3.4, 1.2, -0.62, -0.44, 0.65 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] a2 = new double[] {0.98, 3.4, 1.2, -0.62, -0.44, 0.65 };
            double[] a2 = new double[] { 0.98, 3.4, 1.2, -0.62, -0.44, 0.65 };
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    x[i][j] = RANDOM.NextDouble() + (RANDOM.NextDouble() - 0.5) / FACTOR;
                }
                y1[i] = a1[0] * x[i][0] + a1[1] * x[i][1] + a1[2] * x[i][2] + a1[3] * x[i][3] + a1[4] * x[i][4] + RANDOM.NextDouble() / FACTOR;
                y2[i] = a2[0] + a2[1] * x[i][0] + a2[2] * x[i][1] + a2[3] * x[i][2] + a2[4] * x[i][3] + a2[5] * x[i][4] + RANDOM.NextDouble() / FACTOR;
            }
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final LeastSquaresRegressionResult result1 = REGRESSION.regress(x, null, y1, false);
            LeastSquaresRegressionResult result1 = REGRESSION.regress(x, null, y1, false);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final LeastSquaresRegressionResult result2 = REGRESSION.regress(x, null, y2, true);
            LeastSquaresRegressionResult result2 = REGRESSION.regress(x, null, y2, true);

            assertRegression(result1, a1);
            assertRegression(result2, a2);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] residuals1 = result1.getResiduals();
            double[] residuals1 = result1.Residuals;
            for (int i = 0; i < n; i++)
            {
                assertEquals(y1[i], a1[0] * x[i][0] + a1[1] * x[i][1] + a1[2] * x[i][2] + a1[3] * x[i][3] + a1[4] * x[i][4] + residuals1[i], 10 * EPS);
            }
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] residuals2 = result2.getResiduals();
            double[] residuals2 = result2.Residuals;
            for (int i = 0; i < n; i++)
            {
                assertEquals(y2[i], a2[0] + a2[1] * x[i][0] + a2[2] * x[i][1] + a2[3] * x[i][2] + a2[4] * x[i][3] + a2[5] * x[i][4] + residuals2[i], 10 * EPS);
            }
        }
Esempio n. 6
0
 public LeastSquaresRegressionResult(LeastSquaresRegressionResult result)
 {
     ArgChecker.notNull(result, "regression result");
     _betas               = result.Betas;
     _residuals           = result.Residuals;
     _meanSquareError     = result.MeanSquareError;
     _standardErrorOfBeta = result.StandardErrorOfBetas;
     _rSquared            = result.RSquared;
     _rSquaredAdjusted    = result.AdjustedRSquared;
     _tStats              = result.TStatistics;
     _pValues             = result.PValues;
     _hasIntercept        = result.hasIntercept();
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(expectedExceptions = IllegalArgumentException.class) public void testNonMatchingInputs()
        public virtual void testNonMatchingInputs()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.util.List<String> names = java.util.Arrays.asList("A", "B");
            IList <string> names = Arrays.asList("A", "B");

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] array = new double[] {1.0 };
            double[] array = new double[] { 1.0 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(array, array, 0.0, array, 0.0, 0.0, array, array, false);
            LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(array, array, 0.0, array, 0.0, 0.0, array, array, false);

            new NamedVariableLeastSquaresRegressionResult(names, result);
        }
Esempio n. 8
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: private void assertRegressions(final int n, final int k, final LeastSquaresRegressionResult regression1, final LeastSquaresRegressionResult regression2)
        private void assertRegressions(int n, int k, LeastSquaresRegressionResult regression1, LeastSquaresRegressionResult regression2)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] r1 = regression1.getResiduals();
            double[] r1 = regression1.Residuals;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] r2 = regression2.getResiduals();
            double[] r2 = regression2.Residuals;
            for (int i = 0; i < n; i++)
            {
                assertEquals(r1[i], r2[i], EPS);
            }
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] b1 = regression1.getBetas();
            double[] b1 = regression1.Betas;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] t1 = regression1.getTStatistics();
            double[] t1 = regression1.TStatistics;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] p1 = regression1.getPValues();
            double[] p1 = regression1.PValues;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] s1 = regression1.getStandardErrorOfBetas();
            double[] s1 = regression1.StandardErrorOfBetas;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] b2 = regression2.getBetas();
            double[] b2 = regression2.Betas;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] t2 = regression2.getTStatistics();
            double[] t2 = regression2.TStatistics;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] p2 = regression2.getPValues();
            double[] p2 = regression2.PValues;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] s2 = regression2.getStandardErrorOfBetas();
            double[] s2 = regression2.StandardErrorOfBetas;
            for (int i = 0; i < k; i++)
            {
                assertEquals(b1[i], b2[i], EPS);
                assertEquals(t1[i], t2[i], EPS);
                assertEquals(p1[i], p2[i], EPS);
                assertEquals(s1[i], s2[i], EPS);
            }
            assertEquals(regression1.RSquared, regression2.RSquared, EPS);
            assertEquals(regression1.AdjustedRSquared, regression2.AdjustedRSquared, EPS);
            assertEquals(regression1.MeanSquareError, regression2.MeanSquareError, EPS);
        }
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: private void assertRegressions(final int n, final int k, final LeastSquaresRegressionResult regression1, final LeastSquaresRegressionResult regression2)
        private void assertRegressions(int n, int k, LeastSquaresRegressionResult regression1, LeastSquaresRegressionResult regression2)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] r1 = regression1.getResiduals();
            double[] r1 = regression1.Residuals;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] r2 = regression2.getResiduals();
            double[] r2 = regression2.Residuals;
            for (int i = 0; i < n; i++)
            {
                assertEquals(r1[i], r2[i], EPS);
            }
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] b1 = regression1.getBetas();
            double[] b1 = regression1.Betas;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] b2 = regression2.getBetas();
            double[] b2 = regression2.Betas;
            for (int i = 0; i < k; i++)
            {
                assertEquals(b1[i], b2[i], EPS);
            }
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testGetters()
        public virtual void testGetters()
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] residuals = new double[] {1, 2, 3 };
            double[] residuals = new double[] { 1, 2, 3 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] betas = new double[] {1.1, 2.1, 3.1 };
            double[]     betas           = new double[] { 1.1, 2.1, 3.1 };
            const double meanSquareError = 0.78;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] standardErrorOfBeta = new double[] {1.2, 2.2, 3.2 };
            double[]     standardErrorOfBeta = new double[] { 1.2, 2.2, 3.2 };
            const double rSquared            = 0.98;
            const double rSquaredAdjusted    = 0.96;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] tStats = new double[] {1.3, 2.3, 3.3 };
            double[] tStats = new double[] { 1.3, 2.3, 3.3 };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] pValues = new double[] {1.4, 2.4, 3.4 };
            double[]   pValues      = new double[] { 1.4, 2.4, 3.4 };
            const bool hasIntercept = false;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept);
            LeastSquaresRegressionResult result = new LeastSquaresRegressionResult(betas, residuals, meanSquareError, standardErrorOfBeta, rSquared, rSquaredAdjusted, tStats, pValues, hasIntercept);

            assertEquals(result.AdjustedRSquared, rSquaredAdjusted, 0);
            assertArrayEquals(result.Betas, betas, 0);
            assertEquals(result.MeanSquareError, meanSquareError, 0);
            assertArrayEquals(result.PValues, pValues, 0);
            assertArrayEquals(result.Residuals, residuals, 0);
            assertEquals(result.RSquared, rSquared, 0);
            assertArrayEquals(result.StandardErrorOfBetas, standardErrorOfBeta, 0);
            assertArrayEquals(result.TStatistics, tStats, 0);
        }
Esempio n. 11
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: private void assertRegression(final LeastSquaresRegressionResult result, final double[] a)
        private void assertRegression(LeastSquaresRegressionResult result, double[] a)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] beta = result.getBetas();
            double[] beta = result.Betas;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] tStat = result.getTStatistics();
            double[] tStat = result.TStatistics;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] pStat = result.getPValues();
            double[] pStat = result.PValues;
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] stdErr = result.getStandardErrorOfBetas();
            double[] stdErr = result.StandardErrorOfBetas;
            for (int i = 0; i < 5; i++)
            {
                assertEquals(beta[i], a[i], EPS);
                assertTrue(Math.Abs(tStat[i]) > FACTOR);
                assertTrue(pStat[i] < EPS);
                assertTrue(stdErr[i] < EPS);
            }
            assertEquals(result.RSquared, 1, EPS);
            assertEquals(result.AdjustedRSquared, 1, EPS);
        }
Esempio n. 12
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void test()
        public virtual void test()
        {
            const double a0 = 2.3;
            const double a1 = -4.5;
            const double a2 = 0.76;
            const double a3 = 3.4;
            const int    n  = 30;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] x = new double[n][3];
//JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java:
//ORIGINAL LINE: double[][] x = new double[n][3];
            double[][] x = RectangularArrays.ReturnRectangularDoubleArray(n, 3);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] yIntercept = new double[n];
            double[] yIntercept = new double[n];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] yNoIntercept = new double[n];
            double[] yNoIntercept = new double[n];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] w1 = new double[n][n];
//JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java:
//ORIGINAL LINE: double[][] w1 = new double[n][n];
            double[][] w1 = RectangularArrays.ReturnRectangularDoubleArray(n, n);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] w2 = new double[n];
            double[] w2 = new double[n];
            double   y, x1, x2, x3;

            for (int i = 0; i < n; i++)
            {
                x1              = i;
                x2              = x1 * x1;
                x3              = Math.Sqrt(x1);
                x[i]            = new double[] { x1, x2, x3 };
                y               = x1 * a1 + x2 * a2 + x3 * a3;
                yNoIntercept[i] = y;
                yIntercept[i]   = y + a0;
                for (int j = 0; j < n; j++)
                {
                    w1[i][j] = RANDOM.NextDouble();
                }
                w1[i][i] = 1.0;
                w2[i]    = 1.0;
            }
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final WeightedLeastSquaresRegression wlsRegression = new WeightedLeastSquaresRegression();
            WeightedLeastSquaresRegression wlsRegression = new WeightedLeastSquaresRegression();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final OrdinaryLeastSquaresRegression olsRegression = new OrdinaryLeastSquaresRegression();
            OrdinaryLeastSquaresRegression olsRegression = new OrdinaryLeastSquaresRegression();

            try
            {
                wlsRegression.regress(x, (double[])null, yNoIntercept, false);
                Assert.fail();
            }
//JAVA TO C# CONVERTER WARNING: 'final' catch parameters are not available in C#:
//ORIGINAL LINE: catch (final IllegalArgumentException e)
            catch (legalArgumentException)
            {
                // Expected
            }
            LeastSquaresRegressionResult wls = wlsRegression.regress(x, w1, yIntercept, true);
            LeastSquaresRegressionResult ols = olsRegression.regress(x, yIntercept, true);

            assertRegressions(n, 4, wls, ols);
            wls = wlsRegression.regress(x, w1, yNoIntercept, false);
            ols = olsRegression.regress(x, yNoIntercept, false);
            assertRegressions(n, 3, wls, ols);
            wls = wlsRegression.regress(x, w2, yIntercept, true);
            ols = olsRegression.regress(x, yIntercept, true);
            assertRegressions(n, 4, wls, ols);
            wls = wlsRegression.regress(x, w2, yNoIntercept, false);
            ols = olsRegression.regress(x, yNoIntercept, false);
            assertRegressions(n, 3, wls, ols);
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void test()
        public virtual void test()
        {
            const double a0 = 2.3;
            const double a1 = 4.7;
            const double a2 = -0.99;
            const double a3 = -5.1;
            const double a4 = 0.27;
            const int    n  = 30;

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] x = new double[n][4];
//JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java:
//ORIGINAL LINE: double[][] x = new double[n][4];
            double[][] x = RectangularArrays.ReturnRectangularDoubleArray(n, 4);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] yIntercept = new double[n];
            double[] yIntercept = new double[n];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[] yNoIntercept = new double[n];
            double[] yNoIntercept = new double[n];
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final double[][] w = new double[n][n];
//JAVA TO C# CONVERTER NOTE: The following call to the 'RectangularArrays' helper class reproduces the rectangular array initialization that is automatic in Java:
//ORIGINAL LINE: double[][] w = new double[n][n];
            double[][] w = RectangularArrays.ReturnRectangularDoubleArray(n, n);
            double     y, x1, x2, x3, x4;

            for (int i = 0; i < n; i++)
            {
                x1              = i;
                x2              = x1 * x1;
                x3              = Math.Sqrt(x1);
                x4              = x1 * x2;
                x[i]            = new double[] { x1, x2, x3, x4 };
                y               = x1 * a1 + x2 * a2 + x3 * a3 + x4 * a4;
                yNoIntercept[i] = y;
                yIntercept[i]   = y + a0;
                for (int j = 0; j < n; j++)
                {
                    w[i][j] = 0.0;
                }
                w[i][i] = 1.0;
            }
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final GeneralizedLeastSquaresRegression regression = new GeneralizedLeastSquaresRegression();
            GeneralizedLeastSquaresRegression regression = new GeneralizedLeastSquaresRegression();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final OrdinaryLeastSquaresRegression olsRegression = new OrdinaryLeastSquaresRegression();
            OrdinaryLeastSquaresRegression olsRegression = new OrdinaryLeastSquaresRegression();
            LeastSquaresRegressionResult   gls = regression.regress(x, w, yIntercept, true);
            LeastSquaresRegressionResult   ols = olsRegression.regress(x, yIntercept, true);

            assertRegressions(n, 5, gls, ols);
            gls = regression.regress(x, w, yNoIntercept, false);
            ols = olsRegression.regress(x, yNoIntercept, false);
            assertRegressions(n, 4, gls, ols);
            gls = regression.regress(x, w, yIntercept, true);
            ols = olsRegression.regress(x, yIntercept, true);
            assertRegressions(n, 5, gls, ols);
            gls = regression.regress(x, w, yNoIntercept, false);
            ols = olsRegression.regress(x, yNoIntercept, false);
            assertRegressions(n, 4, gls, ols);
        }