public class InverseDistFromDensity extends ContinuousDistribution
The algorithm may fail for some distributions for which the density becomes infinite at a point (for ex. the Gamma and the Beta distributions with α < 1) if one chooses too high a precision (a too small eps, for ex. ε∼10-15). However, it should work also for continuous densities with finite discontinuities.
While the setup time for this class is relatively slow, the numerical inversion
is extremely fast and practically independent of the required precision
and of the specific distribution. For comparisons between the times
of standard inversion and inversion from this class as well as
comparisons between setup times, see the introduction in class
InverseFromDensityGen
from package randvar.
Thus if only a few inverses are needed, then using this class is not efficient because of the slow set-up. But if one wants to call inverseF thousands of times or more, then using this class will be very efficient.
decPrec| Constructor and Description |
|---|
InverseDistFromDensity(ContinuousDistribution dist,
double xc,
double eps,
int order)
Given a continuous distribution dist with a well-defined
density method, this class will compute tables for the numerical inverse of
the distribution.
|
InverseDistFromDensity(MathFunction dens,
double xc,
double eps,
int order,
double xleft,
double xright)
Given a continuous probability density dens,
this class will compute tables for the numerical inverse of
the distribution.
|
| Modifier and Type | Method and Description |
|---|---|
double |
cdf(double x)
Computes the distribution function at x.
|
double |
density(double x)
Computes the probability density at x.
|
double |
getEpsilon()
Returns the u-resolution eps associated with this object.
|
int |
getOrder()
Returns the order associated with this object.
|
double[] |
getParams()
Return a table containing the parameters of the current distribution.
|
double |
getXc()
Returns the xc given in the constructor.
|
double |
inverseF(double u)
Computes the inverse distribution function at u.
|
java.lang.String |
toString()
Returns a String containing information about the current distribution.
|
barF, getMean, getStandardDeviation, getVariance, getXinf, getXsup, inverseBisection, inverseBrent, setXinf, setXsuppublic InverseDistFromDensity(ContinuousDistribution dist, double xc, double eps, int order)
setXinf
and
setXsup
of dist, for better efficiency.
Argument xc can be the mean,
the mode or any other x for which the density is relatively large.
The u-resolution eps is the required absolute error in the cdf,
and order is the degree of the
Newton interpolating polynomial over each interval.
An order of 3 or 5, and an eps of 10-6 to 10-12
are usually good choices.
Restrictions:
3 <= public InverseDistFromDensity(MathFunction dens, double xc, double eps, int order, double xleft, double xright)
public double density(double x)
density in class ContinuousDistributionx - value at which the density is evaluatedpublic double cdf(double x)
x - value at which the distribution function is evaluatedpublic double inverseF(double u)
inverseF in interface DistributioninverseF in class ContinuousDistributionu - value at which the inverse distribution function is evaluatedpublic double getXc()
public double getEpsilon()
public int getOrder()
public double[] getParams()
public java.lang.String toString()
toString in class java.lang.ObjectTo submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.