在R中集成一个函数

时间:2017-01-21 22:30:00

标签: r statistics integration normal-distribution montecarlo

您好我希望能够帮助整合基于随机变量的函数。该函数用于获得连续分布的期望值。

这是我到目前为止的代码。

montecarlo = function(r,v,t,x,k) {
y = rnorm(1)
e = (y*(x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k))
MCOP=exp(-r*t)*integrate(e, lower = -Inf, upper = Inf)
if((x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k) > 0) {
   return(MCOP)
 } else {
   return(0)
   } 
}

如果我输入例如: montecarlo(.03, .65, 3, 34, 30)

我收到一条错误消息:

  

get中的错误(as.character(FUN),mode =" function",envir = envir):
  对象' e'模式'功能'没找到

1 个答案:

答案 0 :(得分:0)

您的代码有多个问题,但导致错误的第一个问题是e应该是一个函数。 即,而不是

y = rnorm(1)
e = (y*(x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k))
你应该

e = function(y){y*(x*exp((-v*sqrt(t)*y)+((r-(.5*v^2))*t))-k)}