我有以下功能
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'
我真的很感激你的回答!
答案 0 :(得分:4)
使用optim
和nlm
同样适用于我。我做了一点修改
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