1 package JSci.maths.statistics; 2 3 import JSci.maths.ExtraMath; 4 5 10 public final class PoissonDistribution extends ProbabilityDistribution { 11 private double lambda; 12 13 17 public PoissonDistribution(double interval) { 18 if(interval<=0.0) 19 throw new OutOfRangeException("The interval should be (strictly) positive."); 20 lambda=interval; 21 } 22 25 public double getIntervalParameter() { 26 return lambda; 27 } 28 31 public double getMean() { 32 return lambda; 33 } 34 37 public double getVariance() { 38 return lambda; 39 } 40 46 public double probability(double X) { 47 checkRange(X,0.0,Double.MAX_VALUE); 48 return Math.exp(X*Math.log(lambda)-lambda-ExtraMath.logFactorial(X)); 49 } 50 55 public double cumulative(double X) { 56 checkRange(X,0.0,Double.MAX_VALUE); 57 double sum=0.0; 58 for(double i=0.0;i<=X;i++) 59 sum+=probability(i); 60 return sum; 61 } 62 66 public double inverse(double probability) { 67 checkRange(probability); 68 return Math.round(findRoot(probability,lambda,0.0,Double.MAX_VALUE)); 69 } 70 } 71 72 | Popular Tags |