{smcl}
{* *! version 1.0 03 Jan 2019}{...}
{vieweralsosee "" "--"}{...}
{vieweralsosee "Install mvtnorm" "ssc install MVTNORM"}{...}
{vieweralsosee "Help mvtnorm (if installed)" "help mvtnorm"}{...}
{viewerjumpto "Description" "mvtnorm##description"}{...}
{viewerjumpto "Remarks" "mvtnorm##remarks"}{...}
{viewerjumpto "Examples" "mvtnorm##examples"}{...}
{title:Title}
{phang}
{bf:mvtnorm} {hline 2} Module to work with the multivariate normal and multivariate t distributions, with and without variable truncation

{marker description}{...}
{title:Description}

{pstd}
{bf:mvtnorm} provides a set of rclass commands for working with the multivariate normal and multivariate t distributions, with and without truncation.
Specifically, commands are available to: (1)
evaluate probability density functions, (2)
generate random deviates, (3)
evaluate distribution functions, and (4)
compute equicoordinate quantiles.
{p_end}

{pstd}
The best place to start to learn about the available commands is the associated {it:Stata J} article, Grayling and Mander (2018), which contains examples on how to (1)
compare the probability density functions of multivariate normal and multivariate t distributions, (2)
compare the familywise error-rates provided by Bonferroni and Dunnett's multiple comparison corrections, (3)
visualise the value of orthont probabilities in the presence of truncation.
{p_end}

{pstd}
However, the available functionality is highly motivated by the established R package of the same name (Genz {it:et al}, 2018), and the R package {bf:tmvtnorm} (Wilhelm and Manjunath, 2015).
Thus, their associated texts, Genz and Bretz (2009) and Wilhelm and Manjunath (2010), will also likely contain useful background information.
{p_end}

{pstd}
Note that some equivalent functionality is present in Stata for the multivaraite normal distribution via the built-in commands {help lnmvnormalden}, {help drawnorm}, and {help mvnormalcv}.
See below for further details.
{p_end}

{pstd}
Finally, note that the file "mvtnorm_mata.do" contains a set of equivalent Mata functions, to allow utilisation in Stata to be bypassed if desired.
{p_end}

{title:Available commands}

{bf:Multivariate normal distribution}

{phang}
{help invmvnormal}: A command for computing equicoordinate quantiles of the multivariate normal distribution,
based on inversion of integrals evaluated using {help pmvnormal} or {help mvnormalcv} in combination with Brent's root-finding algorithm (Brent, 1973).
{p_end}

{phang}
{help mvnormalden}: A command for evaluating the probability density function of the multivariate normal distribution.
Provided only for completeness; in general {help lnmvnormalden} should be preferred.
{p_end}

{phang}
{help pmvnormal}: A command for evaluating the distribution function of the multivariate normal distribution.
For one- and two-dimensional multivariate normal distributions it makes use of the functionality provided by {help normal} and {help binormal} respectively.
For multivariate normal distributions of dimension three or more it utilises a Stata implementation of the algorithm given on page 50 of Genz and Bretz (2009):
a quasi-Monte Carlo integration algorithm over a randomised lattice after separation-of-variables has been performed.
In addition, it employs variable re-ordering in order to improve efficiency as suggested by Gibson {it:et al} (1994).
As of v1.7, {cmd:pmvnormal} is also vectorised, which will make it run to completion substantially faster than previous versions.
As of the release of Stata 15, the built in command {help mvnormalcv} is available that provides equivalent functionality via numerical quadrature.
The limitations of quadrature mean that {help pmvnormal} may well have smaller run-time for high-dimensional multivariate normal distributions (roughly of dimension greater than four).
However, for low-dimensional problems, {help mvnormalcv} should in general be preferred.
{p_end}

{phang}
{help rmvnormal}: A command for generating random deviates of the multivariate normal distribution.
Provided only for completeness; in general {help drawnorm} should be preferred.
{p_end}

{bf:Multivariate t distribution}

{phang}
{help invmvt}: A command for computing equicoordinate quantiles of the multivariate t distribution,
based on inversion of integrals evaluated using {help mvt} in combination with Brent's root-finding algorithm (Brent, 1973).
{p_end}

{phang}
{help mvtden}: A command for evaluating the probability density function of the multivariate t distribution.
{p_end}

{phang}
{help mvt}: A command for evaluating the distribution function of the multivariate t distribution.
For one-dimensional multivariate t distributions (i.e., univariate t distributions) it makes use of the functionality provided by {help t}. 
For multivariate t distributions of dimension two or more it utilises a Stata implementation of the algorithm given on page 50 of Genz and Bretz (2009):
a quasi-Monte Carlo integration algorithm over a randomised lattice after separation-of-variables has been performed.
In addition, it employs variable re-ordering in order to improve efficiency as suggested by Gibson {it:et al} (1994).
However, note that unlike {help pmvnormal}, {cmd:mvt} is not yet vectorised, which may make its run time long compared to the corresponding multivariate normal commands.
{p_end}

{phang}
{help rmvt}: A command for generating random deviates of the multivariate t distribution.
{p_end}

{bf:Truncated multivariate normal distribution}

{phang}
{help invtmvnormal}: A command for computing equicoordinate quantiles of the truncated multivariate normal distribution,
based on inversion of integrals evaluated using {help tmvnormal} in combination with Brent's root-finding algorithm (Brent, 1973).
{p_end}

{phang}
{help tmvnormalden}: A command for evaluating the probability density function of the truncated multivariate normal distribution.
{p_end}

{phang}
{help tmvnormal}: A command for evaluating the distribution function of the truncated multivariate normal distribution,
using the method of {help pmvnormal} or {help mvnormalcv} for evaluating the requisite multivariate normal distribution functions.
{p_end}

{phang}
{help rtmvnormal}: A command for generating random deviates of the truncated multivariate normal distribution, based on accept/reject sampling of the corresponding multivariate normal distribution.
{p_end}

{bf:Truncated multivariate t distribution}

{phang}
{help invtmvt}: A command for computing equicoordinate quantiles of the truncated multivariate t distribution,
based on inversion of integrals evaluated using {help tmvt} in combination with Brent's root-finding algorithm (Brent, 1973).
{p_end}

{phang}
{help tmvtden}: A command for evaluating the probability density function of the truncated multivariate t distribution.
{p_end}

{phang}
{help tmvt}: A command for evaluating the distribution function of the truncated multivariate t distribution, using the method of {help mvt} for evaluating the requisite multivariate t distribution functions.
{p_end}

{phang}
{help rtmvt}: A command for generating random deviates of the truncated multivariate t distribution, based on accept/reject sampling of the corresponding multivariate t distribution.
{p_end}

{title:Authors}
{p}

Dr Michael J Grayling
Population Health Sciences Institute, Newcastle University, UK
Email: {browse "michael.grayling@newcastle.ac.uk":michael.grayling@newcastle.ac.uk}

Prof Adrian P Mander
Centre for Trials Research, Cardiff University, Cardiff, UK

{title:References}

{phang}
Brent R (1973) {it:Algorithms for minimization without derivatives}. Prentice-Hall: New Jersey, US.

{phang}
Genz A, Bretz F (2009) {it:Computation of multivariate normal and t probabilities}. Lecture Notes in Statistics, Vol 195. Springer-Verlag: Heidelberg, Germany.

{phang}
Genz A, Bretz F, Miwa T, Mi X, Leisch F, Scheipl F, Hothorn T (2018). mvtnorm: Multivariate normal and t distributions. R package version 1.0-8. URL:{browse "http://CRAN.R-project.org/package=mvtnorm":http://CRAN.R-project.org/package=mvtnorm}.

{phang}
Gibson GJ, Glasbey CA, Elston DA (1994) Monte Carlo evaluation of multivariate normal integrals and sensitivity to variate ordering.
In {it:Advances in numerical methods and applications}, ed Dimov IT, Sendov B, Vassilevski PS, 120-6. River Edge: World Scientific Publishing.

{phang}
Grayling MJ, Mander AP (2018) {browse "https://www.stata-journal.com/article.html?article=st0542":Calculations involving the multivariate normal and multivariate t distributions with and without truncation}. {it:Stata J} {bf:18}(4){bf::}826-43.

{phang}
Kotz S, Nadarajah S (2004) {it:Multivariate t distributions and their applications}. Cambridge University Press: Cambridge, UK.

{phang}
Tong YL (2012) {it:The multivariate normal distribution}. Springer-Verlag: New York, US.

{phang}
Wilhelm S, Manjunath BG (2010) {browse "https://doi.org/10.32614/RJ-2010-005":tmvtnorm: A package for the truncated multivariate normal distribution}. {it: R J} {bf:2}(1){bf::}25-9.

{phang}
Wilhelm S, Manjunath BG (2015) tmvtnorm: Truncated multivariate normal and student t distribution. R package version 1.4-10. URL:{browse "https://cran.r-project.org/package=tmvtnorm":https://cran.r-project.org/package=tmvtnorm}.