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.math3.distribution.PoissonDistribution

        int[] count = new int[(int) Math.max(10, 5 * alpha)];
        for (int i = 0; i < 10000; i++) {
          count[pd.sample().intValue()]++;
        }

        IntegerDistribution ref = new PoissonDistribution(RandomUtils.getRandom().getRandomGenerator(),
                                                          alpha,
                                                          PoissonDistribution.DEFAULT_EPSILON,
                                                          PoissonDistribution.DEFAULT_MAX_ITERATIONS);
        for (int i = 0; i < count.length; i++) {
          assertEquals(ref.probability(i), count[i] / 10000.0, 2.0e-2);
        }
      }
    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(getRan(), mean,
                    PoissonDistribution.DEFAULT_EPSILON,
                    PoissonDistribution.DEFAULT_MAX_ITERATIONS).sample();
        }
    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

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

        @Test
        /**
         * MATH-720
         */
        public void testReseed() {
            PoissonDistribution x = new PoissonDistribution(3.0);
            x.reseedRandomGenerator(0);
            final double u = x.sample();
            PoissonDistribution y = new PoissonDistribution(3.0);
            y.reseedRandomGenerator(0);
            Assert.assertEquals(u, y.sample(), 0);
        }
    View Full Code Here

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

        System.gc();
        long startMemory = JVMUtils.getUsedMemory();

        RandomGenerator random = RandomManager.getRandom();
        PoissonDistribution itemPerUserDist = new PoissonDistribution(
            random,
            AVG_ITEMS_PER_USER,
            PoissonDistribution.DEFAULT_EPSILON,
            PoissonDistribution.DEFAULT_MAX_ITERATIONS);
        ALSServingModel model = new ALSServingModel(FEATURES, true);

        long totalEntries = 0;
        for (int user = 0; user < USERS; user++) {
          String userID = "U" + user;
          model.setUserVector(userID, randomVector(random));
          int itemsPerUser = itemPerUserDist.sample();
          totalEntries += itemsPerUser;
          Collection<String> knownIDs = new ArrayList<>(itemsPerUser);
          for (int i = 0; i < itemsPerUser; i++) {
            knownIDs.add("I" + random.nextInt(ITEMS));
          }
    View Full Code Here

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

       * @return <code>true</code> if the observations
       */
      static boolean isPoissonProcess(Frequency observations, double intensity,
          double confidence, long scenarioLength) {
        final double lengthFactor = scenarioLength / 60d;
        final PoissonDistribution pd = new PoissonDistribution(intensity
            * lengthFactor);
        final long observed[] = new long[observations.getUniqueCount()];
        final double[] expected = new double[observations.getUniqueCount()];

        final Iterator<?> it = observations.valuesIterator();
        int index = 0;
        while (it.hasNext()) {
          final Long l = (Long) it.next();
          observed[index] = observations.getCount(l);
          expected[index] = pd.probability(l.intValue())
              * observations.getSumFreq();
          if (expected[index] == 0) {
            return false;
          }
          index++;
    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

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

        @Test
        /**
         * MATH-720
         */
        public void testReseed() {
            PoissonDistribution x = new PoissonDistribution(3.0);
            x.reseedRandomGenerator(0);
            final double u = x.sample();
            PoissonDistribution y = new PoissonDistribution(3.0);
            y.reseedRandomGenerator(0);
            Assert.assertEquals(u, y.sample(), 0);
        }
    View Full Code Here

    Examples of org.dmg.pmml.pmml_4_2.descr.PoissonDistribution

        public String extractDistributionParameters( Object d ) {
            if ( d instanceof GaussianDistribution ) {
                GaussianDistribution gd = (GaussianDistribution) d;
                return "new Double[] { " + gd.getMean() + ", " + gd.getVariance() + " }";
            } else if ( d instanceof PoissonDistribution ) {
                PoissonDistribution pd = (PoissonDistribution) d;
                return "new Double[] { " + pd.getMean() + " }";
            } else if ( d instanceof UniformDistribution ) {
                UniformDistribution ud = (UniformDistribution) d;
                return "new Double[] { " + ud.getLower() + ", " + ud.getUpper() + " }";
            } else if ( d instanceof AnyDistribution ) {
                AnyDistribution ad = (AnyDistribution) d;
    View Full Code Here

    Examples of org.jquantlib.math.distributions.PoissonDistribution

            final Date volRefDate = process.blackVolatility().currentLink().referenceDate();
            final double /* @Time */t = voldc.yearFraction(volRefDate, A.exercise.lastDate());
            final double /* @Rate */riskFreeRate = -Math.log(process.riskFreeRate().currentLink().discount(A.exercise.lastDate())) / t;
            final Date rateRefDate = process.riskFreeRate().currentLink().referenceDate();

            final PoissonDistribution p = new PoissonDistribution(lambda * t);

            final Handle<? extends Quote> stateVariable = process.stateVariable();
            final Handle<YieldTermStructure> dividendTS = process.dividendYield();
            final RelinkableHandle<YieldTermStructure> riskFreeTS =
                new RelinkableHandle<YieldTermStructure>(process.riskFreeRate().currentLink());
            final RelinkableHandle<BlackVolTermStructure> volTS =
                new RelinkableHandle<BlackVolTermStructure>(process.blackVolatility().currentLink());

            final GeneralizedBlackScholesProcess bsProcess =
                new GeneralizedBlackScholesProcess(stateVariable, dividendTS, riskFreeTS, volTS);

            final AnalyticEuropeanEngine baseEngine = new AnalyticEuropeanEngine(bsProcess);

            final VanillaOption.ArgumentsImpl baseArguments = (VanillaOption.ArgumentsImpl) baseEngine.getArguments();

            baseArguments.payoff = A.payoff;
            baseArguments.exercise = A.exercise;

            baseArguments.validate();

            final VanillaOption.ResultsImpl baseResults = (VanillaOption.ResultsImpl) baseEngine.getResults();

            R.value = 0.0;
            greeks.delta = 0.0;
            greeks.gamma = 0.0;
            greeks.theta = 0.0;
            greeks.vega = 0.0;
            greeks.rho = 0.0;
            greeks.dividendRho = 0.0;


            double /* @Real */ r, v, weight, lastContribution = 1.0;
            double /* @Real */ theta_correction;

            int i;
            for (i = 0; lastContribution > relativeAccuracy && i < maxIterations || i < (int)(lambda*t); i++) {

                // constant vol/rate assumption. It should be relaxed
                v = Math.sqrt((variance + i * jumpSquareVol) / t);
                r = riskFreeRate - process.jumpIntensity().currentLink().value() * k + i * muPlusHalfSquareVol / t;
                riskFreeTS.linkTo(new FlatForward(rateRefDate, r, voldc));
                volTS.linkTo(new BlackConstantVol(rateRefDate, volcal, v, voldc));

                baseArguments.validate();
                baseEngine.calculate();

                weight = p.op(i);
                R.value += weight * baseResults.value;
                greeks.delta += weight * baseResults.greeks().delta;
                greeks.gamma += weight * baseResults.greeks().gamma;
                greeks.vega += weight * (Math.sqrt(variance / t) / v) * baseResults.greeks().vega;
                // theta modified
                theta_correction = baseResults.greeks().vega * ((i * jumpSquareVol) / (2.0 * v * t * t)) + baseResults.greeks().rho * i
                * muPlusHalfSquareVol / (t * t);
                greeks.theta += weight * (baseResults.greeks().theta + theta_correction + lambda * baseResults.value);
                if (i != 0) {
                    greeks.theta -= (p.op(i-1) * lambda * baseResults.value);
                }
                // end theta calculation
                greeks.rho += weight * baseResults.greeks().rho;
                greeks.dividendRho += weight * baseResults.greeks().dividendRho;

     
    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.