【发布时间】:2016-05-03 11:23:04
【问题描述】:
我正在使用 R2Cuba 1.1-0 中的 cuhre 来集成以下功能
fn <- function(x) {
pnorm((-2-sum(sqrt(vecRho)*x))/sqrt(1-sum(vecRho)))*prod(dnorm(x))
}
其中 vecRho 是 0 到 0.1 之间的 6 个数字的向量,即
vecRho<-runif(6,0,0.1)
根据定义,被积函数 fn 介于 0 和 1 之间。预计积分为正。然而,当 vecRho 的长度超过 5 时,使用 cuhre 结果变为负数。
NDIM<-length(vecRho)
cuhre(NDIM, 1, fn,
flags = list(verbose =0),
lower = rep(-10,NDIM),
upper = rep(10,NDIM))$value
[1] -0.4738284
此外,当 vecRho >=6 时,积分的绝对值随着 vecRho 长度的增加而增加。
我可以做些什么来解决这个问题吗?谢谢!
【问题讨论】:
-
不清楚
prod(dnorm(x))是什么意思。你真的需要所有高斯核的 PRODUCT 吗? -
是的,prod(dnorm(x)) 是密度函数。由于所有变量都是独立的,因此 n-dim 变量正态分布的密度实际上是 dnorm(x) 的乘积。