2017-01-21 36 views
0

你好,我希望得到一些帮助,以整合基于随机变量的函数。该功能是获得连续分配的预期值。将函数集成到R中

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

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),模式= “功能” ,ENVIR = ENVIR):
对象 'e' 的模式 '功能' 的未找到

+0

我想对于为y所有其他变量X,V,T,R,K的将要给出的集成。 – Dmitriy

+0

Y应该是一个随机生成的数字,我试图编程的函数会给我一个连续分布的期望值(这是从-inf到inf的积分,如果y * f(y)dy – Dmitriy

+0

if你读'?整合'第一个参数是一个“R函数...”你的代码正在计算e的一个值我不知道'整合',所以我不能提供多少建议,但我认为你需要定义另一个函数并将其作为参数传递给'integrate' – epi99

回答

0

你的鳕鱼e有多个问题,但导致错误的第一个问题是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)} 
+1

那么,'integrate'需要一个函数作为第一个参数,而“\t 我想整合y”似乎清楚地表明'e'应该是一个函数,也许这足以推动作者前进,一次解决一个问题。 –