0

R では、ウィーナー プロセスに従って変数をシミュレートしています。

mcsim <- function(drift, dt, spot, spotdate, nap, maturity, sim)
{
  for(n in 1:sim)
  {
    for(i in 1:maturity)
    {
      dz = rnorm(1, mean=0, sd=1);
      ivol = findnap(spot[i,n], spotdate[i], nap)
      ret = (drift-(ivol^2)/2)*dt+ivol*sqrt(dt)*dz;
      spot[i+1,n] = spot[i,n]*exp(ret);

      #display counter
      cat(n/sim, "% of 100% \r");
      #flush.console()
    }
  }
  return(spot);
}

ivolは実数です。たとえば、0.23 retも実数です。

エラーは次の行にあるようです:spot[i+1,n] = spot[i,n]*exp(ret);

>Error in FR : le nombre d'objets à remplacer n'est pas multiple de la taille du remplacement

>Error in EN : the number of objects that must be replaced is not a multiple of the size of the replacement. (sorry for the rough translation)
4

1 に答える 1

1

(エラーのあるさまざまな操作を試した後)
これが起こっていると私が思うことです:

m <- matrix(1:4, ncol=2)

#      [,1] [,2]
# [1,]    1    3
# [2,]    2    4

m[2,2] <- m[2,1] * 4
# works fine
> m
#      [,1] [,2]
# [1,]    1    3
# [2,]    2    8

# will result in your error
m[2,2] <- m[1,2] * (1:2)

# Error in m[2, 2] <- m[1, 2] * (1:2) : 
#   number of items to replace is not a multiple of replacement length

基本的に、マトリックスの要素を複数の要素に置き換えようとしています。私はこれが起こっていることだと推測しています(あなたは複数の要素のベクトルを返します)。exp(.)

于 2013-03-08T14:39:31.387 に答える