1

私はRが初めてで、最適化に問題があります。

d <- c(0, 9.017, -9.017, 0, 9.017, 0, -8.579, -7.849, 0, 0, -7.849, 
    -9.017, 0, -7.849, -7.849, 0, 0, 0, 8.579, 1.168, 8.579, 8.579, 
    -7.849, 0.729, 8.579, 9.017, 0, -0.438)

x <- c(0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 
    1, 1, 0, 1, 1, 1, 0, 1)

log.like<-function (sigma){ 
    theta = pnorm(d,mean=0,sd=sigma) 
    logl = sum(log((theta ^ x) * ((1-theta)^(1-x))))
    -logl
}

optim(0,fn=log.like,method="L-BFGS-B",lower=0,upper=1)

次のエラーが表示されます。

 Error in optim(0, fn = log.like, method = "L-BFGS-B", lower = 0, upper = 1) : 
  L-BFGS-B needs finite values of 'fn'
4

1 に答える 1

5
> log.like(0)
[1] Inf

開始値として 0 を使用していますが、それは関数に無限の値を与えます。これが、関数が文句を言う理由です。実際に適切な開始値を選択すると、問題なく動作するはずです。ただし、パラメーターの上限を 1 に設定している理由がわかりません。それも増やしたほうがいいかもしれません。

于 2012-10-12T05:10:03.470 に答える