/** * Generates a random value from the {@link BinomialDistribution Binomial Distribution}. * * @param numberOfTrials number of trials of the Binomial distribution * @param probabilityOfSuccess probability of success of the Binomial distribution * @return random value sampled from the Binomial(numberOfTrials, probabilityOfSuccess) distribution */ public int nextBinomial(int numberOfTrials, double probabilityOfSuccess) { return new BinomialDistribution(getRandomGenerator(), numberOfTrials, probabilityOfSuccess).sample(); }
BinomialDistribution binomial = new BinomialDistribution(1000, 0.5); int lowerBound = binomial.inverseCumulativeProbability(0.000001); int upperBound = binomial.inverseCumulativeProbability(0.999999); binomial = new BinomialDistribution(1000, 2.0 / 3.0); lowerBound = binomial.inverseCumulativeProbability(0.000001); upperBound = binomial.inverseCumulativeProbability(0.999999);
int totalNew = testCount + newTrainInGen; IntegerDistribution dist = new BinomialDistribution(random, totalNew, TEST_FRACTION); checkDiscreteProbability(testCount, dist);
long[] idx = idxIter.next(); org.apache.commons.math3.distribution.BinomialDistribution binomialDistribution = new org.apache.commons.math3.distribution.BinomialDistribution( (RandomGenerator) Nd4j.getRandom(), numberOfTrials, p.getDouble(idx)); new org.apache.commons.math3.distribution.BinomialDistribution( (RandomGenerator) Nd4j.getRandom(), numberOfTrials, probabilityOfSuccess);
int count = yellowCount + redCount; assertGreater(count, 0); IntegerDistribution dist = new BinomialDistribution(RandomManager.getRandom(), count, 0.9); if ("r+".equals(nodeID)) {
BinomialDistribution binomial = new BinomialDistribution(1000, 2.0 / 3.0); int lowerBound = binomial.inverseCumulativeProbability(0.000001); int upperBound = binomial.inverseCumulativeProbability(0.999999);
final BinomialDistribution distribution = new BinomialDistribution(null, numberOfTrials, probability); switch (alternativeHypothesis) { case GREATER_THAN:
BinomialDistribution binomial = new BinomialDistribution(4000, 1.0 / 4.0); int lowerBound = binomial.inverseCumulativeProbability(0.000001); int upperBound = binomial.inverseCumulativeProbability(0.999999);
/** Calculate a p-value for Fisher's Exact Test. */ private double test(int a, int b, int c, int d) { BinomialDistribution dist = new BinomialDistribution(b + c, 0.5); double pValue = dist.cumulativeProbability(c); return pValue; }
@Override public Object doWork(Object first, Object second) throws IOException{ if(null == first){ throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - null found for the first value",toExpression(constructingFactory))); } if(null == second){ throw new IOException(String.format(Locale.ROOT,"Invalid expression %s - null found for the second value",toExpression(constructingFactory))); } Number numberOfTrials = (Number)first; Number successProb = (Number)second; return new BinomialDistribution(numberOfTrials.intValue(), successProb.doubleValue()); } }
/** * Generates a random value from the {@link BinomialDistribution Binomial Distribution}. * * @param numberOfTrials number of trials of the Binomial distribution * @param probabilityOfSuccess probability of success of the Binomial distribution * @return random value sampled from the Binomial(numberOfTrials, probabilityOfSuccess) distribution */ public int nextBinomial(int numberOfTrials, double probabilityOfSuccess) { return new BinomialDistribution(getRandomGenerator(), numberOfTrials, probabilityOfSuccess).sample(); }
/** * @param param * number of trials * @param param2 * prob. of success * @return binomial distribution */ protected BinomialDistribution getBinomialDistribution(int param, double param2) { if (binomial == null || binomial.getNumberOfTrials() != param || binomial.getProbabilityOfSuccess() != param2) { binomial = new BinomialDistribution(param, param2); } return binomial; }
/** * Generates a random value from the {@link BinomialDistribution Binomial Distribution}. * * @param numberOfTrials number of trials of the Binomial distribution * @param probabilityOfSuccess probability of success of the Binomial distribution * @return random value sampled from the Binomial(numberOfTrials, probabilityOfSuccess) distribution */ public int nextBinomial(int numberOfTrials, double probabilityOfSuccess) { return new BinomialDistribution(getRandomGenerator(), numberOfTrials, probabilityOfSuccess).sample(); }
final Random randomNumberGenerator = new Random(randomSeed); final RandomGenerator rg = new Well19937c(randomSeed); final BinomialDistribution bd = new BinomialDistribution(rg, depth, alleleFraction);
/** * get a peptide score based on peakDepth. */ public double getScore(ProductIonSet productIonSet, int peakDepth, int splitSize) { List<PeakSet> depthPeakSetList = getDepthPeakSetList(peakDepth, splitSize); PeakSet allDepthPeakSet = new PeakSet(); for (PeakSet depthPeakSet : depthPeakSetList) { allDepthPeakSet.addAll(depthPeakSet); } ProductIonSet matchedSet = getMatchedSet(productIonSet, allDepthPeakSet); int N = productIonSet.size(); int n = matchedSet.size(); double p = getProbability(peakDepth, splitSize); BinomialDistribution distribution = new BinomialDistribution(N, p); // get cumulative probability which n-1 < x <= N, that means n <= x <= N double cumulative = distribution.cumulativeProbability(n-1, N); return (-10) * Math.log10(cumulative); }
/** * get a peptide score based on peakDepth. */ public double getScore(ProductIonSet productIonSet, int peakDepth, int splitSize) { List<PeakSet> depthPeakSetList = getDepthPeakSetList(peakDepth, splitSize); PeakSet allDepthPeakSet = new PeakSet(); for (PeakSet depthPeakSet : depthPeakSetList) { allDepthPeakSet.addAll(depthPeakSet); } ProductIonSet matchedSet = getMatchedSet(productIonSet, allDepthPeakSet); int N = productIonSet.size(); int n = matchedSet.size(); double p = getProbability(peakDepth, splitSize); BinomialDistribution distribution = new BinomialDistribution(N, p); // get cumulative probability which n-1 < x <= N, that means n <= x <= N double cumulative = distribution.cumulativeProbability(n-1, N); return (-10) * Math.log10(cumulative); }
@Test public void logPmfIsCorrectForKnownScalarValues() { double p = 0.25; int n = 5; BinomialVertex testBinomialVertex = new BinomialVertex(p, n); BinomialDistribution distribution = new BinomialDistribution(n, p); for (int i = 0; i < n; i++) { double actual = testBinomialVertex.logPmf(i); double expected = distribution.logProbability(i); assertEquals(expected, actual, 1e-6); } }
@Test public void logPmfIsCorrectForKnownVectorValues() { double p = 0.25; int n = 100; int k1 = 20; int k2 = 80; BinomialVertex testBinomialVertex = new BinomialVertex(new long[]{1, 2}, p, n); BinomialDistribution distribution = new BinomialDistribution(n, p); double actual = testBinomialVertex.logPmf(new int[]{k1, k2}); double expected = distribution.logProbability(k1) + distribution.logProbability(k2); assertEquals(expected, actual, 1e-6); } }
@Override public IntegerDistribution deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { JsonNode node = p.getCodec().readTree(p); String simpleName = node.get("distribution").asText(); switch (simpleName) { case "BinomialDistribution": return new BinomialDistribution(node.get("trials").asInt(), node.get("p").asDouble()); case "GeometricDistribution": return new GeometricDistribution(node.get("p").asDouble()); case "HypergeometricDistribution": return new HypergeometricDistribution(node.get("populationSize").asInt(), node.get("numberOfSuccesses").asInt(), node.get("sampleSize").asInt()); case "PascalDistribution": return new PascalDistribution(node.get("r").asInt(), node.get("p").asDouble()); case "PoissonDistribution": return new PoissonDistribution(node.get("p").asDouble()); case "UniformIntegerDistribution": return new UniformIntegerDistribution(node.get("lower").asInt(), node.get("upper").asInt()); case "ZipfDistribution": return new ZipfDistribution(node.get("numElements").asInt(), node.get("exponent").asDouble()); default: throw new RuntimeException("Unknown or not supported distribution: " + simpleName); } } }
@Override public IntegerDistribution deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { JsonNode node = p.getCodec().readTree(p); String simpleName = node.get("distribution").asText(); switch (simpleName) { case "BinomialDistribution": return new BinomialDistribution(node.get("trials").asInt(), node.get("p").asDouble()); case "GeometricDistribution": return new GeometricDistribution(node.get("p").asDouble()); case "HypergeometricDistribution": return new HypergeometricDistribution(node.get("populationSize").asInt(), node.get("numberOfSuccesses").asInt(), node.get("sampleSize").asInt()); case "PascalDistribution": return new PascalDistribution(node.get("r").asInt(), node.get("p").asDouble()); case "PoissonDistribution": return new PoissonDistribution(node.get("p").asDouble()); case "UniformIntegerDistribution": return new UniformIntegerDistribution(node.get("lower").asInt(), node.get("upper").asInt()); case "ZipfDistribution": return new ZipfDistribution(node.get("numElements").asInt(), node.get("exponent").asDouble()); default: throw new RuntimeException("Unknown or not supported distribution: " + simpleName); } } }