The main problem is that your function is not vectorized. Here is one solution:
> require(mvtnorm) > f=function(x){ sapply(x, function(y) {dmvnorm(c(0.6, 0.8), mean=c(0.75, 0.75/y))*dnorm(y, mean=0.6, sd=0.15)}) } > integrate(f, lower=-Inf, upper=Inf) 0.1314427 with absolute error < 4e-05 > Hope this helps, Ravi. -----Original Message----- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Carrie Li Sent: Wednesday, June 23, 2010 7:06 PM To: r-help Subject: [R] integrate dmvtnorm Hello, everyone, I have a question about integration of product of two densities. Here is the sample code; however the mean of first density is a function of another random variable, which is to be integrated. ## f=function(x) {dmvnorm(c(0.6, 0.8), mean=c(0.75, 0.75/x))*dnorm(x, mean=0.6, sd=0.15)} integrate(f, lower=-Inf, upper=Inf) ## error message Error in dmvnorm(c(0.6, 0.8), mean = c(0.75, 0.75/x)) : mean and sigma have non-conforming size I think it's because the mean in dmvnorm is a function of x.... is there any package or function to handle this question ? Thanks for any help! Carrie [[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. ______________________________________________ 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.