Examples of PoissonDistribution

@version $Revision: 920852 $ $Date: 2010-03-09 13:53:44 +0100 (mar. 09 mars 2010) $
  • org.apache.commons.math3.distribution.PoissonDistribution
    pedia.org/wiki/Poisson_distribution">Poisson distribution (Wikipedia) @see Poisson distribution (MathWorld)
  • org.dmg.pmml.pmml_4_2.descr.PoissonDistribution
    3.org/2001/XMLSchema}anyType"> <sequence> <element ref="{http://www.dmg.org/PMML-4_2}Extension" maxOccurs="unbounded" minOccurs="0"/> </sequence> <attribute name="mean" use="required" type="{http://www.dmg.org/PMML-4_2}REAL-NUMBER" /> </restriction> </complexContent> </complexType>
  • org.jquantlib.math.distributions.PoissonDistribution
    Normal distribution function

    Given an integer {@latex$ k}, it returns its probability in a Poisson distribution. @author Dominik Holenstein


  • Examples of org.apache.commons.math.distribution.PoissonDistribution

       * @param numWords
       *          E[count] for each word
       */
      private Vector generateRandomDoc(int numWords, double sparsity) throws MathException {
        Vector v = new DenseVector(numWords);
        PoissonDistribution dist = new PoissonDistributionImpl(sparsity);
        for (int i = 0; i < numWords; i++) {
          // random integer
          v.setQuick(i, dist.inverseCumulativeProbability(random.nextDouble()) + 1);
        }
        return v;
      }
    View Full Code Here

    Examples of org.apache.commons.math.distribution.PoissonDistribution

       * @param numWords int number of words in the vocabulary
       * @param numWords E[count] for each word
       */
      private RandomAccessSparseVector generateRandomDoc(int numWords, double sparsity) throws MathException {
        RandomAccessSparseVector v = new RandomAccessSparseVector(numWords,(int)(numWords * sparsity));
        PoissonDistribution dist = new PoissonDistributionImpl(sparsity);
        for (int i = 0; i < numWords; i++) {
          // random integer
          v.set(i,dist.inverseCumulativeProbability(random.nextDouble()) + 1);
        }
        return v;
      }
    View Full Code Here

    Examples of org.apache.commons.math.distribution.PoissonDistribution

             *  Set up bins for chi-square test.
             *  Ensure expected counts are all at least minExpectedCount.
             *  Start with upper and lower tail bins.
             *  Lower bin = [0, lower); Upper bin = [upper, +inf).
             */
            PoissonDistribution poissonDistribution = new PoissonDistributionImpl(mean);
            int lower = 1;
            while (poissonDistribution.cumulativeProbability(lower - 1) * sampleSize < minExpectedCount) {
                lower++;
            }
            int upper = (int) (5 * mean)// Even for mean = 1, not much mass beyond 5
            while ((1 - poissonDistribution.cumulativeProbability(upper - 1)) * sampleSize < minExpectedCount) {
                upper--;
            }

            // Set bin width for interior bins.  For poisson, only need to look at end bins.
            int binWidth = 1;
            boolean widthSufficient = false;
            double lowerBinMass = 0;
            double upperBinMass = 0;
            while (!widthSufficient) {
                lowerBinMass = poissonDistribution.cumulativeProbability(lower, lower + binWidth - 1);
                upperBinMass = poissonDistribution.cumulativeProbability(upper - binWidth + 1, upper);
                widthSufficient = Math.min(lowerBinMass, upperBinMass) * sampleSize >= minExpectedCount;
                binWidth++;
            }

            /*
             *  Determine interior bin bounds.  Bins are
             *  [1, lower = binBounds[0]), [lower, binBounds[1]), [binBounds[1], binBounds[2]), ... ,
             *    [binBounds[binCount - 2], upper = binBounds[binCount - 1]), [upper, +inf)
             *
             */
            List<Integer> binBounds = new ArrayList<Integer>();
            binBounds.add(lower);
            int bound = lower + binWidth;
            while (bound < upper - binWidth) {
                binBounds.add(bound);
                bound += binWidth;
            }
            binBounds.add(bound);
            binBounds.add(upper);

            // Compute observed and expected bin counts
            final int binCount = binBounds.size() + 1;
            long[] observed = new long[binCount];
            double[] expected = new double[binCount];

            // Bottom bin
            observed[0] = 0;
            for (int i = 0; i < lower; i++) {
                observed[0] += frequency.getCount(i);
            }
            expected[0] = poissonDistribution.cumulativeProbability(lower - 1) * sampleSize;

            // Top bin
            observed[binCount - 1] = 0;
            for (int i = upper; i <= maxObservedValue; i++) {
                observed[binCount - 1] += frequency.getCount(i);
            }
            expected[binCount - 1] = (1 - poissonDistribution.cumulativeProbability(upper - 1)) * sampleSize;

            // Interior bins
            for (int i = 1; i < binCount - 1; i++) {
                observed[i] = 0;
                for (int j = binBounds.get(i - 1); j < binBounds.get(i); j++) {
                    observed[i] += frequency.getCount(j);
                } // Expected count is (mass in [binBounds[i], binBounds[i+1])) * sampleSize
                expected[i] = (poissonDistribution.cumulativeProbability(binBounds.get(i) - 1) -
                    poissonDistribution.cumulativeProbability(binBounds.get(i - 1) -1)) * sampleSize;
            }

            // Use chisquare test to verify that generated values are poisson(mean)-distributed
            ChiSquareTest chiSquareTest = new ChiSquareTestImpl();
            try {
    View Full Code Here

    Examples of org.apache.commons.math.distribution.PoissonDistribution

      public static Object statPoisson(Object[] args, XelContext ctx) throws MathException{
        double x = CommonFns.toNumber(args[0]).doubleValue();
        double mean = CommonFns.toNumber(args[1]).doubleValue();
        boolean isCumulative = ((Boolean)args[2]).booleanValue();
        DistributionFactory factory = DistributionFactory.newInstance();
        PoissonDistribution pd = factory.createPoissonDistribution(mean);
        if(isCumulative)
          return UtilFns.validateNumber(pd.cumulativeProbability(x));
        else
          return UtilFns.validateNumber(pd.probability(x));
      }
    View Full Code Here

    Examples of org.apache.commons.math.distribution.PoissonDistribution

       * @param numWords int number of words in the vocabulary
       * @param numWords E[count] for each word
       */
      private SparseVector generateRandomDoc(int numWords, double sparsity) throws MathException {
        SparseVector v = new SparseVector(numWords,(int)(numWords * sparsity));
        PoissonDistribution dist = new PoissonDistributionImpl(sparsity);
        for (int i = 0; i < numWords; i++) {
          // random integer
          v.set(i,dist.inverseCumulativeProbability(random.nextDouble()) + 1);
        }
        return v;
      }
    View Full Code Here

    Examples of org.apache.commons.math.distribution.PoissonDistribution

       * @param numWords int number of words in the vocabulary
       * @param numWords E[count] for each word
       */
      private Vector generateRandomDoc(int numWords, double sparsity) throws MathException {
        Vector v = new DenseVector(numWords);
        PoissonDistribution dist = new PoissonDistributionImpl(sparsity);
        for (int i = 0; i < numWords; i++) {
          // random integer
          v.setQuick(i, dist.inverseCumulativeProbability(random.nextDouble()) + 1);
        }
        return v;
      }
    View Full Code Here

    Examples of org.apache.commons.math.distribution.PoissonDistribution

             *  Set up bins for chi-square test.
             *  Ensure expected counts are all at least minExpectedCount.
             *  Start with upper and lower tail bins.
             *  Lower bin = [0, lower); Upper bin = [upper, +inf).
             */
            PoissonDistribution poissonDistribution = new PoissonDistributionImpl(mean);
            int lower = 1;
            while (poissonDistribution.cumulativeProbability(lower - 1) * sampleSize < minExpectedCount) {
                lower++;
            }
            int upper = (int) (5 * mean)// Even for mean = 1, not much mass beyond 5
            while ((1 - poissonDistribution.cumulativeProbability(upper - 1)) * sampleSize < minExpectedCount) {
                upper--;
            }

            // Set bin width for interior bins.  For poisson, only need to look at end bins.
            int binWidth = 1;
            boolean widthSufficient = false;
            double lowerBinMass = 0;
            double upperBinMass = 0;
            while (!widthSufficient) {
                lowerBinMass = poissonDistribution.cumulativeProbability(lower, lower + binWidth - 1);
                upperBinMass = poissonDistribution.cumulativeProbability(upper - binWidth + 1, upper);
                widthSufficient = FastMath.min(lowerBinMass, upperBinMass) * sampleSize >= minExpectedCount;
                binWidth++;
            }

            /*
             *  Determine interior bin bounds.  Bins are
             *  [1, lower = binBounds[0]), [lower, binBounds[1]), [binBounds[1], binBounds[2]), ... ,
             *    [binBounds[binCount - 2], upper = binBounds[binCount - 1]), [upper, +inf)
             *
             */
            List<Integer> binBounds = new ArrayList<Integer>();
            binBounds.add(lower);
            int bound = lower + binWidth;
            while (bound < upper - binWidth) {
                binBounds.add(bound);
                bound += binWidth;
            }
            binBounds.add(bound);
            binBounds.add(upper);

            // Compute observed and expected bin counts
            final int binCount = binBounds.size() + 1;
            long[] observed = new long[binCount];
            double[] expected = new double[binCount];

            // Bottom bin
            observed[0] = 0;
            for (int i = 0; i < lower; i++) {
                observed[0] += frequency.getCount(i);
            }
            expected[0] = poissonDistribution.cumulativeProbability(lower - 1) * sampleSize;

            // Top bin
            observed[binCount - 1] = 0;
            for (int i = upper; i <= maxObservedValue; i++) {
                observed[binCount - 1] += frequency.getCount(i);
            }
            expected[binCount - 1] = (1 - poissonDistribution.cumulativeProbability(upper - 1)) * sampleSize;

            // Interior bins
            for (int i = 1; i < binCount - 1; i++) {
                observed[i] = 0;
                for (int j = binBounds.get(i - 1); j < binBounds.get(i); j++) {
                    observed[i] += frequency.getCount(j);
                } // Expected count is (mass in [binBounds[i], binBounds[i+1])) * sampleSize
                expected[i] = (poissonDistribution.cumulativeProbability(binBounds.get(i) - 1) -
                    poissonDistribution.cumulativeProbability(binBounds.get(i - 1) -1)) * sampleSize;
            }

            // Use chisquare test to verify that generated values are poisson(mean)-distributed
            ChiSquareTest chiSquareTest = new ChiSquareTestImpl();
            try {
    View Full Code Here

    Examples of org.apache.commons.math3.distribution.PoissonDistribution

         * Devroye, Luc. (1981).<i>The Computer Generation of Poisson Random Variables</i>
         * <strong>Computing</strong> vol. 26 pp. 197-207.</li></ul></p>
         * @throws NotStrictlyPositiveException if {@code len <= 0}
         */
        public long nextPoisson(double mean) throws NotStrictlyPositiveException {
            return new PoissonDistribution(getRandomGenerator(), mean,
                    PoissonDistribution.DEFAULT_EPSILON,
                    PoissonDistribution.DEFAULT_MAX_ITERATIONS).sample();
        }
    View Full Code Here

    Examples of org.apache.commons.math3.distribution.PoissonDistribution

                // ignored
            }
           
            final double mean = 4.0d;
            final int len = 5;
            PoissonDistribution poissonDistribution = new PoissonDistribution(mean);
            Frequency f = new Frequency();
            randomData.reSeed(1000);
            for (int i = 0; i < largeSampleSize; i++) {
                f.addValue(randomData.nextPoisson(mean));
            }
            final long[] observed = new long[len];
            for (int i = 0; i < len; i++) {
                observed[i] = f.getCount(i + 1);
            }
            final double[] expected = new double[len];
            for (int i = 0; i < len; i++) {
                expected[i] = poissonDistribution.probability(i + 1) * largeSampleSize;
            }
           
            TestUtils.assertChiSquareAccept(expected, observed, 0.0001);
        }
    View Full Code Here

    Examples of org.apache.commons.math3.distribution.PoissonDistribution

             *  Set up bins for chi-square test.
             *  Ensure expected counts are all at least minExpectedCount.
             *  Start with upper and lower tail bins.
             *  Lower bin = [0, lower); Upper bin = [upper, +inf).
             */
            PoissonDistribution poissonDistribution = new PoissonDistribution(mean);
            int lower = 1;
            while (poissonDistribution.cumulativeProbability(lower - 1) * sampleSize < minExpectedCount) {
                lower++;
            }
            int upper = (int) (5 * mean)// Even for mean = 1, not much mass beyond 5
            while ((1 - poissonDistribution.cumulativeProbability(upper - 1)) * sampleSize < minExpectedCount) {
                upper--;
            }

            // Set bin width for interior bins.  For poisson, only need to look at end bins.
            int binWidth = 0;
            boolean widthSufficient = false;
            double lowerBinMass = 0;
            double upperBinMass = 0;
            while (!widthSufficient) {
                binWidth++;
                lowerBinMass = poissonDistribution.cumulativeProbability(lower - 1, lower + binWidth - 1);
                upperBinMass = poissonDistribution.cumulativeProbability(upper - binWidth - 1, upper - 1);
                widthSufficient = FastMath.min(lowerBinMass, upperBinMass) * sampleSize >= minExpectedCount;
            }

            /*
             *  Determine interior bin bounds.  Bins are
             *  [1, lower = binBounds[0]), [lower, binBounds[1]), [binBounds[1], binBounds[2]), ... ,
             *    [binBounds[binCount - 2], upper = binBounds[binCount - 1]), [upper, +inf)
             *
             */
            List<Integer> binBounds = new ArrayList<Integer>();
            binBounds.add(lower);
            int bound = lower + binWidth;
            while (bound < upper - binWidth) {
                binBounds.add(bound);
                bound += binWidth;
            }
            binBounds.add(upper); // The size of bin [binBounds[binCount - 2], upper) satisfies binWidth <= size < 2*binWidth.

            // Compute observed and expected bin counts
            final int binCount = binBounds.size() + 1;
            long[] observed = new long[binCount];
            double[] expected = new double[binCount];

            // Bottom bin
            observed[0] = 0;
            for (int i = 0; i < lower; i++) {
                observed[0] += frequency.getCount(i);
            }
            expected[0] = poissonDistribution.cumulativeProbability(lower - 1) * sampleSize;

            // Top bin
            observed[binCount - 1] = 0;
            for (int i = upper; i <= maxObservedValue; i++) {
                observed[binCount - 1] += frequency.getCount(i);
            }
            expected[binCount - 1] = (1 - poissonDistribution.cumulativeProbability(upper - 1)) * sampleSize;

            // Interior bins
            for (int i = 1; i < binCount - 1; i++) {
                observed[i] = 0;
                for (int j = binBounds.get(i - 1); j < binBounds.get(i); j++) {
                    observed[i] += frequency.getCount(j);
                } // Expected count is (mass in [binBounds[i-1], binBounds[i])) * sampleSize
                expected[i] = (poissonDistribution.cumulativeProbability(binBounds.get(i) - 1) -
                    poissonDistribution.cumulativeProbability(binBounds.get(i - 1) -1)) * sampleSize;
            }

            // Use chisquare test to verify that generated values are poisson(mean)-distributed
            ChiSquareTest chiSquareTest = new ChiSquareTest();
                // Fail if we can reject null hypothesis that distributions are the same
    View Full Code Here
    TOP
    Copyright © 2018 www.massapi.com. All rights reserved.
    All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.