R中的数值积分

时间:2017-08-09 21:17:45

标签: r integration

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

enter image description here

“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函数..有没有更好的方法来进行计算?

1 个答案:

答案 0 :(得分:1)

不是“/”运算符优于“ - ”。意味着在这一行

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

你犯了错误。错误是

(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方法或.....