Hi Torsten,

It would be useful to "warn" the users that the multivariate normal probability 
calculated by "pmvnorm" using the GenzBretz algorithm is "random", i.e. the 
result can vary between repeated executions of the function.  This would 
prevent inappropriate use of pmvnorm such as computing derivatives of it (see 
this email thread).

It seems that the other algorithm "Miwa" is deterministic, but not sure how 
reliable it is (I had some trouble with it).

It would also be useful in the help page to provide a link to two other 
functions for evaluating multivariate normal probabilities:

mnormt::sadmvn
mprobit::mvnapp

In particular, the `mvnapp' function of Harry Joe in "mprobit" package seems to 
be very interesting as it provides very accurate results using asymptotic 
expansions.

Best,
Ravi.
____________________________________________________________________

Ravi Varadhan, Ph.D.
Assistant Professor,
Division of Geriatric Medicine and Gerontology
School of Medicine
Johns Hopkins University

Ph. (410) 502-2619
email: rvarad...@jhmi.edu


----- Original Message -----
From: Ravi Varadhan <rvarad...@jhmi.edu>
Date: Saturday, November 21, 2009 8:15 pm
Subject: Re: [R] Problem with Numerical derivatives (numDeriv) and mvtnorm
To: SL <sl...@yahoo.fr>
Cc: r-help@r-project.org


> Go back to your calculus text and review the definition of derivative:
> 
> f'(x) = lim h -> 0  [f(x+h) - f(x)] / h
> 
> when f(x) and f(x + h) are random variables, the above limit does not 
> exist.  In fact, f'(x) is also a random variable.
> 
> Now, if you want the derivative you have to use a multivariate 
> integration algorithm that yields a deterministic value.  The function 
> `sadmvn' in the package "mnormt" can do this:
> 
> require(mnormt)
> 
> PP2 <- function(p){
>    thetac <- p
>    thetae <- 0.323340333
>    thetab <- -0.280970036
>    thetao <-  0.770768082
>    ssigma  <- diag(4)
>    ssigma[1,2] <-  0.229502120
>    ssigma[1,3] <-  0.677949335
>    ssigma[1,4] <-  0.552907745
>    ssigma[2,3] <-  0.784263100
>    ssigma[2,4] <-  0.374065025
>    ssigma[3,4] <-  0.799238700
>    ssigma[2,1] <-  ssigma[1,2]
>    ssigma[3,1] <-  ssigma[1,3]
>    ssigma[4,1] <-  ssigma[1,4]
>    ssigma[3,2] <-  ssigma[2,3]
>    ssigma[4,2] <-  ssigma[2,4]
>    ssigma[4,3] <-  ssigma[3,4]
>   pp <- sadmvn(lower=rep(-Inf, 4), 
> upper=c(thetac,thetae,thetab,thetao), mean=rep(0,4), varcov=ssigma, 
> maxpt=100000)
> return(pp)
> }
> 
> xx <- -0.6675762
> 
> P2(xx)
> 
> require(numDeriv)
> 
> grad(x=xx, func=PP2)
> 
> 
> I hope this helps,
> Ravi.
> 
> ____________________________________________________________________
> 
> Ravi Varadhan, Ph.D.
> Assistant Professor,
> Division of Geriatric Medicine and Gerontology
> School of Medicine
> Johns Hopkins University
> 
> Ph. (410) 502-2619
> email: rvarad...@jhmi.edu
> 
> 
> ----- Original Message -----
> From: SL <sl...@yahoo.fr>
> Date: Saturday, November 21, 2009 2:42 pm
> Subject: Re: [R] Problem with Numerical derivatives (numDeriv) and mvtnorm
> To: r-help@r-project.org
> 
> 
> > Thanks for you comment.
> > 
> > There is certainly some "Monte Carlo sampling" involved in mvtnorm but
> > why derivatives could not be computed? In theory, the derivatives
> > exist (eg. bivariate probit). Moreover, when used with optim, there
> > are some numerical derivatives computed... does it mean that mvtnorm
> > cannot be used in an optimisation problem? I think it hard to believe.
> > 
> > One possibility would be to use the analytical derivatives and then 
> a
> > do-it-yourself integration but i was looking for something a bit more
> > comprehensive. The mvtnorm package uses a specific way to compute
> > pmvnorm and I'm far to do a good enough job so that derivatives can
> > compare with what mvtnorm can do.
> > 
> > Stef
> > 
> > ______________________________________________
> > R-help@r-project.org mailing list
> > 
> > PLEASE do read the posting guide 
> > and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help@r-project.org mailing list
> 
> PLEASE do read the posting guide 
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to