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, algorithm = GenzBretz(), ...)

_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'. 

algorithm: an object of class 'GenzBretz' or 'Miwa' specifying both the
          algorithm to be used as well as  the associated hyper
          parameters.

     ...: additional parameters (currently given to 'GenzBretz' for 
          backward compatibility issues). 

_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'.

     The multivariate normal density and random deviates 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.

_S_o_u_r_c_e:

     <URL: http://www.sci.wsu.edu/math/faculty/genz/homepage>

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

     Miwa, A., Hayter J. and Kuriki, S. (2003). The evaluation of
     general non-centred orthant probabilities. _Journal of the Royal
     Statistical Society_, Ser. B, 65, 223-234.

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

