Example usage for org.apache.commons.math3.linear ArrayRealVector getDimension

List of usage examples for org.apache.commons.math3.linear ArrayRealVector getDimension

Introduction

In this page you can find the example usage for org.apache.commons.math3.linear ArrayRealVector getDimension.

Prototype

@Override
public int getDimension() 

Source Link

Usage

From source file:gamlss.distributions.SST.java

/** Calculate and set initial value of sigma.
 * @param y - vector of values of response variable
 * @return vector of initial values of sigma
 *///from  w  ww. j  a v  a2 s  . c  o  m
private ArrayRealVector setSigmaInitial(final ArrayRealVector y) {
    //sigma.initial = expression(sigma<- rep(sd(y), length(y))),
    tempV = new ArrayRealVector(y.getDimension());
    final double out = new StandardDeviation().evaluate(y.getDataRef());
    tempV.set(out);
    return tempV;
}

From source file:gamlss.distributions.TF2.java

/** Set sigma1 array.
 * @param y - response variable//from  w w  w.  j a v  a 2 s  . c  o m
 */
private void setInterimArrays(final ArrayRealVector y) {
    muV = distributionParameters.get(DistributionSettings.MU);
    sigmaV = distributionParameters.get(DistributionSettings.SIGMA);
    nuV = distributionParameters.get(DistributionSettings.NU);

    size = y.getDimension();
    double[] temp = new double[size];
    for (int i = 0; i < size; i++) {

        //sigma1 <- (sqrt((nu-2)/nu))*sigma 
        temp[i] = (FastMath.sqrt((nuV.getEntry(i) - 2.0) / nuV.getEntry(i))) * sigmaV.getEntry(i);
    }
    sigma1 = new ArrayRealVector(temp, false);
}

From source file:gamlss.distributions.ST3.java

/** Calculates initial value of tau.
 * @param y - vector of values of response variable
 * @return vector of initial values of tau
 *//*from ww  w.j  ava2 s  . co m*/
private ArrayRealVector setTauInitial(final ArrayRealVector y) {
    //tau.initial = expression(tau <-rep(10, length(y)))
    tempV = new ArrayRealVector(y.getDimension());
    tempV.set(10.0);
    return tempV;
}

From source file:gamlss.distributions.PE.java

/** Calculate and set initial value of sigma.
 * @param y - vector of values of response variable
 * @return vector of initial values of sigma
 *//*from   w w  w.jav a 2 s .co  m*/
private ArrayRealVector setSigmaInitial(final ArrayRealVector y) {
    //sigma.initial = expression( sigma <- (abs(y-mean(y))+sd(y))/2 )   
    final double mean = new Mean().evaluate(y.getDataRef());
    final double sd = new StandardDeviation().evaluate(y.getDataRef());
    size = y.getDimension();
    double[] out = new double[size];
    for (int i = 0; i < size; i++) {
        out[i] = (FastMath.abs(y.getEntry(i) - mean) + sd) / 2;
    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.distributions.PE.java

/** Set logC, c, z arrays.
 * @param y - response variable//w  w w.j a va  2 s.  co  m
 */
private void setInterimArrays(final ArrayRealVector y) {
    muV = distributionParameters.get(DistributionSettings.MU);
    sigmaV = distributionParameters.get(DistributionSettings.SIGMA);
    nuV = distributionParameters.get(DistributionSettings.NU);

    size = y.getDimension();
    logC = new double[size];
    c = new double[size];
    z = new double[size];
    for (int i = 0; i < size; i++) {

        //log.c <- 0.5*(-(2/nu)*log(2)+lgamma(1/nu)-lgamma(3/nu))
        logC[i] = 0.5 * (-(2 / nuV.getEntry(i)) * FastMath.log(2) + Gamma.logGamma(1 / nuV.getEntry(i))
                - Gamma.logGamma(3 / nuV.getEntry(i)));

        //c <- exp(log.c)
        c[i] = FastMath.exp(logC[i]);

        //z <- (y-mu)/sigma
        z[i] = (y.getEntry(i) - muV.getEntry(i)) / sigmaV.getEntry(i);
    }
}

From source file:gamlss.distributions.SST.java

/** Computes the global Deviance Increament.
 * @param y - vector of response variable values
 * @return vector of global Deviance Increament values 
 */// w ww.  ja va2  s  .  co  m
public final ArrayRealVector globalDevianceIncreament(final ArrayRealVector y) {
    //G.dev.incr  = function(y,mu,sigma,nu,tau,...)  
    //-2*dST3(y,mu,sigma,nu,tau,log=TRUE),
    size = y.getDimension();
    double[] out = new double[size];

    double[] muArr = distributionParameters.get(DistributionSettings.MU).getDataRef();
    double[] sigmaArr = distributionParameters.get(DistributionSettings.SIGMA).getDataRef();
    double[] nuArr = distributionParameters.get(DistributionSettings.NU).getDataRef();
    double[] tauArr = distributionParameters.get(DistributionSettings.TAU).getDataRef();

    for (int i = 0; i < size; i++) {

        out[i] = (-2)
                * dSST(y.getEntry(i), muArr[i], sigmaArr[i], nuArr[i], tauArr[i], Controls.LOG_LIKELIHOOD);
    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.distributions.ST3.java

/** Computes the global Deviance Increament.
 * @param y - vector of response variable values
 * @return vector of global Deviance Increament values 
 *//*from  w  w  w  .j ava  2s.c o  m*/
public final ArrayRealVector globalDevianceIncreament(final ArrayRealVector y) {
    //G.dev.incr  = function(y,mu,sigma,nu,tau,...)  
    //-2*dST3(y,mu,sigma,nu,tau,log=TRUE),
    size = y.getDimension();
    double[] out = new double[size];

    double[] muArr = distributionParameters.get(DistributionSettings.MU).getDataRef();
    double[] sigmaArr = distributionParameters.get(DistributionSettings.SIGMA).getDataRef();
    double[] nuArr = distributionParameters.get(DistributionSettings.NU).getDataRef();
    double[] tauArr = distributionParameters.get(DistributionSettings.TAU).getDataRef();

    for (int i = 0; i < size; i++) {

        out[i] = (-2)
                * dST3(y.getEntry(i), muArr[i], sigmaArr[i], nuArr[i], tauArr[i], Controls.LOG_LIKELIHOOD);
    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.algorithm.TEST.java

private void twoParTest() {

    String fileName = "Data/distTest.csv";
    CSVFileReader readData = new CSVFileReader(fileName);
    readData.readFile();//w  w w . j  av  a  2 s .  c  o  m
    ArrayList<String> data = readData.storeValues;

    ArrayRealVector y = new ArrayRealVector(data.size());
    ArrayRealVector mu = new ArrayRealVector(data.size());
    ArrayRealVector sigma = new ArrayRealVector(data.size());
    ArrayRealVector nu = new ArrayRealVector(data.size());
    ArrayRealVector tau = new ArrayRealVector(data.size());

    for (int i = 0; i < data.size(); i++) {
        String[] line = data.get(i).split(",");
        y.setEntry(i, Double.parseDouble(line[0]));
        mu.setEntry(i, Double.parseDouble(line[1]));
        sigma.setEntry(i, Double.parseDouble(line[2]));
        nu.setEntry(i, Double.parseDouble(line[3]));
        tau.setEntry(i, Double.parseDouble(line[4]));
    }

    double[] outA = new double[y.getDimension()];
    String folder = "C:\\Users\\Daniil\\Desktop\\Gamlss_exp/outDistG.csv";
    ArrayRealVector out = null;
    GA dist = new GA();

    dist.setDistributionParameter(DistributionSettings.MU, mu);
    dist.setDistributionParameter(DistributionSettings.SIGMA, sigma);
    dist.setDistributionParameter(DistributionSettings.NU, nu);
    dist.setDistributionParameter(DistributionSettings.TAU, tau);
    //1      
    out = dist.firstDerivative(DistributionSettings.MU, y);
    MatrixFunctions.vectorWriteCSV(folder, out, false);
    //2
    out = dist.secondDerivative(DistributionSettings.MU, y);
    MatrixFunctions.vectorWriteCSV(folder, out, true);
    //3
    out = dist.firstDerivative(DistributionSettings.SIGMA, y);
    MatrixFunctions.vectorWriteCSV(folder, out, true);
    //4
    out = dist.secondDerivative(DistributionSettings.SIGMA, y);
    MatrixFunctions.vectorWriteCSV(folder, out, true);
    //5
    //         out = dist.secondCrossDerivative(DistributionSettings.MU, DistributionSettings.SIGMA,  y);
    //         MatrixFunctions.vectorWriteCSV(folder, out, true);
    //6
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.dGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //7
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.dGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //8
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, true);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //9
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, true);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //10
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //11

    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //12
    for (int i = 0; i < y.getDimension(); i++) {
        //            outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, true);
    }
    //         MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //13
    for (int i = 0; i < y.getDimension(); i++) {
        //            outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, true);
    }
    //         MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //14
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //15
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //16
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.dGA(y.getEntry(i));
    }
    //         MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //17
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i));
    }
    //         MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //18
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.qGA(y.getEntry(i));
    }
    //         MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);

    System.out.println("Done !!!");

}

From source file:gamlss.utilities.TestingDistributions.java

private void twoParTest() {

    String fileName = "Data/distTest.csv";
    CSVFileReader readData = new CSVFileReader(fileName);
    readData.readFile();/*from w w w  .  j ava  2s .c  o  m*/
    ArrayList<String> data = readData.storeValues;

    ArrayRealVector y = new ArrayRealVector(data.size());
    ArrayRealVector mu = new ArrayRealVector(data.size());
    ArrayRealVector sigma = new ArrayRealVector(data.size());
    ArrayRealVector nu = new ArrayRealVector(data.size());
    ArrayRealVector tau = new ArrayRealVector(data.size());

    for (int i = 0; i < data.size(); i++) {
        String[] line = data.get(i).split(",");
        y.setEntry(i, Double.parseDouble(line[0]));
        mu.setEntry(i, Double.parseDouble(line[1]));
        sigma.setEntry(i, Double.parseDouble(line[2]));
        nu.setEntry(i, Double.parseDouble(line[3]));
        tau.setEntry(i, Double.parseDouble(line[4]));
    }

    double[] outA = new double[y.getDimension()];
    String folder = "C:\\Users\\Daniil\\Desktop\\Gamlss_exp/outDistG.csv";
    ArrayRealVector out = null;
    GA dist = new GA();

    dist.setDistributionParameter(DistributionSettings.MU, mu);
    dist.setDistributionParameter(DistributionSettings.SIGMA, sigma);
    dist.setDistributionParameter(DistributionSettings.NU, nu);
    dist.setDistributionParameter(DistributionSettings.TAU, tau);
    //1      
    out = dist.firstDerivative(DistributionSettings.MU, y);
    MatrixFunctions.vectorWriteCSV(folder, out, false);
    //2
    out = dist.secondDerivative(DistributionSettings.MU, y);
    MatrixFunctions.vectorWriteCSV(folder, out, true);
    //3
    out = dist.firstDerivative(DistributionSettings.SIGMA, y);
    MatrixFunctions.vectorWriteCSV(folder, out, true);
    //4
    out = dist.secondDerivative(DistributionSettings.SIGMA, y);
    MatrixFunctions.vectorWriteCSV(folder, out, true);
    //5
    //            out = dist.secondCrossDerivative(DistributionSettings.MU, DistributionSettings.SIGMA,  y);
    //            MatrixFunctions.vectorWriteCSV(folder, out, true);
    //6
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.dGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //7
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.dGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //8
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, true);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //9
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, true);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //10
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //11

    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //12
    for (int i = 0; i < y.getDimension(); i++) {
        //               outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, true);
    }
    //            MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //13
    for (int i = 0; i < y.getDimension(); i++) {
        //               outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, true);
    }
    //            MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //14
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), true, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //15
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.qGA(y.getEntry(i), mu.getEntry(i), sigma.getEntry(i), false, false);
    }
    MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //16
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.dGA(y.getEntry(i));
    }
    //            MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //17
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.pGA(y.getEntry(i));
    }
    //            MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);
    //18
    for (int i = 0; i < y.getDimension(); i++) {
        outA[i] = dist.qGA(y.getEntry(i));
    }
    //            MatrixFunctions.vectorWriteCSV(folder, new ArrayRealVector(outA, false), true);

    System.out.println("Done !!!");

}

From source file:gamlss.distributions.JSUo.java

/**
 * Set z and r arrays./*  w  ww .j  av a 2s .  co  m*/
 * @param y - response variable
 */
private void setInterimArrays(final ArrayRealVector y) {
    muV = distributionParameters.get(DistributionSettings.MU);
    sigmaV = distributionParameters.get(DistributionSettings.SIGMA);
    nuV = distributionParameters.get(DistributionSettings.NU);
    tauV = distributionParameters.get(DistributionSettings.TAU);

    size = y.getDimension();
    z = new double[size];
    r = new double[size];
    for (int i = 0; i < size; i++) {

        //z <- (y-mu)/sigma
        z[i] = (y.getEntry(i) - muV.getEntry(i)) / sigmaV.getEntry(i);

        //r <- nu + tau*asinh(z)
        r[i] = nuV.getEntry(i) + tauV.getEntry(i) * FastMath.asinh(z[i]);
    }
}