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 multivariate normal  case is treated as a special case of
     'pmvt' with 'df=0' and  univariate problems are passed to 'pnorm'.

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

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

     The evaluated 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
     <frank.bretz@pharma.novartis.com>, 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

_S_e_e _A_l_s_o:

     'qmvnorm'

_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)))

