Multivariate normal cumulative distribution function

`y = mvncdf(X)`

y = mvncdf(X,mu,SIGMA)

y = mvncdf(xl,xu,mu,SIGMA)

[y,err] = mvncdf(...)

[...] = mvncdf(...,options)

`y = mvncdf(X)`

returns the
cumulative probability of the multivariate normal distribution with
zero mean and identity covariance matrix, evaluated at each row of `X`

.
Rows of the *n*-by-*d* matrix `X`

correspond
to observations or points, and columns correspond to variables or
coordinates. `y`

is an *n*-by-`1`

vector.

`y = mvncdf(X,mu,SIGMA)`

returns
the cumulative probability of the multivariate normal distribution
with mean `mu`

and covariance `SIGMA`

,
evaluated at each row of `X`

. `mu`

is
a `1`

-by-*d* vector, and `SIGMA`

is
a *d*-by-*d* symmetric, positive
definite matrix. `mu`

can also be a scalar value,
which `mvncdf`

replicates to match the size of `X`

.
If the covariance matrix is diagonal, containing variances along the
diagonal and zero covariances off the diagonal, `SIGMA`

may
also be specified as a `1`

-by-*d* vector
containing just the diagonal. Pass in the empty matrix `[]`

for `mu`

to
use as its default value when you want to only specify `SIGMA`

.

The multivariate normal cumulative probability at `X`

is
defined as the probability that a random vector `V`

,
distributed as multivariate normal, will fall within the semi-infinite
rectangle with upper limits defined by `X`

, for example, `Pr{V(1)`

≤` X(1),V(2) `

≤` X(2),...,V(`

≤*d*)` X(`

}.*d*)

`y = mvncdf(xl,xu,mu,SIGMA)`

returns
the multivariate normal cumulative probability evaluated over the
rectangle with lower and upper limits defined by `xl`

and `xu`

,
respectively.

`[y,err] = mvncdf(...)`

returns
an estimate of the error in `y`

. For bivariate and
trivariate distributions, `mvncdf`

uses adaptive
quadrature on a transformation of the *t* density,
based on methods developed by Drezner and Wesolowsky and by Genz,
as described in the references. The default absolute error tolerance
for these cases is `1e-8`

. For four or more dimensions, `mvncdf`

uses
a quasi-Monte Carlo integration algorithm based on methods developed
by Genz and Bretz, as described in the references. The default absolute
error tolerance for these cases is `1e-4`

.

`[...] = mvncdf(...,options)`

specifies
control parameters for the numerical integration used to compute `y`

.
This argument can be created by a call to `statset`

.
Choices of `statset`

parameters:

`'TolFun'`

— Maximum absolute error tolerance. Default is`1e-8`

when*d*< 4, or`1e-4`

when*d*≥ 4.`'MaxFunEvals'`

— Maximum number of integrand evaluations allowed when*d*≥ 4. Default is`1e7`

.`'MaxFunEvals'`

is ignored when*d*< 4.`'Display'`

— Level of display output. Choices are`'off'`

(the default),`'iter'`

, and`'final'`

.`'Display'`

is ignored when*d*< 4.

[1] Drezner, Z. "Computation of the
Trivariate Normal Integral." *Mathematics of Computation*.
Vol. 63, 1994, pp. 289–294.

[2] Drezner, Z., and G. O. Wesolowsky. "On
the Computation of the Bivariate Normal Integral." *Journal
of Statistical Computation and Simulation*. Vol. 35, 1989,
pp. 101–107.

[3] Genz, A. "Numerical Computation
of Rectangular Bivariate and Trivariate Normal and t Probabilities." *Statistics
and Computing*. Vol. 14, No. 3, 2004, pp. 251–260.

[4] Genz, A., and F. Bretz. "Numerical
Computation of Multivariate t Probabilities with Application to Power
Calculation of Multiple Contrasts." *Journal of Statistical
Computation and Simulation*. Vol. 63, 1999, pp. 361–378.

[5] Genz, A., and F. Bretz. "Comparison
of Methods for the Computation of Multivariate t Probabilities." *Journal
of Computational and Graphical Statistics*. Vol. 11, No.
4, 2002, pp. 950–971.

Was this topic helpful?