Class TrapezoidalDistribution
- java.lang.Object
-
- org.apache.commons.statistics.distribution.AbstractContinuousDistribution
-
- org.apache.commons.statistics.distribution.TrapezoidalDistribution
-
- All Implemented Interfaces:
ContinuousDistribution
- Direct Known Subclasses:
TrapezoidalDistribution.DelegatedTrapezoidalDistribution
,TrapezoidalDistribution.RegularTrapezoidalDistribution
public abstract class TrapezoidalDistribution extends AbstractContinuousDistribution
Implementation of the trapezoidal distribution.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:
- Trapezoidal distribution (Wikipedia)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
TrapezoidalDistribution.DelegatedTrapezoidalDistribution
Specialisation of the trapezoidal distribution used when the distribution simplifies to an alternative distribution.private static class
TrapezoidalDistribution.RegularTrapezoidalDistribution
Regular implementation of the trapezoidal distribution.private static class
TrapezoidalDistribution.TriangularTrapezoidalDistribution
Specialisation of the trapezoidal distribution used whenb == c
.private static class
TrapezoidalDistribution.UniformTrapezoidalDistribution
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
Fields Modifier and Type Field Description protected double
a
Lower limit of this distribution (inclusive).protected double
b
Start of the trapezoid constant density.protected double
c
End of the trapezoid constant density.protected double
d
Upper limit of this distribution (inclusive).
-
Constructor Summary
Constructors Constructor Description TrapezoidalDistribution(double a, double b, double c, double d)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description double
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
getSupportLowerBound()
Gets the lower bound of the support.double
getSupportUpperBound()
Gets the upper bound of the support.abstract double
getVariance()
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
-
-
-
-
Constructor Detail
-
TrapezoidalDistribution
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 Detail
-
of
public static TrapezoidalDistribution of(double a, double b, double c, double d)
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:
java.lang.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.
-
-