cdfMvnce¶
Purpose¶
Computes the complement (upper tail) of the multivariate Normal cumulative distribution function with error management.
Format¶
-
{ y, err, retcode } =
cdfMvnce
(ctl, x, corr, nonc)¶ - Parameters:
ctl (struct) –
instance of a
cdfmControl
structure with membersctl.maxEvaluations
scalar, maximum number of evaluations.
ctl.absErrorTolerance
scalar, absolute error tolerance.
ctl.relErrorTolerance
scalar, error tolerance.
x (NxK matrix) – Lower limits at which to evaluate the complement of the multivariate normal cumulative distribution function. x must have K columns–one for each variable. If x has more than one row, each row will be treated as a separate set of upper limits.
corr (KxK matrix) – correlation matrix.
nonc (Kx1 vector) – non-centrality vector.
- Returns:
p (Nx1 vector) – \(Pr(X ≥ x|corr, nonc)\). The probability in the upper tail of the multivariate normal cumulative distribution function for each corresponding set of limits in x.
err (Nx1 vector) – estimates of absolute error.
retcode (Nx1 vector) –
return codes.
0
normal completion with \(err < ctl.absErrorTolerance\).
1
\(err > ctl.absErrorTolerance\) and ctl.maxEvaluations exceeded; increase ctl.maxEvaluations to decrease error.
2
\(K > 100\) or \(K < 1\)
3
R not positive semi-definite.
missing
R not properly defined.
Examples¶
Compute the upper tail of multivariate normal cdf at 3 separate pairs of lower limits¶
/*
** Lower limits of integration
** x1 ≥ -1 and x2 ≥ -1.1
** x1 ≥ 0 and x2 ≥ 0.1
** x1 ≥ 1 and x2 ≥ 1.1
*/
x = { -1 -1.1,
0 0.1,
1 1.1 };
// Correlation matrix
corr = { 1 0.31,
0.31 1 };
// Define non-centrality parameter for each variable
nonc = { 0, 0 };
// Define control structure
struct cdfmControl ctl;
ctl = cdfmControlCreate();
/*
** Calculate cumulative probability of
** each pair of lower limits
*/
{ p, err, retcode } = cdfMvnce(ctl, x, corr, nonc);
After the above code, p should equal:
0.74642007
0.27999181
0.04074138
which means that:
Compute the upper tail of noncentral multivariate normal cdf¶
/* Lower limits of integration
** x1 ≥ -1 and x2 ≥ -1.1
** x1 ≥ 0 and x2 ≥ 0.1
** x1 ≥ 1 and x2 ≥ 1.1
*/
x = { -1 -1.1,
0 0.1,
1 1.1 };
// Correlation matrix
corr = { 1 0.31,
0.31 1 };
// Define non-centrality vector, Kx1
// vector, one for each variable
nonc = { 1, -2.5 };
// Define control structure
struct cdfmControl ctl;
ctl = cdfmControlCreate();
/*
** Calculate cumulative probability of
** each pair of lower limits
*/
{ p, err, retcode } = cdfMvnce(ctl, x, corr, nonc);
After the above code, p should equal:
0.08046686
0.00455354
0.00014231
which means with non-central vector, the multivariate normal cdf are:
Remarks¶
The
cdfMvnce()
evaluates the upper tail of MVN integral, where \(1\leqslant i \leqslant N\) For the non-central MVN, we have where \(z\) denotes \(K\) -dimensional multivariate normal distribution, \(\delta\) denotes the \(K \times 1\) non-centrality vector with \(-\infty<\:\ \delta_k <\:\ \infty\).The correlation matrix \(R\) is defined by \(\Sigma = DRD\), where \(D\) denotes the diagonal matrix which has the square roots of the diagonal entries for covariance matrix \(\Sigma\) on its diagonal.
References¶
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, 63:361-378, 1999.
Genz, A., ‘’Numerical computation of multivariate normal probabilities’’, Journal of Computational and Graphical Statistics, 1:141-149, 1992.
See also
Functions cdfMvn2e()
, cdfMvnce()
, cdfMvte()