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 方法或 .....
我正在尝试计算这个积分:
"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 方法或 .....