Class NormalDistributionImpl

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

public class NormalDistributionImpl extends AbstractContinuousDistribution implements NormalDistribution, Serializable
Default implementation of NormalDistribution.
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

    • NormalDistributionImpl

      public NormalDistributionImpl(double mean, double sd)
      Create a normal distribution using the given mean and standard deviation.
      Parameters:
      mean - mean for this distribution
      sd - standard deviation for this distribution
    • NormalDistributionImpl

      public NormalDistributionImpl(double mean, double sd, double inverseCumAccuracy)
      Create a normal distribution using the given mean, standard deviation and inverse cumulative distribution accuracy.
      Parameters:
      mean - mean for this distribution
      sd - standard deviation for this distribution
      inverseCumAccuracy - inverse cumulative probability accuracy
      Since:
      2.1
    • NormalDistributionImpl

      public NormalDistributionImpl()
      Creates normal distribution with the mean equal to zero and standard deviation equal to one.
  • Method Details

    • getMean

      public double getMean()
      Access the mean.
      Specified by:
      getMean in interface NormalDistribution
      Returns:
      mean for this distribution
    • setMean

      @Deprecated public void setMean(double mean)
      Deprecated.
      as of 2.1 (class will become immutable in 3.0)
      Modify the mean.
      Specified by:
      setMean in interface NormalDistribution
      Parameters:
      mean - for this distribution
    • getStandardDeviation

      public double getStandardDeviation()
      Access the standard deviation.
      Specified by:
      getStandardDeviation in interface NormalDistribution
      Returns:
      standard deviation for this distribution
    • setStandardDeviation

      @Deprecated public void setStandardDeviation(double sd)
      Deprecated.
      as of 2.1 (class will become immutable in 3.0)
      Modify the standard deviation.
      Specified by:
      setStandardDeviation in interface NormalDistribution
      Parameters:
      sd - standard deviation for this distribution
      Throws:
      IllegalArgumentException - if sd is not positive.
    • density

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

      public double cumulativeProbability(double x) throws MathException
      For this distribution, X, this method returns P(X < x). If xis more than 40 standard deviations from the mean, 0 or 1 is returned, as in these cases the actual value is within Double.MIN_VALUE of 0 or 1.
      Specified by:
      cumulativeProbability in interface Distribution
      Parameters:
      x - the value at which the CDF is evaluated.
      Returns:
      CDF evaluated at x.
      Throws:
      MathException - if the algorithm fails to converge
    • 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
    • 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.

      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:
      MathException - if the inverse cumulative probability can not be computed due to convergence or other numerical errors.
      IllegalArgumentException - if p is not a valid probability.
    • sample

      public double sample() throws MathException
      Generates a random value sampled from this distribution.
      Overrides:
      sample in class AbstractContinuousDistribution
      Returns:
      random value
      Throws:
      MathException - if an error occurs generating the random value
      Since:
      2.2
    • 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
    • getSupportLowerBound

      public double getSupportLowerBound()
      Returns the lower bound of the support for the distribution. The lower bound of the support is always negative infinity no matter the parameters.
      Returns:
      lower bound of the support (always Double.NEGATIVE_INFINITY)
      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
    • getNumericalVariance

      public double getNumericalVariance()
      Returns the variance. For standard deviation parameter s, the variance is s^2
      Returns:
      the variance
      Since:
      2.2