Example usage for org.apache.commons.math3.stat.regression OLSMultipleLinearRegression estimateRegressandVariance

List of usage examples for org.apache.commons.math3.stat.regression OLSMultipleLinearRegression estimateRegressandVariance

Introduction

In this page you can find the example usage for org.apache.commons.math3.stat.regression OLSMultipleLinearRegression estimateRegressandVariance.

Prototype

public double estimateRegressandVariance() 

Source Link

Usage

From source file:com.mebigfatguy.damus.main.DamusCalculator.java

private boolean calcLinearRegression() {
    try {//from   w w  w .  j a va 2 s.  c o  m
        Context context = Context.instance();
        PredictionModel model = context.getPredictionModel();
        TrainingData data = context.getTrainingData();

        int numMetrics = model.getNumMetrics();
        int numResults = model.getNumResults();
        int numItems = data.getNumItems();

        OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();

        double[][] xx = new double[numItems][];
        for (int i = 0; i < numItems; i++) {
            double[] x = new double[numMetrics];
            for (int m = 0; m < numMetrics; m++) {
                Metric metric = model.getMetric(m);
                double value;
                switch (metric.getType()) {
                case Percent:
                    value = ((Number) data.getItem(i).getValue(metric)).doubleValue();
                    break;

                case Real:
                    value = ((BigDecimal) data.getItem(i).getValue(metric)).doubleValue();
                    break;

                case YesNo:
                    value = ((Boolean) data.getItem(i).getValue(metric)).booleanValue() ? 1.0 : 0.0;
                    break;

                default:
                    value = 0.0;
                    break;
                }
                x[m] = value;
            }
            xx[i] = x;
        }

        for (int r = 0; r < numResults; r++) {
            Metric metric = model.getResult(r);
            double[] y = new double[numItems];
            for (int i = 0; i < numItems; i++) {
                double value;
                switch (metric.getType()) {
                case Percent:
                    value = ((Number) data.getItem(i).getValue(metric)).doubleValue();
                    break;

                case Real:
                    value = ((BigDecimal) data.getItem(i).getValue(metric)).doubleValue();
                    break;

                case YesNo:
                    value = ((Boolean) data.getItem(i).getValue(metric)).booleanValue() ? 1.0 : 0.0;
                    break;

                default:
                    value = 0.0;
                    break;
                }
                y[i] = value;
            }

            regression.newSampleData(y, xx);
            double result = regression.estimateRegressandVariance();
            trainingItem.setValue(metric, new BigDecimal(result));
        }
        return true;
    } catch (Exception e) {
        return false;
    }
}

From source file:org.apache.solr.client.solrj.io.eval.OLSRegressionEvaluator.java

@Override
public Object doWork(Object... values) throws IOException {

    Matrix observations = null;//  ww  w.j av a  2  s . com
    List<Number> outcomes = null;

    if (values[0] instanceof Matrix) {
        observations = (Matrix) values[0];
    } else {
        throw new IOException("The first parameter for olsRegress should be the observation matrix.");
    }

    if (values[1] instanceof List) {
        outcomes = (List) values[1];
    } else {
        throw new IOException("The second parameter for olsRegress should be outcome array. ");
    }

    double[][] observationData = observations.getData();
    double[] outcomeData = new double[outcomes.size()];
    for (int i = 0; i < outcomeData.length; i++) {
        outcomeData[i] = outcomes.get(i).doubleValue();
    }

    OLSMultipleLinearRegression multipleLinearRegression = (OLSMultipleLinearRegression) regress(
            observationData, outcomeData);

    Map map = new HashMap();

    map.put("regressandVariance", multipleLinearRegression.estimateRegressandVariance());
    map.put("regressionParameters", list(multipleLinearRegression.estimateRegressionParameters()));
    map.put("RSquared", multipleLinearRegression.calculateRSquared());
    map.put("adjustedRSquared", multipleLinearRegression.calculateAdjustedRSquared());
    map.put("residualSumSquares", multipleLinearRegression.calculateResidualSumOfSquares());

    try {
        map.put("regressionParametersStandardErrors",
                list(multipleLinearRegression.estimateRegressionParametersStandardErrors()));
        map.put("regressionParametersVariance",
                new Matrix(multipleLinearRegression.estimateRegressionParametersVariance()));
    } catch (Exception e) {
        //Exception is thrown if the matrix is singular
    }

    return new MultipleRegressionTuple(multipleLinearRegression, map);
}

From source file:org.opentestsystem.airose.regression.ols.OLSRegressionModeller.java

protected AbstractModel customProcessData(double[] y, double[][] x) {
    OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
    regression.newSampleData(y, x);/*  w w  w. java  2s . c o m*/

    double[] beta = regression.estimateRegressionParameters();
    double[] residuals = regression.estimateResiduals();
    double[][] parametersVariance = regression.estimateRegressionParametersVariance();
    double regressandVariance = regression.estimateRegressandVariance();
    double rSquared = regression.calculateRSquared();
    double sigma = regression.estimateRegressionStandardError();

    OLSModel olsModel = new OLSModel(beta, residuals, parametersVariance, regressandVariance, rSquared, sigma,
            y, x);
    return olsModel;
}