2

次のコードを実行すると、"number of items to replace is not a multiple of replacement length." という警告が表示されます。

3 つの基準 (r>1e-6、r<-1e-6、および 1e-6>r>-1e-6) に基づいて異なる値を持つベクトル l を格納する関数を作成したいと考えています。値は関数のパラメーターに基づいており、nlm コマンドを使用して最大化されます。

ll <- function(param, r, rm) {
  a1 <- param[1]
  a2 <- param[2]
  b <- param[3]
  sigma <- param[4]
  nr <- length(r)
  l <- vector("numeric",nr)
  for (j in 1:nr) {
    l[j] <- ifelse(r>1e-6, log(1/(2*pi*sigma^2)^(1/2)) - ((1/2)*sigma^2)*(r+a2-b*rm)^2,
            ifelse(r<-1e-6, log(1/(2*pi*sigma^2)^(1/2)) - ((1/2)*sigma^2)*(r+a1-b*rm)^2,
                   log(pnorm((a2-b*rm)/sigma) - pnorm((a1-b*rm)/sigma))))
  }
  return(-sum(l))
}
4

0 に答える 0