List of usage examples for org.apache.commons.math3.linear ArrayRealVector getDimension
@Override public int getDimension()
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); }