org.apache.commons.math.distribution

## Class WeibullDistributionImpl

- java.lang.Object
- - org.apache.commons.math.distribution.AbstractDistribution
  - - org.apache.commons.math.distribution.AbstractContinuousDistribution
    - - org.apache.commons.math.distribution.WeibullDistributionImpl

- All Implemented Interfaces:
    Serializable, ContinuousDistribution, Distribution, WeibullDistribution

      public class WeibullDistributionImpl
      extends AbstractContinuousDistribution
      implements WeibullDistribution, Serializable

  Default implementation of `WeibullDistribution`.
  Since:
    1.1
  Version:
    $Revision: 1054524 $ $Date: 2011-01-03 05:59:18 +0100 (lun. 03 janv. 2011) $
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static double` | `DEFAULT_INVERSE_ABSOLUTE_ACCURACY` Default inverse cumulative probability accuracy
    `private double` | `numericalMean` Cached numerical mean
    `private boolean` | `numericalMeanIsCalculated` Whether or not the numerical mean has been calculated
    `private double` | `numericalVariance` Cached numerical variance
    `private boolean` | `numericalVarianceIsCalculated` Whether or not the numerical variance has been calculated
    `private double` | `scale` The scale parameter.
    `private static long` | `serialVersionUID` Serializable version identifier
    `private double` | `shape` The shape parameter.
    `private double` | `solverAbsoluteAccuracy` Inverse cumulative probability accuracy

    - ### Fields inherited from class org.apache.commons.math.distribution.AbstractContinuousDistribution

      `randomData`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `WeibullDistributionImpl(double alpha, double beta)` Creates weibull distribution with the given shape and scale and a location equal to zero.
    `WeibullDistributionImpl(double alpha, double beta, double inverseCumAccuracy)` Creates weibull distribution with the given shape, scale and inverse cumulative probability accuracy and a location equal to zero.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected double` | `calculateNumericalMean()` Calculates the mean.
    `private double` | `calculateNumericalVariance()` Calculates the variance.
    `double` | `cumulativeProbability(double x)` For this distribution, X, this method returns P(X < `x`).
    `double` | `density(double x)` Returns the probability density for a particular point.
    `protected double` | `getDomainLowerBound(double p)` Access the domain value lower bound, based on `p`, used to bracket a CDF root.
    `protected double` | `getDomainUpperBound(double p)` Access the domain value upper bound, based on `p`, used to bracket a CDF root.
    `protected double` | `getInitialDomain(double p)` Access the initial domain value, based on `p`, used to bracket a CDF root.
    `double` | `getNumericalMean()` Returns the mean of the distribution.
    `double` | `getNumericalVariance()` Returns the variance of the distribution.
    `double` | `getScale()` Access the scale parameter.
    `double` | `getShape()` Access the shape parameter.
    `protected double` | `getSolverAbsoluteAccuracy()` Return the absolute accuracy setting of the solver used to estimate inverse cumulative probabilities.
    `double` | `getSupportLowerBound()` Returns the lower bound of the support for the distribution.
    `double` | `getSupportUpperBound()` Returns the upper bound of the support for the distribution.
    `private void` | `invalidateParameterDependentMoments()` Invalidates the cached mean and variance.
    `double` | `inverseCumulativeProbability(double p)` For this distribution, X, this method returns the critical point x, such that P(X < x) = `p`.
    `void` | `setScale(double beta)` Deprecated. as of 2.1 (class will become immutable in 3.0)
    `private void` | `setScaleInternal(double beta)` Modify the scale parameter.
    `void` | `setShape(double alpha)` Deprecated. as of 2.1 (class will become immutable in 3.0)
    `private void` | `setShapeInternal(double alpha)` Modify the shape parameter.

    - ### Methods inherited from class org.apache.commons.math.distribution.AbstractContinuousDistribution

      `reseedRandomGenerator, sample, sample`

    - ### Methods inherited from class org.apache.commons.math.distribution.AbstractDistribution

      `cumulativeProbability`

    - ### 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.math.distribution.Distribution

      `cumulativeProbability`

- - ### Field Detail

    - #### DEFAULT_INVERSE_ABSOLUTE_ACCURACY

          public static final double DEFAULT_INVERSE_ABSOLUTE_ACCURACY

      Default inverse cumulative probability accuracy
      Since:
        2.1
      See Also:
        Constant Field Values

    - #### serialVersionUID

          private static final long serialVersionUID

      Serializable version identifier
      See Also:
        Constant Field Values

    - #### shape

          private double shape

      The shape parameter.

    - #### scale

          private double scale

      The scale parameter.

    - #### solverAbsoluteAccuracy

          private final double solverAbsoluteAccuracy

      Inverse cumulative probability accuracy

    - #### numericalMean

          private double numericalMean

      Cached numerical mean

    - #### numericalMeanIsCalculated

          private boolean numericalMeanIsCalculated

      Whether or not the numerical mean has been calculated

    - #### numericalVariance

          private double numericalVariance

      Cached numerical variance

    - #### numericalVarianceIsCalculated

          private boolean numericalVarianceIsCalculated

      Whether or not the numerical variance has been calculated

  - ### Constructor Detail

    - #### WeibullDistributionImpl

          public WeibullDistributionImpl(double alpha,
                                 double beta)

      Creates weibull distribution with the given shape and scale and a location equal to zero.
      Parameters:
        `alpha` - the shape parameter.
        `beta` - the scale parameter.

    - #### WeibullDistributionImpl

          public WeibullDistributionImpl(double alpha,
                                 double beta,
                                 double inverseCumAccuracy)

      Creates weibull distribution with the given shape, scale and inverse cumulative probability accuracy and a location equal to zero.
      Parameters:
        `alpha` - the shape parameter.
        `beta` - the scale parameter.
        `inverseCumAccuracy` - the maximum absolute error in inverse cumulative probability estimates (defaults to `DEFAULT_INVERSE_ABSOLUTE_ACCURACY`)
      Since:
        2.1

  - ### Method Detail

    - #### cumulativeProbability

          public double cumulativeProbability(double x)

      For this distribution, X, this method returns P(X < `x`).
      Specified by:
        `cumulativeProbability` in interface `Distribution`
      Parameters:
        `x` - the value at which the CDF is evaluated.
      Returns:
        CDF evaluated at `x`.

    - #### getShape

          public double getShape()

      Access the shape parameter.
      Specified by:
        `getShape` in interface `WeibullDistribution`
      Returns:
        the shape parameter.

    - #### getScale

          public double getScale()

      Access the scale parameter.
      Specified by:
        `getScale` in interface `WeibullDistribution`
      Returns:
        the scale parameter.

    - #### density

          public double density(double x)

      Returns 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)

      For this distribution, X, this method returns the critical point x, such that P(X < x) = `p`.

      Returns `Double.NEGATIVE_INFINITY` for p=0 and `Double.POSITIVE_INFINITY` for p=1.

      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:
        `IllegalArgumentException` - if `p` is not a valid probability.

    - #### setShape

          @Deprecated
          public void setShape(double alpha)

      Deprecated. as of 2.1 (class will become immutable in 3.0)
      Modify the shape parameter.
      Specified by:
        `setShape` in interface `WeibullDistribution`
      Parameters:
        `alpha` - the new shape parameter value.

    - #### setShapeInternal

          private void setShapeInternal(double alpha)

      Modify the shape parameter.
      Parameters:
        `alpha` - the new shape parameter value.

    - #### setScale

          @Deprecated
          public void setScale(double beta)

      Deprecated. as of 2.1 (class will become immutable in 3.0)
      Modify the scale parameter.
      Specified by:
        `setScale` in interface `WeibullDistribution`
      Parameters:
        `beta` - the new scale parameter value.

    - #### setScaleInternal

          private void setScaleInternal(double beta)

      Modify the scale parameter.
      Parameters:
        `beta` - the new scale parameter 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 `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 `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`

    - #### 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 `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

    - #### 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 the distribution. The lower bound of the support is always 0 no matter the parameters.
      Returns:
        lower bound of the support (always 0)
      Since:
        2.2

    - #### getSupportUpperBound

          public double getSupportUpperBound()

      Returns the upper bound of the support for the distribution. The upper bound of the support is always positive infinity no matter the parameters.
      Returns:
        upper bound of the support (always Double.POSITIVE_INFINITY)
      Since:
        2.2

    - #### calculateNumericalMean

          protected double calculateNumericalMean()

      Calculates the mean. The mean is `scale * Gamma(1 + (1 / shape))` where `Gamma(...)` is the Gamma-function
      Returns:
        the mean
      Since:
        2.2

    - #### calculateNumericalVariance

          private double calculateNumericalVariance()

      Calculates the variance. The variance is `scale^2 * Gamma(1 + (2 / shape)) - mean^2` where `Gamma(...)` is the Gamma-function
      Returns:
        the variance
      Since:
        2.2

    - #### getNumericalMean

          public double getNumericalMean()

      Returns the mean of the distribution.
      Returns:
        the mean or Double.NaN if it's not defined
      Since:
        2.2

    - #### getNumericalVariance

          public double getNumericalVariance()

      Returns the variance of the distribution.
      Returns:
        the variance (possibly Double.POSITIVE_INFINITY as for certain cases in `TDistributionImpl`) or Double.NaN if it's not defined
      Since:
        2.2

    - #### invalidateParameterDependentMoments

          private void invalidateParameterDependentMoments()

      Invalidates the cached mean and variance.

Copyright (c) 2003-2013 Apache Software Foundation