Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.math.random
Class EmpiricalDistributionImpl

    java.lang.Object
      org.apache.commons.math.random.EmpiricalDistributionImpl

All Implemented Interfaces:
  EmpiricalDistribution, Serializable

public class EmpiricalDistributionImpl
extends Object
implements Serializable, EmpiricalDistribution

Implements `EmpiricalDistribution` interface. This implementation uses what amounts to the Variable Kernel Method with Gaussian smoothing:

Digesting the input file

1. Pass the file once to compute min and max.
2. Divide the range from min-max into `binCount` "bins."
3. Pass the data file again, computing bin counts and univariate statistics (mean, std dev.) for each of the bins
4. Divide the interval (0,1) into subintervals associated with the bins, with the length of a bin's subinterval proportional to its count.

Generating random values from the distribution

1. Generate a uniformly distributed value in (0,1)
2. Select the subinterval to which the value belongs.
3. Generate a random Gaussian value with mean = mean of the associated bin and std dev = std dev of associated bin.

USAGE NOTES:

- The `binCount` is set by default to 1000. A good rule of thumb is to set the bin count to approximately the length of the input file divided by 10.
- The input file must be a plain text file containing one valid numeric entry per line.

Version:
  $Revision: 1.30 $ $Date: 2004/10/08 05:08:16 $
See Also:
  Serialized Form

Field Summary
`(package private) SummaryStatistics` | `sampleStats` Sample statistics
`(package private) static long` | `serialVersionUID` Serializable version identifier

Constructor Summary
`EmpiricalDistributionImpl()` Creates a new EmpiricalDistribution with the default bin count.
`EmpiricalDistributionImpl(int binCount)` Creates a new EmpiricalDistribution with the specified bin count.

Method Summary
`int` | `getBinCount()` Returns the number of bins.
`List` | `getBinStats()` Returns an ArrayList of `SummaryStatistics` instances containing statistics describing the values in each of the bins.
`double` | `getNextValue()` Generates a random value from this distribution.
`StatisticalSummary` | `getSampleStats()` Returns a `StatisticalSummary` describing this distribution.
`double[]` | `getUpperBounds()` Returns the array of upper bounds for the bins.
`boolean` | `isLoaded()` Property indicating whether or not the distribution has been loaded.
`void` | `load(double[] in)` Computes the empirical distribution from the provided array of numbers.
`void` | `load(File file)` Computes the empirical distribution from the input file.
`void` | `load(URL url)` Computes the empirical distribution using data read from a URL.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### serialVersionUID

    static final long serialVersionUID

  Serializable version identifier

  See Also:
    Constant Field Values

### sampleStats

    SummaryStatistics sampleStats

  Sample statistics

Constructor Detail

### EmpiricalDistributionImpl

    public EmpiricalDistributionImpl()

  Creates a new EmpiricalDistribution with the default bin count.

### EmpiricalDistributionImpl

    public EmpiricalDistributionImpl(int binCount)

  Creates a new EmpiricalDistribution with the specified bin count.

Parameters:
  `binCount` - number of bins

Method Detail

### load

    public void load(double[] in)

  Computes the empirical distribution from the provided array of numbers.

  Specified by:
    `load` in interface `EmpiricalDistribution`
  Parameters:
    `in` - the input data array

### load

    public void load(URL url)
              throws IOException

  Computes the empirical distribution using data read from a URL.

  Specified by:
    `load` in interface `EmpiricalDistribution`
  Parameters:
    `url` - url of the input file
  Throws:
    `IOException` - if an IO error occurs

### load

    public void load(File file)
              throws IOException

  Computes the empirical distribution from the input file.

  Specified by:
    `load` in interface `EmpiricalDistribution`
  Parameters:
    `file` - the input file
  Throws:
    `IOException` - if an IO error occurs

### getNextValue

    public double getNextValue()
                        throws IllegalStateException

  Generates a random value from this distribution.

  Specified by:
    `getNextValue` in interface `EmpiricalDistribution`
  Returns:
    the random value.
  Throws:
    `IllegalStateException` - if the distribution has not been loaded

### getSampleStats

    public StatisticalSummary getSampleStats()

  Returns a `StatisticalSummary` describing this distribution. Preconditions:
  - the distribution must be loaded before invoking this method

  Specified by:
    `getSampleStats` in interface `EmpiricalDistribution`
  Returns:
    the sample statistics
  Throws:
    `IllegalStateException` - if the distribution has not been loaded

### getBinCount

    public int getBinCount()

  Returns the number of bins.

  Specified by:
    `getBinCount` in interface `EmpiricalDistribution`
  Returns:
    the number of bins.

### getBinStats

    public List getBinStats()

  Returns an ArrayList of `SummaryStatistics` instances containing statistics describing the values in each of the bins. The ArrayList is indexed on the bin number.

  Specified by:
    `getBinStats` in interface `EmpiricalDistribution`
  Returns:
    List of bin statistics.

### getUpperBounds

    public double[] getUpperBounds()

  Returns the array of upper bounds for the bins. Bins are:
  [min,upperBounds[0]],(upperBounds[0],upperBounds[1]],..., (upperBounds[binCount-1],max]

  Specified by:
    `getUpperBounds` in interface `EmpiricalDistribution`
  Returns:
    array of bin upper bounds

### isLoaded

    public boolean isLoaded()

  Property indicating whether or not the distribution has been loaded.

  Specified by:
    `isLoaded` in interface `EmpiricalDistribution`
  Returns:
    true if the distribution has been loaded

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2003-2004 The Apache Software Foundation. All Rights Reserved.