Example usage for org.apache.commons.math.distribution PoissonDistributionImpl probability

List of usage examples for org.apache.commons.math.distribution PoissonDistributionImpl probability

Introduction

In this page you can find the example usage for org.apache.commons.math.distribution PoissonDistributionImpl probability.

Prototype

public double probability(int x) 

Source Link

Document

The probability mass function P(X = x) for a Poisson distribution.

Usage

From source file:dr.math.distributions.PoissonDistribution.java

public static double pdf(double x, double mean) {
    PoissonDistributionImpl dist = new PoissonDistributionImpl(mean);
    return dist.probability(x);
}

From source file:dr.math.distributions.PoissonDistribution.java

public static double logPdf(double x, double mean) {
    PoissonDistributionImpl dist = new PoissonDistributionImpl(mean);
    double pdf = dist.probability(x);
    if (pdf == 0 || Double.isNaN(pdf)) { // bad estimate
        return x * Math.log(mean) - Poisson.gammln(x + 1) - mean;
    }/*from w  w w  . ja  va 2s.  c  o  m*/
    return Math.log(pdf);

}

From source file:juicebox.tools.utils.common.ArrayTools.java

/**
 * poisson.pdf(k) = exp(-mu) * mu**k / k!
 *
 * @param index// w  w  w  .j  ava 2  s.co m
 * @param width
 * @return
 */
public static double[] generatePoissonPMF(int index, int width) {
    double mu = Math.pow(2.0, (index + 1.0) / 3.0);
    double[] poissonPMF = new double[width];

    PoissonDistributionImpl poissonDistribution = new PoissonDistributionImpl(mu);

    // use dynamic programming to grow poisson PMF
    for (int k = 0; k < width; k++) {
        poissonPMF[k] = poissonDistribution.probability(k); // the total is for scaling
    }

    return poissonPMF;
}

From source file:desmoj.core.dist.DiscreteDistPoisson.java

/**
 * Abstract method to map a double <code>p</code> from 0...1 to the 
 * distribution's domain by determining the value x that satisfies
 * <code>P(X &lt; x) = p</code>.
 * //from   w w  w. j  a v  a2 s .co m
 * @param p double: A value between 0 and 1
 * 
 * @return Long : The value x that satisfies <code>P(X &lt; x) = p</code>
 */
public Long getInverseOfCumulativeProbabilityFunction(double p) {

    if (p == 1.0)
        return Long.MAX_VALUE; // should be infinity, can't get closer

    PoissonDistributionImpl poi = new PoissonDistributionImpl(this.getMean());

    Long x = 0l;
    double cummulative_prob = 0;

    do {
        cummulative_prob += poi.probability(x);
        if (cummulative_prob >= p)
            return x;
        x++;
    } while (x < 10000);

    return Long.MAX_VALUE; // wrong, just an approximation
}