Example usage for org.apache.commons.math.stat.regression OLSMultipleLinearRegression newSampleData

List of usage examples for org.apache.commons.math.stat.regression OLSMultipleLinearRegression newSampleData

Introduction

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

Prototype

public void newSampleData(double[] y, double[][] x) 

Source Link

Document

Loads model x and y sample data, overriding any previous sample.

Usage

From source file:ca.uwaterloo.iss4e.algorithm.PARX.java

public static double[] computePARModel(final List<Double> readings, final List<Double> temperatures,
        int currentIndex, int trainingSize, int order, int seasons) throws SMASException {
    Pair pair = PARX.prepareAllVariables(readings, temperatures, currentIndex, trainingSize, order, seasons);
    double[] Y = (double[]) pair.getKey();
    double[][] X = (double[][]) pair.getValue();

    OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
    regression.setNoIntercept(true);/*  w w w.j  av a  2 s.  c o  m*/
    regression.newSampleData(Y, X);

    double[] beta = regression.estimateRegressionParameters();
    return beta;
}

From source file:ca.uwaterloo.iss4e.algorithm.PARX.java

public static double[] getLoadByTemperature(final List<Double> readings, final List<Double> temperatures,
        int order) throws SMASException {
    int seasons = 24;
    Pair pair = PARX.prepareAllVariables(readings, temperatures, readings.size() - 1, readings.size(), order,
            seasons);/*  w w w.  j  a  v a  2  s. c  o  m*/
    double[] Y = (double[]) pair.getKey();
    double[][] X = (double[][]) pair.getValue();

    OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
    regression.setNoIntercept(true);
    regression.newSampleData(Y, X);

    double[] beta = regression.estimateRegressionParameters();
    double[] loadByTemp = new double[Y.length * seasons];
    int startIndex = readings.size() - Y.length * seasons;
    for (int i = 0; i < loadByTemp.length; ++i) {
        double t = temperatures.get(i + startIndex);
        loadByTemp[i] = beta[order + 0] * (t > 20 ? (t - 20) : 0)
                + beta[order + 1] * ((5 <= t && t < 16) ? (16 - t) : 0)
                + beta[order + 2] * (t < 5 ? (5 - t) : 0);
    }
    return loadByTemp;
}

From source file:ca.uwaterloo.iss4e.algorithm.PAR.java

public static double[][] computeParameters3(final List<Double> readings, int order, int seasons) {
    double[][] parameters = new double[seasons][];
    try {//from  ww w  .  j a v a 2 s  .co  m
        double[][] series = makeSeries2(readings, seasons);
        for (int season = 0; season < series.length; ++season) {
            double[] serie = series[season];
            Pair pair = makePair(serie, order);
            double[] Y = (double[]) pair.getKey();
            double[][] X = (double[][]) pair.getValue();
            OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
            // regression.setNoIntercept(true);
            regression.newSampleData(Y, X);
            double[] params = regression.estimateRegressionParameters();
            parameters[season] = params;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return parameters;
}

From source file:ca.uwaterloo.iss4e.algorithm.PAR.java

public static Double[][] computeParameters(final Double[] readings, int order, int seasons) {
    Double[][] parameters = new Double[seasons][];
    try {/*from www  . j  a  v  a 2  s .  c o m*/
        double[][] series = makeSeries(readings, seasons);
        for (int season = 0; season < series.length; ++season) {
            double[] serie = series[season];
            Pair pair = makePair(serie, order);
            double[] Y = (double[]) pair.getKey();
            double[][] X = (double[][]) pair.getValue();
            OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
            // regression.setNoIntercept(true);
            regression.newSampleData(Y, X);
            double[] params = regression.estimateRegressionParameters();
            Double[] bigParams = new Double[params.length];
            for (int i = 0; i < params.length; ++i) {
                bigParams[i] = Double.valueOf(params[i]);
            }
            parameters[season] = bigParams;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return parameters;
}

From source file:ca.uwaterloo.iss4e.algorithm.PAR.java

public static List<ArrayListWritable<DoubleWritable>> computeParameters(final List<DoubleWritable> readings,
        int order, int seasons) {
    List<ArrayListWritable<DoubleWritable>> parameters = new ArrayList<ArrayListWritable<DoubleWritable>>();
    try {//from w  ww .ja v  a 2s  . co m
        double[][] series = makeSeries(readings, seasons);
        for (int season = 0; season < series.length; ++season) {
            double[] serie = series[season];
            Pair pair = makePair(serie, order);
            double[] Y = (double[]) pair.getKey();
            double[][] X = (double[][]) pair.getValue();
            OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
            // regression.setNoIntercept(true);
            regression.newSampleData(Y, X);
            double[] params = regression.estimateRegressionParameters();
            //Double[] bigParams = new Double[params.length];
            ArrayListWritable<DoubleWritable> bigParams = new ArrayListWritable<DoubleWritable>();
            for (int i = 0; i < params.length; ++i) {
                bigParams.add(new DoubleWritable(params[i]));
            }
            parameters.add(bigParams);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return parameters;
}

From source file:ca.uwaterloo.iss4e.algorithm.PAR.java

public static List<ArrayListWritable<DoubleWritable>> computeParameters2(final List<Double> readings, int order,
        int seasons) {
    List<ArrayListWritable<DoubleWritable>> parameters = new ArrayList<ArrayListWritable<DoubleWritable>>();
    try {/*from   w w  w. j a  v  a 2 s  .  c om*/
        double[][] series = makeSeries2(readings, seasons);
        for (int season = 0; season < series.length; ++season) {
            double[] serie = series[season];
            Pair pair = makePair(serie, order);
            double[] Y = (double[]) pair.getKey();
            double[][] X = (double[][]) pair.getValue();
            OLSMultipleLinearRegression regression = new OLSMultipleLinearRegression();
            // regression.setNoIntercept(true);
            regression.newSampleData(Y, X);
            double[] params = regression.estimateRegressionParameters();
            //Double[] bigParams = new Double[params.length];
            ArrayListWritable<DoubleWritable> bigParams = new ArrayListWritable<DoubleWritable>();
            for (int i = 0; i < params.length; ++i) {
                bigParams.add(new DoubleWritable(params[i]));
            }
            parameters.add(bigParams);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return parameters;
}

From source file:dfs.OLSTrendLine.java

@Override
public void setValues(double[] y, double[] x) {
    if (x.length != y.length) {
        throw new IllegalArgumentException(
                String.format("The numbers of y and x values must be equal (%d != %d)", y.length, x.length));
    }/*www  .  jav a2 s .c o m*/
    double[][] xData = new double[x.length][];
    for (int i = 0; i < x.length; i++) {
        // the implementation determines how to produce a vector of predictors from a single x
        xData[i] = xVector(x[i]);
    }
    if (logY()) { // in some models we are predicting ln y, so we replace each y with ln y
        y = Arrays.copyOf(y, y.length); // user might not be finished with the array we were given
        for (int i = 0; i < x.length; i++) {
            y[i] = Math.log(y[i]);
        }
    }
    OLSMultipleLinearRegression ols = new OLSMultipleLinearRegression();
    ols.setNoIntercept(true); // let the implementation include a constant in xVector if desired
    ols.newSampleData(y, xData); // provide the data to the model
    coef = MatrixUtils.createColumnRealMatrix(ols.estimateRegressionParameters()); // get our coefs
}

From source file:org.apache.flink.statistics.regression.OLSTrendLine.java

@Override
public void setValues(double[] y, double[] x) {
    if (x.length != y.length) {
        throw new IllegalArgumentException(
                String.format("The numbers of y and x values must be equal (%d != %d)", y.length, x.length));
    }/*w w  w.j  a  v  a 2s .  c  o m*/
    double[][] xData = new double[x.length][];
    for (int i = 0; i < x.length; i++) {
        // the implementation determines how to produce a vector of
        // predictors from a single x
        xData[i] = xVector(x[i]);
    }
    if (logY()) { // in some models we are predicting ln y, so we replace
                  // each y with ln y
        y = Arrays.copyOf(y, y.length); // user might not be finished with
        // the array we were given
        for (int i = 0; i < x.length; i++) {
            y[i] = Math.log(y[i]);
        }
    }
    OLSMultipleLinearRegression ols = new OLSMultipleLinearRegression();

    ols.newSampleData(y, xData); // provide the data to the model
    coef = MatrixUtils.createColumnRealMatrix(ols.estimateRegressionParameters()); // get our coefs
}

From source file:ru.algorithmist.jquant.math.GrangerTest.java

/**
 * Returns p-value for Granger causality test.
 *
 * @param y - predictable variable//from ww w.j  av a2  s .c  o m
 * @param x - predictor
 * @param L - lag, should be 1 or greater.
 * @return p-value of Granger causality
 */
public static double granger(double[] y, double[] x, int L) {
    OLSMultipleLinearRegression h0 = new OLSMultipleLinearRegression();
    OLSMultipleLinearRegression h1 = new OLSMultipleLinearRegression();

    double[][] laggedY = createLaggedSide(L, y);

    double[][] laggedXY = createLaggedSide(L, x, y);

    int n = laggedY.length;

    h0.newSampleData(strip(L, y), laggedY);
    h1.newSampleData(strip(L, y), laggedXY);

    double rs0[] = h0.estimateResiduals();
    double rs1[] = h1.estimateResiduals();

    double RSS0 = sqrSum(rs0);
    double RSS1 = sqrSum(rs1);

    double ftest = ((RSS0 - RSS1) / L) / (RSS1 / (n - 2 * L - 1));

    System.out.println(RSS0 + " " + RSS1);
    System.out.println("F-test " + ftest);

    FDistribution fDist = new FDistributionImpl(L, n - 2 * L - 1);
    try {
        double pValue = 1.0 - fDist.cumulativeProbability(ftest);
        System.out.println("P-value " + pValue);
        return pValue;
    } catch (MathException e) {
        throw new RuntimeException(e);
    }

}