单积分和双积分的等效积分不会给出相同的数值结果

sta*_*711 1 r normal-distribution numerical-integration

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

范围分布

pracma我使用以下包对第一个二重积分和最后一个单积分进行了编码R

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

Run Code Online (Sandbox Code Playgroud)

输出是:

> I1
[1] 0.01096555
> I2
[1] 0 
Run Code Online (Sandbox Code Playgroud)

当基础积分相同时,有什么想法为什么会给出不同的结果吗?

Sté*_*ent 5

您的积分对于您用来替换无穷大的界限的选择是敏感的。在 中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
Run Code Online (Sandbox Code Playgroud)