Many thanks, Peter. Creating a wrapper function for integrand using Vectorize, and then integrating the wrapper, does indeed solve the problem. I tried your final suggestion, but the variable x still gets passed into pmvnorm inside the new mean and variance matrix, leading to the same problem when the integrate function vectorizes x. All the best Paul
On 8 Feb 2014, at 18:04, peter dalgaard wrote: > ou almost said it yourself: Your integrand doesn't vectorize. The > direct culprit is the following: > > If x is a vector, what is lower=c(x,x,x,x)? A vector of length > 4*length(x). And pmvnorm doesn't vectorize so it wouldn't help to > have lower= as a matrix (e.g., cbind(x,x,x,x)) instead. > > A straightforward workaround is to Vectorize() your function. > Possibly more efficient to put an mapply() of sorts around the > pmvnorm call. > > However, wouldn't it be more obvious to work out the mean and > variance matrix of (x1-x5, x2-x5, x3-x5, x4-x5) and then just > pmvnorm(... lower=c(0,0,0,0), upper=c(Inf, Inf, Inf, Inf))?? [[alternative HTML version deleted]] ______________________________________________ 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.