2017-01-21 2 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) 
    } 
} 

나는 예를 들면 입력하는 경우 :

오류 GET (as.character (FUN), 모드 = "기능" montecarlo(.03, .65, 3, 34, 30)

내가라는 오류 메시지가 , envir = envir) :
객체

+0

해야한다. – Dmitriy

+0

Y는 무작위로 생성 된 숫자이고 내가 프로그램하려고하는 함수는 연속 분포의 예상 값을 제공합니다 (이는 -inf에서 y * f (y)의 정수까지의 정수입니다) – Dmitriy

+0

if 당신은'? integrate'를 읽습니다. 첫 번째 매개 변수는 "an R function ..."입니다. 여러분의 코드는 e에 대한 값을 계산하고 있습니다. 나는'integrate'을 모른다. 그래서 많이 조언 할 수는 없지만, 다른 것을 정의 할 필요가 있다고 생각한다. 함수를 합하여 'integrate'의 매개 변수로 전달합니다. – epi99

답변

0

귀하의 대구를 찾을 수 없습니다 모드 '기능'은의 'E' e는 여러 가지 문제가 있지만 오류의 원인 중 첫 번째는 e이 함수 여야한다는 것입니다. 은 즉, 대신

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

의 당신은 내가 다른 변수 X, V, T, R, 및 K 모두 제공 할 예정 Y에 대한 통합하려는

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

음,'integrate'는 첫 번째 인수로 함수가 필요합니다. "\t "y와 관련하여 통합하고 싶습니다. "e'가 있어야한다는 명확한 표시가있는 것 같습니다. 기능은 아마도 저자가 앞으로 나아갈 수있는 충분한 힘이 될 것입니다. 한번에 한 가지 문제를 해결하십시오. –