pmvnorm               package:mvtnorm               R Documentation

_M_u_l_t_i_v_a_r_i_a_t_e _N_o_r_m_a_l _D_i_s_t_r_i_b_u_t_i_o_n

_D_e_s_c_r_i_p_t_i_o_n:

     Computes the distribution function of the multivariate normal 
     distribution for arbitrary limits and correlation matrices  based
     on algorithms by Genz and Bretz.

_U_s_a_g_e:

     pmvnorm(lower=-Inf, upper=Inf, mean=rep(0, length(lower)),
             corr=NULL, sigma=NULL, maxpts = 25000, abseps = 0.001,
             releps = 0)

_A_r_g_u_m_e_n_t_s:

   lower: the vector of lower limits of length n.

   upper: the vector of upper limits of length n.

    mean: the mean vector of length n.

    corr: the correlation matrix of dimension n.

   sigma: the covariance matrix of dimension n. Either 'corr' or
          'sigma' can be specified. If 'sigma' is given, the problem is
          standardized. If neither 'corr' nor 'sigma' is given, the
          identity matrix is used  for 'sigma'. 

  maxpts: maximum number of function values as integer. 

  abseps: absolute error tolerance as double. 

  releps: relative error tolerance as double. 

_D_e_t_a_i_l_s:

     This program involves the computation of  multivariate
     normal-probabilities with arbitrary correlation matrices. It
     involves both the computation of singular and nonsingular 
     probabilities. The methodology is described in Genz (1992, 1993).

     Note that both '-Inf' and '+Inf' may be specified in 'lower' and
     'upper'. For more details see 'pmvt'. 

     The mvn case is treated as a special case of 'pmvt' with 'df=0'. 

     Univariate problems are passed to 'pnorm'.

     Multivariate normal density and random numbers are available using
     'dmvnorm' and 'rmvnorm'.

_V_a_l_u_e:

     The distribution function is returned with attributes 

   error: estimated absolute error and

     msg: status messages.

_A_u_t_h_o_r(_s):

     Fortran Code by Alan Genz <AlanGenz@wsu.edu> and Frank Bretz
     <bretz@ifgb.uni-hannover.de>, R port by Torsten Hothorn
     <Torsten.Hothorn@rzmail.uni-erlangen.de>

_R_e_f_e_r_e_n_c_e_s:

     Genz, A. (1992). Numerical computation of multivariate normal
     probabilities. _Journal of Computational and Graphical
     Statistics_, *1*, 141-150 

     Genz, A. (1993). Comparison of methods for the computation of
     multivariate normal probabilities. _Computing Science and
     Statistics_, *25*, 400-405

_E_x_a_m_p_l_e_s:

     n <- 5
     mean <- rep(0, 5)
     lower <- rep(-1, 5)
     upper <- rep(3, 5)
     corr <- diag(5)
     corr[lower.tri(corr)] <- 0.5
     corr[upper.tri(corr)] <- 0.5
     prob <- pmvnorm(lower, upper, mean, corr)
     print(prob)

     stopifnot(pmvnorm(lower=-Inf, upper=3, mean=0, sigma=1) == pnorm(3))

     a <- pmvnorm(lower=-Inf,upper=c(.3,.5),mean=c(2,4),diag(2))

     stopifnot(round(a,16) == round(prod(pnorm(c(.3,.5),c(2,4))),16))

     a <- pmvnorm(lower=-Inf,upper=c(.3,.5,1),mean=c(2,4,1),diag(3))

     stopifnot(round(a,16) == round(prod(pnorm(c(.3,.5,1),c(2,4,1))),16))

     # Example from R News paper (original by Genz, 1992):

     m <- 3
     sigma <- diag(3)
     sigma[2,1] <- 3/5
     sigma[3,1] <- 1/3
     sigma[3,2] <- 11/15
     pmvnorm(lower=rep(-Inf, m), upper=c(1,4,2), mean=rep(0, m), corr=sigma)

     # Correlation and Covariance

     a <- pmvnorm(lower=-Inf, upper=c(2,2), sigma = diag(2)*2)
     b <- pmvnorm(lower=-Inf, upper=c(2,2)/sqrt(2), corr=diag(2))
     stopifnot(all.equal(round(a,5) , round(b, 5)))

