Class TrapezoidalDistribution
- All Implemented Interfaces:
ContinuousDistribution
- Direct Known Subclasses:
TrapezoidalDistribution.DelegatedTrapezoidalDistribution
,TrapezoidalDistribution.RegularTrapezoidalDistribution
The probability density function of \( X \) is:
\[ f(x; a, b, c, d) = \begin{cases} \frac{2}{d+c-a-b}\frac{x-a}{b-a} & \text{for } a\le x \lt b \\ \frac{2}{d+c-a-b} & \text{for } b\le x \lt c \\ \frac{2}{d+c-a-b}\frac{d-x}{d-c} & \text{for } c\le x \le d \end{cases} \]
for \( -\infty \lt a \le b \le c \le d \lt \infty \) and \( x \in [a, d] \).
Note the special cases:
- \( b = c \) is the triangular distribution
- \( a = b \) and \( c = d \) is the uniform distribution
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
Specialisation of the trapezoidal distribution used when the distribution simplifies to an alternative distribution.private static class
Regular implementation of the trapezoidal distribution.private static class
Specialisation of the trapezoidal distribution used whenb == c
.private static class
Specialisation of the trapezoidal distribution used whena == b
andc == d
.Nested classes/interfaces inherited from interface org.apache.commons.statistics.distribution.ContinuousDistribution
ContinuousDistribution.Sampler
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final double
Lower limit of this distribution (inclusive).protected final double
Start of the trapezoid constant density.protected final double
End of the trapezoid constant density.protected final double
Upper limit of this distribution (inclusive). -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
TrapezoidalDistribution
(double a, double b, double c, double d) -
Method Summary
Modifier and TypeMethodDescriptiondouble
getB()
Gets the start of the constant region of the density function.double
getC()
Gets the end of the constant region of the density function.abstract double
getMean()
Gets the mean of this distribution.double
Gets the lower bound of the support.double
Gets the upper bound of the support.abstract double
Gets the variance of this distribution.static TrapezoidalDistribution
of
(double a, double b, double c, double d) Creates a trapezoidal distribution.Methods inherited from class org.apache.commons.statistics.distribution.AbstractContinuousDistribution
createSampler, getMedian, inverseCumulativeProbability, inverseSurvivalProbability, isSupportConnected, probability
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.commons.statistics.distribution.ContinuousDistribution
cumulativeProbability, density, logDensity, survivalProbability
-
Field Details
-
a
protected final double aLower limit of this distribution (inclusive). -
b
protected final double bStart of the trapezoid constant density. -
c
protected final double cEnd of the trapezoid constant density. -
d
protected final double dUpper limit of this distribution (inclusive).
-
-
Constructor Details
-
TrapezoidalDistribution
private TrapezoidalDistribution(double a, double b, double c, double d) - Parameters:
a
- Lower limit of this distribution (inclusive).b
- Start of the trapezoid constant density.c
- End of the trapezoid constant density.d
- Upper limit of this distribution (inclusive).
-
-
Method Details
-
of
Creates a trapezoidal distribution.The distribution density is represented as an up sloping line from
a
tob
, constant fromb
toc
, and then a down sloping line fromc
tod
.- Parameters:
a
- Lower limit of this distribution (inclusive).b
- Start of the trapezoid constant density (first shape parameter).c
- End of the trapezoid constant density (second shape parameter).d
- Upper limit of this distribution (inclusive).- Returns:
- the distribution
- Throws:
IllegalArgumentException
- ifa >= d
, ifb < a
, ifc < b
or ifc > d
.
-
getMean
public abstract double getMean()Gets the mean of this distribution.For lower limit \( a \), start of the density constant region \( b \), end of the density constant region \( c \) and upper limit \( d \), the mean is:
\[ \frac{1}{3(d+c-b-a)}\left(\frac{d^3-c^3}{d-c}-\frac{b^3-a^3}{b-a}\right) \]
- Returns:
- the mean.
-
getVariance
public abstract double getVariance()Gets the variance of this distribution.For lower limit \( a \), start of the density constant region \( b \), end of the density constant region \( c \) and upper limit \( d \), the variance is:
\[ \frac{1}{6(d+c-b-a)}\left(\frac{d^4-c^4}{d-c}-\frac{b^4-a^4}{b-a}\right) - \mu^2 \]
where \( \mu \) is the mean.
- Returns:
- the variance.
-
getB
public double getB()Gets the start of the constant region of the density function.This is the first shape parameter
b
of the distribution.- Returns:
- the first shape parameter
b
-
getC
public double getC()Gets the end of the constant region of the density function.This is the second shape parameter
c
of the distribution.- Returns:
- the second shape parameter
c
-
getSupportLowerBound
public double getSupportLowerBound()Gets the lower bound of the support. It must return the same value asinverseCumulativeProbability(0)
, i.e. \( \inf \{ x \in \mathbb R : P(X \le x) \gt 0 \} \).The lower bound of the support is equal to the lower limit parameter
a
of the distribution.- Returns:
- the lower bound of the support.
-
getSupportUpperBound
public double getSupportUpperBound()Gets the upper bound of the support. It must return the same value asinverseCumulativeProbability(1)
, i.e. \( \inf \{ x \in \mathbb R : P(X \le x) = 1 \} \).The upper bound of the support is equal to the upper limit parameter
d
of the distribution.- Returns:
- the upper bound of the support.
-