SSJ
V. 2.6.

umontreal.iro.lecuyer.probdistmulti
Class BiNormalDist

java.lang.Object
  extended by umontreal.iro.lecuyer.probdistmulti.ContinuousDistributionMulti
      extended by umontreal.iro.lecuyer.probdistmulti.ContinuousDistribution2Dim
          extended by umontreal.iro.lecuyer.probdistmulti.BiNormalDist
Direct Known Subclasses:
BiNormalDonnellyDist, BiNormalGenzDist

public class BiNormalDist
extends ContinuousDistribution2Dim

Extends the class ContinuousDistribution2Dim for the bivariate normal distribution. It has means E[X] = μ1, E[Y] = μ2, and variances var [X] = σ12, var [Y] = σ22 such that σ1 > 0 and σ2 > 0. The correlation between X and Y is r. Its density function is

f (x, y) = e-T/(2πσ1σ2(1-r^2)1/2)

T = [((x - μ1)/σ1)2 -2r((x - μ1)/σ1)((y - μ2)/σ2) + ((y - μ2)/σ2)2]/(2(1 - r2))

and the corresponding distribution function is (the cdf method)

Φ(μ1, σ1, x, μ2, σ2, y, r) = ∫-∞xdx-∞ydy e-T/(2πσ1σ2(1 - r^2)1/2).

We also define the upper distribution function (the barF method) as

bar(Φ)(μ1, σ1, x, μ2, σ2, y, r) = ∫xdxydy e-T/(2πσ1σ2(1 - r^2)1/2).

When μ1 = μ2 = 0 and σ1 = σ2 = 1, we have the standard binormal distribution, with corresponding distribution function

Φ(x, y, r) = ∫xdxydy e-S/(2π(1 - r^2)1/2)

S = (x2 -2rxy + y2)/(2(1 - r2)).


Field Summary
 
Fields inherited from class umontreal.iro.lecuyer.probdistmulti.ContinuousDistribution2Dim
decPrec
 
Constructor Summary
BiNormalDist(double rho)
          Constructs a BiNormalDist object with default parameters μ1 = μ2 = 0, σ1 = σ2 = 1 and correlation ρ = rho.
BiNormalDist(double mu1, double sigma1, double mu2, double sigma2, double rho)
          Constructs a BiNormalDist object with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho.
 
Method Summary
 double barF(double x, double y)
          .
static double barF(double x, double y, double rho)
          Computes the standard upper binormal distribution with μ1 = μ2 = 0 and σ1 = σ2 = 1.
static double barF(double mu1, double sigma1, double x, double mu2, double sigma2, double y, double rho)
          Computes the upper binormal distribution function with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho.
 double cdf(double x, double y)
          .
static double cdf(double x, double y, double rho)
          Computes the standard binormal distribution using the fast Drezner-Wesolowsky method described in.
static double cdf(double mu1, double sigma1, double x, double mu2, double sigma2, double y, double rho)
          Computes the binormal distribution function with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho.
 double density(double x, double y)
          Returns f (x, y), the density of (X, Y) evaluated at (x, y).
static double density(double x, double y, double rho)
          Computes the standard binormal density function with μ1 = μ2 = 0 and σ1 = σ2 = 1.
static double density(double mu1, double sigma1, double x, double mu2, double sigma2, double y, double rho)
          Computes the binormal density function with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho.
 double[][] getCorrelation()
          Returns the correlation matrix of the distribution, defined as ρij = σij/(σ_iiσ_jj)1/2.
static double[][] getCorrelation(double mu1, double sigma1, double mu2, double sigma2, double rho)
          Return the correlation matrix of the binormal distribution.
 double[][] getCovariance()
          Returns the variance-covariance matrix of the distribution, defined as
σij = E[(Xi - μi)(Xj - μj)].
static double[][] getCovariance(double mu1, double sigma1, double mu2, double sigma2, double rho)
          Return the covariance matrix of the binormal distribution.
 double[] getMean()
          Returns the mean vector of the distribution, defined as μi = E[Xi].
static double[] getMean(double mu1, double sigma1, double mu2, double sigma2, double rho)
          Return the mean vector E[X] = (μ1, μ2) of the binormal distribution.
 double getMu1()
          Returns the parameter μ1.
 double getMu2()
          Returns the parameter μ2.
 double getSigma1()
          Returns the parameter σ1.
 double getSigma2()
          Returns the parameter σ2.
 
Methods inherited from class umontreal.iro.lecuyer.probdistmulti.ContinuousDistribution2Dim
cdf, density
 
Methods inherited from class umontreal.iro.lecuyer.probdistmulti.ContinuousDistributionMulti
getDimension
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BiNormalDist

public BiNormalDist(double rho)
Constructs a BiNormalDist object with default parameters μ1 = μ2 = 0, σ1 = σ2 = 1 and correlation ρ = rho.


BiNormalDist

public BiNormalDist(double mu1,
                    double sigma1,
                    double mu2,
                    double sigma2,
                    double rho)
Constructs a BiNormalDist object with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho.

Method Detail

density

public double density(double x,
                      double y)
Description copied from class: ContinuousDistribution2Dim
Returns f (x, y), the density of (X, Y) evaluated at (x, y).

Specified by:
density in class ContinuousDistribution2Dim
Parameters:
x - value x at which the density is evaluated
y - value y at which the density is evaluated
Returns:
density function evaluated at (x, y)

density

public static double density(double x,
                             double y,
                             double rho)
Computes the standard binormal density function with μ1 = μ2 = 0 and σ1 = σ2 = 1.


density

public static double density(double mu1,
                             double sigma1,
                             double x,
                             double mu2,
                             double sigma2,
                             double y,
                             double rho)
Computes the binormal density function with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho.


cdf

public static double cdf(double x,
                         double y,
                         double rho)
Computes the standard binormal distribution using the fast Drezner-Wesolowsky method described in. The absolute error is expected to be smaller than 2⋅10-7.


cdf

public double cdf(double x,
                  double y)
Description copied from class: ContinuousDistribution2Dim
. Computes the distribution function F(x, y):

F(x, y) = P[X <= x, Y <= y] = ∫-∞xds-∞ydt f (s, t).

Specified by:
cdf in class ContinuousDistribution2Dim
Parameters:
x - value x at which the distribution function is evaluated
y - value y at which the distribution function is evaluated
Returns:
distribution function evaluated at (x, y)

cdf

public static double cdf(double mu1,
                         double sigma1,
                         double x,
                         double mu2,
                         double sigma2,
                         double y,
                         double rho)
Computes the binormal distribution function with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho. Uses the fast Drezner-Wesolowsky method described in. The absolute error is expected to be smaller than 2⋅10-7.


barF

public static double barF(double x,
                          double y,
                          double rho)
Computes the standard upper binormal distribution with μ1 = μ2 = 0 and σ1 = σ2 = 1. Uses the fast Drezner-Wesolowsky method described in. The absolute error is expected to be smaller than 2⋅10-7.


barF

public double barF(double x,
                   double y)
Description copied from class: ContinuousDistribution2Dim
. Computes the upper cumulative distribution function bar(F)(x, y):

bar(F)(x, y) = P[X >= x, Y >= y] = ∫xdsydt f (s, t).

Overrides:
barF in class ContinuousDistribution2Dim
Parameters:
x - value x at which the upper distribution is evaluated
y - value y at which the upper distribution is evaluated
Returns:
upper distribution function evaluated at (x, y)

barF

public static double barF(double mu1,
                          double sigma1,
                          double x,
                          double mu2,
                          double sigma2,
                          double y,
                          double rho)
Computes the upper binormal distribution function with parameters μ1 = mu1, μ2 = mu2, σ1 = sigma1, σ2 = sigma2 and ρ = rho. Uses the fast Drezner-Wesolowsky method described in. The absolute error is expected to be smaller than 2⋅10-7.


getMean

public double[] getMean()
Description copied from class: ContinuousDistributionMulti
Returns the mean vector of the distribution, defined as μi = E[Xi].

Specified by:
getMean in class ContinuousDistributionMulti

getMean

public static double[] getMean(double mu1,
                               double sigma1,
                               double mu2,
                               double sigma2,
                               double rho)
Return the mean vector E[X] = (μ1, μ2) of the binormal distribution.


getCovariance

public double[][] getCovariance()
Description copied from class: ContinuousDistributionMulti
Returns the variance-covariance matrix of the distribution, defined as
σij = E[(Xi - μi)(Xj - μj)].

Specified by:
getCovariance in class ContinuousDistributionMulti

getCovariance

public static double[][] getCovariance(double mu1,
                                       double sigma1,
                                       double mu2,
                                       double sigma2,
                                       double rho)
Return the covariance matrix of the binormal distribution.


getCorrelation

public double[][] getCorrelation()
Description copied from class: ContinuousDistributionMulti
Returns the correlation matrix of the distribution, defined as ρij = σij/(σ_iiσ_jj)1/2.

Specified by:
getCorrelation in class ContinuousDistributionMulti

getCorrelation

public static double[][] getCorrelation(double mu1,
                                        double sigma1,
                                        double mu2,
                                        double sigma2,
                                        double rho)
Return the correlation matrix of the binormal distribution.


getMu1

public double getMu1()
Returns the parameter μ1.


getMu2

public double getMu2()
Returns the parameter μ2.


getSigma1

public double getSigma1()
Returns the parameter σ1.


getSigma2

public double getSigma2()
Returns the parameter σ2.


SSJ
V. 2.6.

To submit a bug or ask questions, send an e-mail to Pierre L'Ecuyer.