使用nlm和optim优化函数

时间:2013-11-17 17:05:27

标签: r

我有以下功能

f <- function(a,b) {
    (a - 1) + 3.2/b + 3*log(gamma(a)) + 3*a*log(b);
}

我想用nlm() ,optim() ect...优化此功能。

我试图用:

value <- nlm(f,optim(f))

但是,我收到一条错误消息。cannot coerce type 'closure' to vector of type 'double'我真的很感激你的回答!

1 个答案:

答案 0 :(得分:4)

使用optimnlm同样适用于我。我做了一点修改

f <- function(par) {
  a <- par[1]
  b <- par[2]
  (a - 1) + 3.2/b + 3*log(gamma(a)) + 3*a*log(b);
}

> optim(c(1, .3), fn=f)
$par
[1] 1.399685 0.762025

$value
[1] 3.09904

$counts
function gradient 
      55       NA 

$convergence
[1] 0

$message
NULL

> nlm(f, c(1,.3))
$minimum
[1] 3.09904

$estimate
[1] 1.3999515 0.7619307

$gradient
[1] 3.096044e-07 3.907985e-07

$code
[1] 1

$iterations
[1] 17