QuantLib has a modification due to Graeme West of Allen Genz's algorithm from 
pmvnorm. You may be able to call that code in your project by linking with it. 
Genz also has Fortran code on his web site. Perhaps that would be useful as 
well.

I think it's easy enough to read the 2004 paper and write up your own. Follow 
Genz's suggestions for the numerical integration part.

There are other algorithms floating around since 2004. However, I would be 
skeptical of these unless I could get access to extensive tests, comparing to 
known verified implementations. Having done work on this topic myself, I would 
say that the West modification of the Genz algorithm is the fastest and most 
accurate, especially for the trivariate case. I've not seen any specific 
algorithms for the quadvariate case, although the quadvariate normal 
probability integral does show up in quant finance.

http://www.wilmott.com/pdfs/090721_west.pdf

Google my presentation "Bank Capital Models and Bivariate Normal Probability 
Calculations" for some references.

Dale Smith, Ph.D.
Senior Financial Quantitative Analyst
Financial & Risk Management Solutions
Fiserv
Office: 678-375-5315
www.fiserv.com

-----Original Message-----
From: rcpp-devel-boun...@r-forge.wu-wien.ac.at 
[mailto:rcpp-devel-boun...@r-forge.wu-wien.ac.at] On Behalf Of Dirk Eddelbuettel
Sent: Sunday, January 26, 2014 2:15 PM
To: Scott Monroe
Cc: rcpp-devel@lists.r-forge.r-project.org
Subject: Re: [Rcpp-devel] Recommendations on how to incorporate pmvnorm function


Scott,

On 26 January 2014 at 10:58, Scott Monroe wrote:
| I was hoping for advice on approaches to accomplishing the following goal.
| I'd like to create an R package using Rcpp that calls the pmvnorm (cdf 
| for multivariate normal) function from the mvtnorm library.  I'd like 
| to avoid calling it through R, as I need to do it many times, and I'd 
| like to avoid the overhead in going between C++ and R.
| 
| The source code, written by Alan Genz, is in Fortran.  I've also found 
| on GitHub a C++ wrapped version of the Fortran code:
| 
| https://github.com/zhanxw/libMvtnorm
| 
| The latter includes a Makefile, which I don't know how to handle.

Sorry to break this to you on a Sunday.  You will not make very far in 
programming if that remains an obstacle for you.  You really should buckle down 
and read a few tutorial or books on this.  It. Is. Not. That. Hard.

Especially with R. And Rcpp. And existing packages -- at current count 164 on 
CRAN alone.  Look at their sources.  Many/most get by without a Makefile 
because R knows how to "Do The Right Thing". Including with Fortran.

Now, the proper long-term solution is probably to talk to Torsten to have the 
relevant functions exported from his mvtnorm package so that other CRAN package 
can re-use the code.  

But it's a big world. Maybe someone will write this for you out of the kindness 
of their hearts, or maybe you can pay someoone.

Dirk

--
Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com 
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to