R 中的数值积分

Numerical integration in R

我正在尝试计算这个积分:

"A"和"Beta"是常数,"PHI"资本是正态分布N(0,1)的边际分布函数,"phi"是密度正常法则 N(0,1) 和 P(tau <= t) = 1/2

这是我的实现:

integral <- function(A, beta) {

f <- function(x) {

# We have P(tau <= t) = 1/2

pnorm(qnorm(1/2,0,1) - beta*x / (sqrt(1-(beta^2))), 0, 1)*(1/sqrt(2*pi)*exp(-x^2 / 2)    

}


integrate(f,lower=-Inf, upper = A)$value

}

我不太确定 qnorm 函数。有没有更好的计算方法?

不是“/”运算符优于“-”。这行的意思是

pnorm(qnorm(1/2,0,1) - beta*x / (sqrt(1-(beta^2))), 0, 1)

你做了一个 mistake.correct 是

(qnorm(1/2,0,1) - beta*x)
 ###not pnorm(qnorm(1/2,0,1)- beta*x.... =>pnorm((qnorm(1/2,0,1) - 
 ###beta*x)....

我使用此代码并得到答案

integral <- function(A, beta) {
f <- function(x) {
temp<-(qnorm(1/2,0,1) - beta*x) / (sqrt(1-(beta^2)))
pnorm(temp,0,1)*dnorm(x,0,1)    
}
integrate(f,lower=-Inf, upper = A)$value
}
integral(0,0)  ##.25
integral(10,.9) ##.5

此外,如果您想要另一种方法来计算任何复杂的积分,您可以使用 monte carlo 方法或 .....