Package cern.jet.stat.quantile

Source Code of cern.jet.stat.quantile.Quantile1Test

package cern.jet.stat.quantile;

import cern.jet.random.Uniform;
import cern.jet.random.engine.DRand;
import hep.aida.bin.DynamicBin1D;
import hep.aida.bin.QuantileBin1D;

import java.text.DecimalFormat;
import java.util.Date;

/**
* A class to test the QuantileBin1D code.
* The command line is "java Quantile1Test numExamples N"
* where numExamples is the number of random (Gaussian) numbers to
* be presented to the QuantileBin1D.add method, and N is
* the absolute maximum number of examples the QuantileBin1D is setup
* to receive in the constructor.  N can be set to "L", which will use
* Long.MAX_VALUE, or to "I", which will use Integer.MAX_VALUE, or to
* any positive long value.
*/
public class Quantile1Test {
    public static void main(String[] argv) {
  /*
   * Get the number of examples from the first argument
   */
  int numExamples = 0;
  try {
      numExamples = Integer.parseInt(argv[0]);
  }
  catch (Exception e) {
      System.err.println("Unable to parse input line count argument");
      System.err.println(e.getMessage());
      System.exit(1);
  }
  System.out.println("Got numExamples=" + numExamples);

  /*
   * Get N from the second argument
   */
  long N = 0;
  try {
      if (argv[1].equals("L")) {
    N = Long.MAX_VALUE;
      } else if (argv[1].equals("I")) {
    N = (long)Integer.MAX_VALUE;
      } else {
    N = Long.parseLong(argv[1]);
      }
  }
  catch (Exception e) {
      System.err.println("Error parsing flag for N");
      System.err.println(e.getMessage());
      System.exit(1);
  }
  System.out.println("Got N=" + N);

  /*
   * Set up the QuantileBin1D object
   */
  DRand rand = new DRand(new Date());
  QuantileBin1D qAccum = new QuantileBin1D(false,
             N,
             1.e-4,
             1.e-3,
             200,
             rand,
             false,
             false,
             2);

  DynamicBin1D dbin = new DynamicBin1D();
 
  /*
   * Use a new random number generator to generate numExamples
   * random gaussians, and add them to the QuantileBin1D
   */
  Uniform dataRand = new Uniform(new DRand(7757));
  for (int i = 1; i <= numExamples; i++) {
    double gauss = dataRand.nextDouble();
      qAccum.add(gauss);
      dbin.add(gauss);
  }
 
  /*
   * print out the percentiles
   */
  DecimalFormat fmt = new DecimalFormat("0.00");
  System.out.println();
  //int step = 1;
  int step = 10;
  for (int i = 1; i < 100; ) {
      double percent = ((double)i) * 0.01;
      double quantile = qAccum.quantile(percent);
      System.out.println(fmt.format(percent) + "  " + quantile + ",  " + dbin.quantile(percent)+ ",  " + (dbin.quantile(percent)-quantile));
      i = i + step;
  }
}
}


TOP

Related Classes of cern.jet.stat.quantile.Quantile1Test

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.