statalign.utils
Class NormalDistribution

java.lang.Object
  extended by org.apache.commons.math3.distribution.AbstractRealDistribution
      extended by statalign.utils.NormalDistribution
All Implemented Interfaces:
java.io.Serializable, org.apache.commons.math3.distribution.RealDistribution

public class NormalDistribution
extends org.apache.commons.math3.distribution.AbstractRealDistribution

Implementation of the normal (gaussian) distribution. Adapted from Apache Commons Math v3.0, but modified to use Utils.generator as the random number source.

Version:
$Id: NormalDistribution.java 1369415 2012-08-04 19:24:56Z erans $
See Also:
Normal distribution (Wikipedia), Normal distribution (MathWorld), Serialized Form

Field Summary
static double DEFAULT_INVERSE_ABSOLUTE_ACCURACY
          Default inverse cumulative probability accuracy.
 
Fields inherited from class org.apache.commons.math3.distribution.AbstractRealDistribution
SOLVER_DEFAULT_ABSOLUTE_ACCURACY
 
Constructor Summary
NormalDistribution()
          Create a normal distribution with mean equal to zero and standard deviation equal to one.
NormalDistribution(double mean, double sd)
          Create a normal distribution using the given mean and standard deviation.
NormalDistribution(double mean, double sd, double inverseCumAccuracy)
          Create a normal distribution using the given mean, standard deviation and inverse cumulative distribution accuracy.
NormalDistribution(org.apache.commons.math3.random.RandomGenerator rng, double mean, double sd, double inverseCumAccuracy)
          Creates a normal distribution.
 
Method Summary
 double cumulativeProbability(double x)
           If x is 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.
 double cumulativeProbability(double x0, double x1)
          Deprecated. See RealDistribution.cumulativeProbability(double,double)
 double density(double x)
          
 double getMean()
          Access the mean.
 double getNumericalMean()
           For mean parameter mu, the mean is mu.
 double getNumericalVariance()
           For standard deviation parameter s, the variance is s^2.
 double getStandardDeviation()
          Access the standard deviation.
 double getSupportLowerBound()
           The lower bound of the support is always negative infinity no matter the parameters.
 double getSupportUpperBound()
           The upper bound of the support is always positive infinity no matter the parameters.
 boolean isSupportConnected()
           The support of this distribution is connected.
 boolean isSupportLowerBoundInclusive()
          
 boolean isSupportUpperBoundInclusive()
          
 double logDensity(double x)
           
 double probability(double x0, double x1)
          
 double sample()
          
 
Methods inherited from class org.apache.commons.math3.distribution.AbstractRealDistribution
inverseCumulativeProbability, probability, reseedRandomGenerator, sample
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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
Constructor Detail

NormalDistribution

public NormalDistribution()
Create a normal distribution with mean equal to zero and standard deviation equal to one.


NormalDistribution

public NormalDistribution(double mean,
                          double sd)
                   throws org.apache.commons.math3.exception.NotStrictlyPositiveException
Create a normal distribution using the given mean and standard deviation.

Parameters:
mean - Mean for this distribution.
sd - Standard deviation for this distribution.
Throws:
org.apache.commons.math3.exception.NotStrictlyPositiveException - if sd <= 0.

NormalDistribution

public NormalDistribution(double mean,
                          double sd,
                          double inverseCumAccuracy)
                   throws org.apache.commons.math3.exception.NotStrictlyPositiveException
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.
Throws:
org.apache.commons.math3.exception.NotStrictlyPositiveException - if sd <= 0.
Since:
2.1

NormalDistribution

public NormalDistribution(org.apache.commons.math3.random.RandomGenerator rng,
                          double mean,
                          double sd,
                          double inverseCumAccuracy)
                   throws org.apache.commons.math3.exception.NotStrictlyPositiveException
Creates a normal distribution.

Parameters:
rng - Random number generator.
mean - Mean for this distribution.
sd - Standard deviation for this distribution.
inverseCumAccuracy - Inverse cumulative probability accuracy.
Throws:
org.apache.commons.math3.exception.NotStrictlyPositiveException - if sd <= 0.
Since:
3.1
Method Detail

getMean

public double getMean()
Access the mean.

Returns:
the mean for this distribution.

getStandardDeviation

public double getStandardDeviation()
Access the standard deviation.

Returns:
the standard deviation for this distribution.

density

public double density(double x)


logDensity

public double logDensity(double x)

cumulativeProbability

public double cumulativeProbability(double x)
If x is 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.


cumulativeProbability

@Deprecated
public double cumulativeProbability(double x0,
                                               double x1)
                             throws org.apache.commons.math3.exception.NumberIsTooLargeException
Deprecated. See RealDistribution.cumulativeProbability(double,double)

Specified by:
cumulativeProbability in interface org.apache.commons.math3.distribution.RealDistribution
Overrides:
cumulativeProbability in class org.apache.commons.math3.distribution.AbstractRealDistribution
Throws:
org.apache.commons.math3.exception.NumberIsTooLargeException

probability

public double probability(double x0,
                          double x1)
                   throws org.apache.commons.math3.exception.NumberIsTooLargeException

Overrides:
probability in class org.apache.commons.math3.distribution.AbstractRealDistribution
Throws:
org.apache.commons.math3.exception.NumberIsTooLargeException

getNumericalMean

public double getNumericalMean()
For mean parameter mu, the mean is mu.


getNumericalVariance

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


getSupportLowerBound

public double getSupportLowerBound()
The lower bound of the support is always negative infinity no matter the parameters.

Returns:
lower bound of the support (always Double.NEGATIVE_INFINITY)

getSupportUpperBound

public double getSupportUpperBound()
The upper bound of the support is always positive infinity no matter the parameters.

Returns:
upper bound of the support (always Double.POSITIVE_INFINITY)

isSupportLowerBoundInclusive

public boolean isSupportLowerBoundInclusive()


isSupportUpperBoundInclusive

public boolean isSupportUpperBoundInclusive()


isSupportConnected

public boolean isSupportConnected()
The support of this distribution is connected.

Returns:
true

sample

public double sample()

Specified by:
sample in interface org.apache.commons.math3.distribution.RealDistribution
Overrides:
sample in class org.apache.commons.math3.distribution.AbstractRealDistribution