Class BetaDistributionImpl

All Implemented Interfaces:
Serializable, BetaDistribution, ContinuousDistribution, Distribution, HasDensity<Double>

public class BetaDistributionImpl extends AbstractContinuousDistribution implements BetaDistribution
Implements the Beta distribution.

References:

Since:
2.0
Version:
$Revision: 1054524 $ $Date: 2011-01-03 05:59:18 +0100 (lun. 03 janv. 2011) $
See Also:
  • Field Details

    • DEFAULT_INVERSE_ABSOLUTE_ACCURACY

      public static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY
      Default inverse cumulative probability accuracy
      Since:
      2.1
      See Also:
  • Constructor Details

    • BetaDistributionImpl

      public BetaDistributionImpl(double alpha, double beta, double inverseCumAccuracy)
      Build a new instance.
      Parameters:
      alpha - first shape parameter (must be positive)
      beta - second shape parameter (must be positive)
      inverseCumAccuracy - the maximum absolute error in inverse cumulative probability estimates (defaults to DEFAULT_INVERSE_ABSOLUTE_ACCURACY)
      Since:
      2.1
    • BetaDistributionImpl

      public BetaDistributionImpl(double alpha, double beta)
      Build a new instance.
      Parameters:
      alpha - first shape parameter (must be positive)
      beta - second shape parameter (must be positive)
  • Method Details

    • setAlpha

      @Deprecated public void setAlpha(double alpha)
      Deprecated.
      as of 2.1 (class will become immutable in 3.0)
      Modify the shape parameter, alpha.
      Specified by:
      setAlpha in interface BetaDistribution
      Parameters:
      alpha - the new shape parameter.
    • getAlpha

      public double getAlpha()
      Access the shape parameter, alpha
      Specified by:
      getAlpha in interface BetaDistribution
      Returns:
      alpha.
    • setBeta

      @Deprecated public void setBeta(double beta)
      Deprecated.
      as of 2.1 (class will become immutable in 3.0)
      Modify the shape parameter, beta.
      Specified by:
      setBeta in interface BetaDistribution
      Parameters:
      beta - the new scale parameter.
    • getBeta

      public double getBeta()
      Access the shape parameter, beta
      Specified by:
      getBeta in interface BetaDistribution
      Returns:
      beta.
    • density

      @Deprecated public double density(Double x)
      Deprecated.
      Return the probability density for a particular point.
      Specified by:
      density in interface BetaDistribution
      Specified by:
      density in interface HasDensity<Double>
      Parameters:
      x - The point at which the density should be computed.
      Returns:
      The pdf at point x.
    • density

      public double density(double x)
      Return the probability density for a particular point.
      Overrides:
      density in class AbstractContinuousDistribution
      Parameters:
      x - The point at which the density should be computed.
      Returns:
      The pdf at point x.
      Since:
      2.1
    • inverseCumulativeProbability

      public double inverseCumulativeProbability(double p) throws MathException
      For this distribution, X, this method returns the critical point x, such that P(X < x) = p.
      Specified by:
      inverseCumulativeProbability in interface ContinuousDistribution
      Overrides:
      inverseCumulativeProbability in class AbstractContinuousDistribution
      Parameters:
      p - the desired probability
      Returns:
      x, such that P(X < x) = p
      Throws:
      MathException - if the inverse cumulative probability can not be computed due to convergence or other numerical errors.
    • getInitialDomain

      protected double getInitialDomain(double p)
      Access the initial domain value, based on p, used to bracket a CDF root. This method is used by AbstractContinuousDistribution.inverseCumulativeProbability(double) to find critical values.
      Specified by:
      getInitialDomain in class AbstractContinuousDistribution
      Parameters:
      p - the desired probability for the critical value
      Returns:
      initial domain value
    • getDomainLowerBound

      protected double getDomainLowerBound(double p)
      Access the domain value lower bound, based on p, used to bracket a CDF root. This method is used by AbstractContinuousDistribution.inverseCumulativeProbability(double) to find critical values.
      Specified by:
      getDomainLowerBound in class AbstractContinuousDistribution
      Parameters:
      p - the desired probability for the critical value
      Returns:
      domain value lower bound, i.e. P(X < lower bound) < p
    • getDomainUpperBound

      protected double getDomainUpperBound(double p)
      Access the domain value upper bound, based on p, used to bracket a CDF root. This method is used by AbstractContinuousDistribution.inverseCumulativeProbability(double) to find critical values.
      Specified by:
      getDomainUpperBound in class AbstractContinuousDistribution
      Parameters:
      p - the desired probability for the critical value
      Returns:
      domain value upper bound, i.e. P(X < upper bound) > p
    • cumulativeProbability

      public double cumulativeProbability(double x) throws MathException
      For a random variable X whose values are distributed according to this distribution, this method returns P(X ≤ x). In other words, this method represents the (cumulative) distribution function, or CDF, for this distribution.
      Specified by:
      cumulativeProbability in interface Distribution
      Parameters:
      x - the value at which the distribution function is evaluated.
      Returns:
      the probability that a random variable with this distribution takes a value less than or equal to x
      Throws:
      MathException - if the cumulative probability can not be computed due to convergence or other numerical errors.
    • cumulativeProbability

      public double cumulativeProbability(double x0, double x1) throws MathException
      For a random variable X whose values are distributed according to this distribution, this method returns P(x0 ≤ X ≤ x1).

      The default implementation uses the identity

      P(x0 ≤ X ≤ x1) = P(X ≤ x1) - P(X ≤ x0)

      Specified by:
      cumulativeProbability in interface Distribution
      Overrides:
      cumulativeProbability in class AbstractDistribution
      Parameters:
      x0 - the (inclusive) lower bound
      x1 - the (inclusive) upper bound
      Returns:
      the probability that a random variable with this distribution will take a value between x0 and x1, including the endpoints.
      Throws:
      MathException - if the cumulative probability can not be computed due to convergence or other numerical errors.
    • getSolverAbsoluteAccuracy

      protected double getSolverAbsoluteAccuracy()
      Return the absolute accuracy setting of the solver used to estimate inverse cumulative probabilities.
      Overrides:
      getSolverAbsoluteAccuracy in class AbstractContinuousDistribution
      Returns:
      the solver absolute accuracy
      Since:
      2.1
    • getSupportLowerBound

      public double getSupportLowerBound()
      Returns the lower bound of the support for this distribution. The support of the Beta distribution is always [0, 1], regardless of the parameters, so this method always returns 0.
      Returns:
      lower bound of the support (always 0)
      Since:
      2.2
    • getSupportUpperBound

      public double getSupportUpperBound()
      Returns the upper bound of the support for this distribution. The support of the Beta distribution is always [0, 1], regardless of the parameters, so this method always returns 1.
      Returns:
      lower bound of the support (always 1)
      Since:
      2.2
    • getNumericalMean

      public double getNumericalMean()
      Returns the mean. For first shape parameter s1 and second shape parameter s2, the mean is s1 / (s1 + s2)
      Returns:
      the mean
      Since:
      2.2
    • getNumericalVariance

      public double getNumericalVariance()
      Returns the variance. For first shape parameter s1 and second shape parameter s2, the variance is [ s1 * s2 ] / [ (s1 + s2)^2 * (s1 + s2 + 1) ]
      Returns:
      the variance
      Since:
      2.2