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.GT.java

/**
 * Set s, dsq, w, ym arrays./* w  ww  .  j a v a 2 s.  c  o 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];
    zt = new double[size];
    w = 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);

        //zt <- (abs(z))^tau
        zt[i] = FastMath.pow(FastMath.abs(z[i]), tauV.getEntry(i));

        // w  <- (nu*tau+1)/(nu+zt)
        w[i] = (nuV.getEntry(i) * tauV.getEntry(i) + 1) / (nuV.getEntry(i) + zt[i]);
    }
}

From source file:gamlss.distributions.ST1.java

/**
 * Set z, w, lam arrays.// w  w  w  . j a  va  2s.  co m
 * @param y - response variable
 */
private void setInterimArrays(final ArrayRealVector y, final int whichDistParameter) {
    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];
    lam = new double[size];
    w = 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);

        //w <- nu*z
        w[i] = nuV.getEntry(i) * z[i];

        if (whichDistParameter != DistributionSettings.NU) {
            //lam <- ifelse(tau < 1000000, (tau+1)/(tau+(z^2)),1)
            if (tauV.getEntry(i) < 1000000) {

                lam[i] = (tauV.getEntry(i) + 1) / (tauV.getEntry(i) + (z[i] * z[i]));
            } else {

                lam[i] = 1.0;
            }
        }
    }
}

From source file:gamlss.distributions.ST4.java

/**
 * Set s, dsq, w, ym arrays./*w w  w .  jav  a2 s . c om*/
 * @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();
    dsq = new double[size];
    w = new double[size];
    for (int i = 0; i < size; i++) {

        //dsq  <- ((y-mu)/s)^2
        dsq[i] = FastMath.pow(((y.getEntry(i) - muV.getEntry(i)) / sigmaV.getEntry(i)), 2);

        if (y.getEntry(i) < muV.getEntry(i)) {

            //w1 <- ifelse(nu < 1000000, (nu+1)/(nu+dsq),1)   
            if (nuV.getEntry(i) < 1000000) {
                w[i] = (nuV.getEntry(i) + 1) / (nuV.getEntry(i) + dsq[i]);
            } else {

                w[i] = 1.0;
            }
        } else {

            //w2 <- ifelse(tau < 1000000, (tau+1)/(tau+dsq),1)
            if (tauV.getEntry(i) < 1000000) {

                w[i] = (tauV.getEntry(i) + 1) / (tauV.getEntry(i) + dsq[i]);
            } else {

                w[i] = 1.0;
            }
        }
    }
}

From source file:gamlss.distributions.BCPE.java

/**
 * Set z, logC, c arrays.//  w w  w  . j  a va  2 s .co  m
 * @param y - response variable
 */
private void setInterimArrays(final ArrayRealVector y, final int whichDistParameter) {
    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];
    logC = new double[size];
    c = new double[size];
    for (int i = 0; i < size; i++) {
        //z <- ifelse(nu != 0,(((y/mu)^nu-1)/(nu*sigma)),log(y/mu)/sigma)
        if (nuV.getEntry(i) != 0) {
            z[i] = (FastMath.pow(y.getEntry(i) / muV.getEntry(i), nuV.getEntry(i)) - 1)
                    / (nuV.getEntry(i) * sigmaV.getEntry(i));
        } else {

            z[i] = FastMath.log(y.getEntry(i) / muV.getEntry(i)) / sigmaV.getEntry(i);
        }

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

        c[i] = FastMath.exp(logC[i]);
    }

    if (whichDistParameter == DistributionSettings.TAU) {
        dlogcDt = new double[size];
        for (int i = 0; i < size; i++) {
            //dlogc.dt <- (1/(2*tau^2))*(2*log(2)
            //-digamma(1/tau)+3*digamma(3/tau)) 
            dlogcDt[i] = (1 / (2 * tauV.getEntry(i) * tauV.getEntry(i))) * (2 * FastMath.log(2)
                    - Gamma.digamma(1 / tauV.getEntry(i)) + 3 * Gamma.digamma(3 / tauV.getEntry(i)));
        }
    }
}

From source file:gamlss.distributions.BCPE.java

/** Second cross derivative of likelihood function
 *  in respect to mu and sigma (d2ldmdd = d2l/dmu*dsigma).
 * @param y - vector of values of response variable
 * @return  a vector of Second cross derivative
 *///from w ww.  j a va 2 s  .co  m
private ArrayRealVector d2ldmds(final ArrayRealVector y) {

    ArrayRealVector mu = distributionParameters.get(DistributionSettings.MU);
    ArrayRealVector sigma = distributionParameters.get(DistributionSettings.SIGMA);
    ArrayRealVector nu = distributionParameters.get(DistributionSettings.NU);
    ArrayRealVector tau = distributionParameters.get(DistributionSettings.TAU);

    size = y.getDimension();
    double[] out = new double[size];
    for (int i = 0; i < size; i++) {
        //d2ldmdd = function(mu,sigma,nu,tau) -(nu*tau)/(mu*sigma)
        out[i] = -(nu.getEntry(i) * tau.getEntry(i)) / (mu.getEntry(i) * sigma.getEntry(i));
    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.distributions.BCPE.java

/** Second cross derivative of likelihood function 
 * in respect to sigma and nu (d2ldmdd = d2l/dsigma*dnu).
 * @param y - vector of values of response variable
 * @return  a vector of Second cross derivative
 *//*from  www. j  a  va  2s .c  o  m*/
private ArrayRealVector d2ldsdn(final ArrayRealVector y) {

    ArrayRealVector mu = distributionParameters.get(DistributionSettings.MU);
    ArrayRealVector sigma = distributionParameters.get(DistributionSettings.SIGMA);
    ArrayRealVector nu = distributionParameters.get(DistributionSettings.NU);
    ArrayRealVector tau = distributionParameters.get(DistributionSettings.TAU);

    size = y.getDimension();
    double[] out = new double[size];
    for (int i = 0; i < size; i++) {
        //2ldddv = function(sigma,nu,tau) -(sigma*nu*tau)/2
        out[i] = -(sigma.getEntry(i) * nu.getEntry(i) * tau.getEntry(i)) / 2;

    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.distributions.BCPE.java

/** Second cross derivative of likelihood function
 *  in respect to mu and nu (d2ldmdd = d2l/dmu*dnu).
 * @param y - vector of values of response variable
 * @return  a vector of Second cross derivative
 *//*from   w w w  .  jav a2s . c  o  m*/
private ArrayRealVector d2ldmdn(final ArrayRealVector y) {

    ArrayRealVector mu = distributionParameters.get(DistributionSettings.MU);
    ArrayRealVector sigma = distributionParameters.get(DistributionSettings.SIGMA);
    ArrayRealVector nu = distributionParameters.get(DistributionSettings.NU);
    ArrayRealVector tau = distributionParameters.get(DistributionSettings.TAU);

    size = y.getDimension();
    double[] out = new double[size];
    for (int i = 0; i < size; i++) {
        //d2ldmdv = function(mu,sigma,nu,tau) 
        //(2*(tau-1)-(tau+1)*(sigma^2)*(nu^2))/(4*mu),
        out[i] = (2 * (tau.getEntry(i) - 1) - (tau.getEntry(i) + 1) * (sigma.getEntry(i) * sigma.getEntry(i))
                * (nu.getEntry(i) * nu.getEntry(i))) / (4 * mu.getEntry(i));
    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.distributions.BCPE.java

/** Second cross derivative of likelihood function 
 * in respect to mu and tau (d2ldmdd = d2l/dmu*dtau).
 * @param y - vector of values of response variable
 * @return  a vector of Second cross derivative
 *///from www .  ja  va  2 s . c  o  m
private ArrayRealVector d2ldmdt(final ArrayRealVector y) {

    ArrayRealVector mu = distributionParameters.get(DistributionSettings.MU);
    ArrayRealVector sigma = distributionParameters.get(DistributionSettings.SIGMA);
    ArrayRealVector nu = distributionParameters.get(DistributionSettings.NU);
    ArrayRealVector tau = distributionParameters.get(DistributionSettings.TAU);

    size = y.getDimension();
    double[] out = new double[size];
    for (int i = 0; i < size; i++) {
        //d2ldmdt = (nu/(mu*tau))*(1+tau+(3/2)
        //*(digamma(1/tau)-digamma(3/tau)))
        out[i] = (nu.getEntry(i) / (mu.getEntry(i) * tau.getEntry(i))) * (1 + tau.getEntry(i)
                + (3 / 2) * (Gamma.digamma(1 / tau.getEntry(i)) - Gamma.digamma(3 / tau.getEntry(i))));

    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.distributions.BCPE.java

/** Second cross derivative of likelihood function
 *  in respect to sigma and tau (d2ldmdd = d2l/dsigma*dtau).
 * @param y - vector of values of response variable
 * @return  a vector of Second cross derivative
 *//*from  w w  w  . j  ava2  s  .c  o  m*/
private ArrayRealVector d2ldsdt(final ArrayRealVector y) {

    ArrayRealVector mu = distributionParameters.get(DistributionSettings.MU);
    ArrayRealVector sigma = distributionParameters.get(DistributionSettings.SIGMA);
    ArrayRealVector nu = distributionParameters.get(DistributionSettings.NU);
    ArrayRealVector tau = distributionParameters.get(DistributionSettings.TAU);

    size = y.getDimension();
    double[] out = new double[size];
    for (int i = 0; i < size; i++) {
        //d2ldddt = (1/(sigma*tau))*(1+tau+(3/2)
        //*(digamma(1/tau)-digamma(3/tau)))
        out[i] = (1 / (sigma.getEntry(i) * tau.getEntry(i))) * (1 + tau.getEntry(i)
                + (3 / 2) * (Gamma.digamma(1 / tau.getEntry(i)) - Gamma.digamma(3 / tau.getEntry(i))));

    }
    return new ArrayRealVector(out, false);
}

From source file:gamlss.distributions.BCPE.java

/** Second cross derivative of likelihood function 
 * in respect to nu and tau (d2ldmdd = d2l/dnu*dtau).
 * @param y - vector of values of response variable
 * @return  a vector of Second cross derivative
 *///from   w  w  w  . ja va 2 s .  c  om
private ArrayRealVector d2ldndt(final ArrayRealVector y) {

    ArrayRealVector mu = distributionParameters.get(DistributionSettings.MU);
    ArrayRealVector sigma = distributionParameters.get(DistributionSettings.SIGMA);
    ArrayRealVector nu = distributionParameters.get(DistributionSettings.NU);
    ArrayRealVector tau = distributionParameters.get(DistributionSettings.TAU);

    size = y.getDimension();
    double[] out = new double[size];
    for (int i = 0; i < size; i++) {
        //d2ldvdt  <- (((sigma^2)*nu)/(2*tau))
        //*(1+(tau/3)+0.5*(digamma(1/tau)-digamma(3/tau)))
        out[i] = (((sigma.getEntry(i) * sigma.getEntry(i)) * nu.getEntry(i)) / (2 * tau.getEntry(i)))
                * (1 + (tau.getEntry(i) / 3)
                        + 0.5 * (Gamma.digamma(1 / tau.getEntry(i)) - Gamma.digamma(3 / tau.getEntry(i))));
    }
    return new ArrayRealVector(out, false);
}