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)
当基础积分相同时,有什么想法为什么会给出不同的结果吗?
您的积分对于您用来替换无穷大的界限的选择是敏感的。在 中integral,您可以使用-Inf和Inf。在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)