R语言 单重积分与二重积分数值结果不同的等价积分

jaql4c8m  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(128)

我有以下等价的积分,涉及标准正态分布的pdf和cdf,分别用$\phi(x)$和$\Phi(x)$表示。对于背景,积分表示三个观测值的样本范围的概率分布,这三个观测值独立且同分布为标准正态。

我使用R中的pracma包编写了第一个二重积分和最后一个单积分:

library(pracma)

t = 0.2
single_int <- function(x) 3*dnorm(x)*(pnorm(x+t)-pnorm(x))^2
I1 = integral(single_int,-999,999)       

double_int <- function(x,y) 6*dnorm(x)*dnorm(x+y)*(pnorm(x+y)-pnorm(x))
I2 = integral2(double_int,-999,999,-999,t)$Q

输出为:

> I1
[1] 0.01096555
> I2
[1] 0

当基础积分相同时,为什么会有不同的结果?

dgiusagp

dgiusagp1#

你的积分对你用来代替无穷大的边界的选择是敏感的。在integral中,可以使用-InfInf。在integral2中,你不能。我会使用cubature包代替。当一个积分边界是无限的,它会自动执行变量的变化,以下降到一个有限的边界。

library(cubature)

f <- function(xy) {
  x <- xy[1]; y <- xy[2]
  6 * dnorm(x) * dnorm(x+y) * (pnorm(x+y) - pnorm(x))
}

hcubature(
  f, lowerLimit = c(-Inf, 0), upperLimit = c(Inf, 0.2)
)

# 0.01096558

相关问题