@Override public LeastSquaresRegressionResult regress(double[][] x, double[][] weights, double[] y, boolean useIntercept) { if (weights != null) { log.info("Weights were provided for OLS regression: they will be ignored"); } return regress(x, y, useIntercept); }
final 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);
public LeastSquaresRegressionResult regress(double[][] x, double[] y, boolean useIntercept) { checkData(x, y); double[][] indep = addInterceptVariable(x, useIntercept); double[] dep = new double[y.length]; for (int i = 0; i < y.length; i++) { dep[i] = y[i]; } DoubleMatrix matrix = DoubleMatrix.copyOf(indep); DoubleArray vector = DoubleArray.copyOf(dep); DoubleMatrix transpose = _algebra.getTranspose(matrix); DoubleMatrix betasVector = (DoubleMatrix) _algebra.multiply( _algebra.multiply(_algebra.getInverse(_algebra.multiply(transpose, matrix)), transpose), vector); double[] yModel = super.writeArrayAsVector(((DoubleMatrix) _algebra.multiply(matrix, betasVector)).toArray()); double[] betas = super.writeArrayAsVector(betasVector.toArray()); return getResultWithStatistics(x, y, betas, yModel, transpose, matrix, useIntercept); }
@Test public void test() { final LeastSquaresRegression regression = new OrdinaryLeastSquaresRegression(); try { regression.checkData(null, null);
double[][] covarianceBetas = convertArray(_algebra.getInverse(_algebra.multiply(transpose, matrix)).toArray()); double rSquared = regressionSumOfSquares / totalSumOfSquares; double adjustedRSquared = 1. - (1 - rSquared) * (n - 1.) / (n - k);
final OrdinaryLeastSquaresRegression olsRegression = new OrdinaryLeastSquaresRegression(); try { wlsRegression.regress(x, (double[]) null, yNoIntercept, false); 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);
y2[i] = f2.applyAsDouble(x[i][0], x[i][1]); final LeastSquaresRegression ols = new OrdinaryLeastSquaresRegression(); final List<String> names = Arrays.asList("1", "2"); final NamedVariableLeastSquaresRegressionResult result1 = new NamedVariableLeastSquaresRegressionResult(names, ols