SSJ
V. 2.6.

umontreal.iro.lecuyer.probdist
Class DistributionFactory

java.lang.Object
  extended by umontreal.iro.lecuyer.probdist.DistributionFactory

public class DistributionFactory
extends Object

This class implements a string API for the package probdist. It uses Java Reflection to allow the creation of probability distribution objects from a string. This permits one to obtain distribution specifications from a file or dynamically from user input during program execution. This string API is similar to that of UNURAN.

The (static) methods of this class invoke the constructor specified in the string. For example,

d = DistributionFactory.getContinuousDistribution ("NormalDist (0.0, 2.5)");
is equivalent to
d = NormalDist (0.0, 2.5);

The string that specifies the distribution (i.e., the formal parameter str of the methods) must be a valid call of the constructor of a class that extends ContinuousDistribution or DiscreteDistribution, and all parameter values must be numerical values (variable names are not allowed).

The distribution parameters can also be estimated from a set of observations instead of being passed to the constructor. In that case, one passes the vector of observations, and the constructor estimates the parameters by the maximum likelihood method.


Method Summary
static ContinuousDistribution getContinuousDistribution(String str)
          Uses the Java Reflection API to construct a ContinuousDistribution object by executing the code contained in the string str.
static DiscreteDistribution getDiscreteDistribution(String str)
          Same as getContinuousDistribution, but for discrete distributions over the real numbers.
static DiscreteDistributionInt getDiscreteDistributionInt(String str)
          Same as getContinuousDistribution, but for discrete distributions over the integers.
static Distribution getDistribution(String str)
           
static
<T extends ContinuousDistribution>
T
getDistributionMLE(Class<T> distClass, double[] x, int n)
           
static
<T extends DiscreteDistributionInt>
T
getDistributionMLE(Class<T> distClass, int[] x, int n)
           
static ContinuousDistribution getDistributionMLE(String distName, double[] x, int n)
           
static DiscreteDistributionInt getDistributionMLE(String distName, int[] x, int n)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getDistribution

public static Distribution getDistribution(String str)

getDistributionMLE

public static ContinuousDistribution getDistributionMLE(String distName,
                                                        double[] x,
                                                        int n)

getDistributionMLE

public static DiscreteDistributionInt getDistributionMLE(String distName,
                                                         int[] x,
                                                         int n)

getDistributionMLE

public static <T extends ContinuousDistribution> T getDistributionMLE(Class<T> distClass,
                                                                      double[] x,
                                                                      int n)

getDistributionMLE

public static <T extends DiscreteDistributionInt> T getDistributionMLE(Class<T> distClass,
                                                                       int[] x,
                                                                       int n)

getContinuousDistribution

public static ContinuousDistribution getContinuousDistribution(String str)
Uses the Java Reflection API to construct a ContinuousDistribution object by executing the code contained in the string str. This code should be a valid invocation of the constructor of a ContinuousDistribution object. This method throws exceptions if it cannot parse the given string and returns null if the distribution object could not be created due to a Java-specific instantiation problem.

Parameters:
str - string that contains a call to the constructor of a continuous distribution
Returns:
a continuous distribution object or null if it could not be instantiated
Throws:
IllegalArgumentException - if parsing problems occured when reading str
ClassCastException - if the distribution string does not represent a continuous distribution

getDiscreteDistribution

public static DiscreteDistribution getDiscreteDistribution(String str)
Same as getContinuousDistribution, but for discrete distributions over the real numbers.

Parameters:
str - string that contains a call to the constructor of a discrete distribution
Returns:
a discrete distribution object, or null if it could not be instantiated
Throws:
IllegalArgumentException - if parsing problems occured when reading str
ClassCastException - if the distribution string does not represent a discrete distribution

getDiscreteDistributionInt

public static DiscreteDistributionInt getDiscreteDistributionInt(String str)
Same as getContinuousDistribution, but for discrete distributions over the integers.

Parameters:
str - string that contains a call to the constructor of a discrete distribution
Returns:
a discrete distribution object, or null if it could not be instantiated
Throws:
IllegalArgumentException - if parsing problems occured when reading str
ClassCastException - if the distribution string does not represent a discrete distribution

SSJ
V. 2.6.

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.