public final double link(double x) { switch(_link) { case identity: return x; case ologit: // note: x here is the CDF case logit: assert 0 <= x && x <= 1:"x out of bounds, expected <0,1> range, got " + x; return Math.log(x / (1 - x)); case ologlog: return Math.log(-1.0*Math.log(1-x)); // x here is CDF case oprobit: // x is normal with 0 mean and variance 1 return _dprobit.inverseCumulativeProbability(x); case multinomial: case log: return Math.log(x); case inverse: double xx = (x < 0) ? Math.min(-1e-5, x) : Math.max(1e-5, x); return 1.0 / xx; case tweedie: return _link_power == 0?Math.log(x):Math.pow(x, _link_power); default: throw new RuntimeException("unknown link function " + this); } }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double mean = (double) numberOfSuccesses / (double) numberOfTrials; final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double difference = normalDistribution.inverseCumulativeProbability(1 - alpha) * FastMath.sqrt(1.0 / numberOfTrials * mean * (1 - mean)); return new ConfidenceInterval(mean - difference, mean + difference, confidenceLevel); }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double z = normalDistribution.inverseCumulativeProbability(1 - alpha); final double zSquared = FastMath.pow(z, 2); final double modifiedNumberOfTrials = numberOfTrials + zSquared; final double modifiedSuccessesRatio = (1.0 / modifiedNumberOfTrials) * (numberOfSuccesses + 0.5 * zSquared); final double difference = z * FastMath.sqrt(1.0 / modifiedNumberOfTrials * modifiedSuccessesRatio * (1 - modifiedSuccessesRatio)); return new ConfidenceInterval(modifiedSuccessesRatio - difference, modifiedSuccessesRatio + difference, confidenceLevel); }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double z = normalDistribution.inverseCumulativeProbability(1 - alpha); final double zSquared = FastMath.pow(z, 2); final double mean = (double) numberOfSuccesses / (double) numberOfTrials; final double factor = 1.0 / (1 + (1.0 / numberOfTrials) * zSquared); final double modifiedSuccessRatio = mean + (1.0 / (2 * numberOfTrials)) * zSquared; final double difference = z * FastMath.sqrt(1.0 / numberOfTrials * mean * (1 - mean) + (1.0 / (4 * FastMath.pow(numberOfTrials, 2)) * zSquared)); final double lowerBound = factor * (modifiedSuccessRatio - difference); final double upperBound = factor * (modifiedSuccessRatio + difference); return new ConfidenceInterval(lowerBound, upperBound, confidenceLevel); }
@Test public void testSample() throws Exception { double[] data = new double[10001]; Sampler<Double> sampler = new Normal(); for (int i = 0; i < data.length; i++) { data[i] = sampler.sample(); } Arrays.sort(data); NormalDistribution reference = new NormalDistribution(RandomUtils.getRandom().getRandomGenerator(), 0, 1, NormalDistribution.DEFAULT_INVERSE_ABSOLUTE_ACCURACY); assertEquals("Median", reference.inverseCumulativeProbability(0.5), data[5000], 0.04); } }
public double vanderWaerden(double rank, double n){ double p = rank/(n+1.0); return norm.inverseCumulativeProbability(p); }
public double blom(double rank, double n){ double p = (rank-3.0/8.0)/(n+1.0/4.0); return norm.inverseCumulativeProbability(p); }
public double tukey(double rank, double n){ double p = (rank-1.0/3.0)/(n+1.0/3.0); return norm.inverseCumulativeProbability(p); }
static protected Double getCriticalValue(float pvalue) { Double area = new Double(1 - pvalue/2); Double cval = criticalValues.get(area); if (cval == null) { cval = normDist.inverseCumulativeProbability(area); criticalValues.put(area, cval); } return cval; }
import org.apache.commons.math3.distribution.NormalDistribution; public class TestProbabilites { public static void main(String[] args) { double riskProbabilityLevel = 0.02D; double mean = 0.06618D; double standardDev = 0.057196166520267355D; double expectedRisk = 0.051286461995869864D; NormalDistribution distribution = new NormalDistribution(mean, standardDev); double outcomeRisk = distribution.inverseCumulativeProbability(riskProbabilityLevel); } }
public static double getZForAlpha(double alpha) { NormalDistribution dist = new NormalDistribution(0, 1); return dist.inverseCumulativeProbability(1.0 - alpha / 2.0); }
public double[] getThresholds(){ double[] alpha = new double[freqY.getUniqueCount()-1]; Iterator<Comparable<?>> iter = freqY.valuesIterator(); Comparable<?> v = null; int index = 0; while(iter.hasNext()){ v = iter.next(); if(iter.hasNext()){ alpha[index] = norm.inverseCumulativeProbability(freqY.getCumPct(v)); index++; } } return alpha; }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double mean = (double) numberOfSuccesses / (double) numberOfTrials; final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double difference = normalDistribution.inverseCumulativeProbability(1 - alpha) * Math.sqrt(1.0 / numberOfTrials * mean * (1 - mean)); return new ConfidenceInterval(mean - difference, mean + difference, confidenceLevel); }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double z = normalDistribution.inverseCumulativeProbability(1 - alpha); final double zSquared = Math.pow(z, 2); final double modifiedNumberOfTrials = numberOfTrials + zSquared; final double modifiedSuccessesRatio = (1.0 / modifiedNumberOfTrials) * (numberOfSuccesses + 0.5 * zSquared); final double difference = z * Math.sqrt(1.0 / modifiedNumberOfTrials * modifiedSuccessesRatio * (1 - modifiedSuccessesRatio)); return new ConfidenceInterval(modifiedSuccessesRatio - difference, modifiedSuccessesRatio + difference, confidenceLevel); }
import org.apache.commons.math.MathException; import org.apache.commons.math.distribution.NormalDistribution; import org.apache.commons.math.distribution.NormalDistributionImpl; /** * @see http://stattrek.com/Tables/Normal.aspx#examples * @see http://stackoverflow.com/questions/6353678 */ public class CumulativeProbability { private static NormalDistribution d; public static void main(String[] args) throws MathException { // Problem 1; µ = 1000; σ = 100 d = new NormalDistributionImpl(1000, 100); System.out.println(d.cumulativeProbability(1200)); // Problem 2; µ = 50; σ = 10 d = new NormalDistributionImpl(50, 10); System.out.println(d.inverseCumulativeProbability(0.9)); } }
private static void generateBrownian(DoubleColumn col, long first, double start, double end, NormalDistribution nd, RandomGenerator rand) { double x = start; int chunkSize = (int) Math.min(col.length() - first, CHUNK_SIZE); for (int i = 0; i < chunkSize; i++) { col.set(first + i, x); double p = rand.nextFloat() + 0.5 / (1 << 24); double v = nd.inverseCumulativeProbability(p); x += v; assert !Double.isInfinite(x); } double diff = end - x; double gradient = diff / chunkSize; for (int i = 0; i < chunkSize; i++) { col.add(first + i, i * gradient); } }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double mean = (double) numberOfSuccesses / (double) numberOfTrials; final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double difference = normalDistribution.inverseCumulativeProbability(1 - alpha) * FastMath.sqrt(1.0 / numberOfTrials * mean * (1 - mean)); return new ConfidenceInterval(mean - difference, mean + difference, confidenceLevel); }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double z = normalDistribution.inverseCumulativeProbability(1 - alpha); final double zSquared = FastMath.pow(z, 2); final double modifiedNumberOfTrials = numberOfTrials + zSquared; final double modifiedSuccessesRatio = (1.0 / modifiedNumberOfTrials) * (numberOfSuccesses + 0.5 * zSquared); final double difference = z * FastMath.sqrt(1.0 / modifiedNumberOfTrials * modifiedSuccessesRatio * (1 - modifiedSuccessesRatio)); return new ConfidenceInterval(modifiedSuccessesRatio - difference, modifiedSuccessesRatio + difference, confidenceLevel); }
/** {@inheritDoc} */ public ConfidenceInterval createInterval(int numberOfTrials, int numberOfSuccesses, double confidenceLevel) { IntervalUtils.checkParameters(numberOfTrials, numberOfSuccesses, confidenceLevel); final double alpha = (1.0 - confidenceLevel) / 2; final NormalDistribution normalDistribution = new NormalDistribution(); final double z = normalDistribution.inverseCumulativeProbability(1 - alpha); final double zSquared = FastMath.pow(z, 2); final double mean = (double) numberOfSuccesses / (double) numberOfTrials; final double factor = 1.0 / (1 + (1.0 / numberOfTrials) * zSquared); final double modifiedSuccessRatio = mean + (1.0 / (2 * numberOfTrials)) * zSquared; final double difference = z * FastMath.sqrt(1.0 / numberOfTrials * mean * (1 - mean) + (1.0 / (4 * FastMath.pow(numberOfTrials, 2)) * zSquared)); final double lowerBound = factor * (modifiedSuccessRatio - difference); final double upperBound = factor * (modifiedSuccessRatio + difference); return new ConfidenceInterval(lowerBound, upperBound, confidenceLevel); }
@Override public final void compute() { if (input[0].isDefined() && input[1].isDefined() && input[2].isDefined()) { double param = a.getDouble(); double param2 = b.getDouble(); double val = c.getDouble(); try { NormalDistribution dist = getNormalDistribution(param, param2); num.setValue(dist.inverseCumulativeProbability(val)); } catch (Exception e) { num.setUndefined(); } } else { num.setUndefined(); } }