首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >optim函数参数缺失

optim函数参数缺失
EN

Stack Overflow用户
提问于 2013-12-09 19:45:44
回答 2查看 5.3K关注 0票数 8

这是我的密码。kum.loglik函数返回负的逻辑似然,并接受两个参数a和b。我需要找到a和b,使用optim来最小化这个函数。(n1,n2,n3是预先指定的,并传递给optim函数.)

代码语言:javascript
运行
复制
kum.loglik = function(a, b, n1, n2, n3) {
  loglik = n1*log(b*beta(1+2/a,b)) + n2 * log(b*beta(1+2/a,b)-2*b*beta(1+1/a,b)+1) +
    n3 * log(b*beta(1+1/a,b)-b*beta(1+2/a,b))
  return(-loglik)
}
optim(par=c(1,1), kum.loglik, method="L-BFGS-B",
      n1=n1, n2=n2, n3=n3,
      control=list(ndeps=c(5e-4,5e-4)))

这段代码应该运行良好,但它会给出错误消息。

代码语言:javascript
运行
复制
Error in b * beta(1 + 2/a, b) : 'b' is missing

这个代码有什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-09 19:49:59

问题是(直接来自optim ):

代码语言:javascript
运行
复制
fn: A function to be minimized (or maximized), with first
argument the vector of parameters over which minimization is
to take place.

您的kum.loglik函数需要取一个向量v,从中提取参数,例如:

kum.loglik=function(v) { a = v[1]; b = v[2]; ...}

票数 11
EN

Stack Overflow用户

发布于 2018-11-08 22:12:57

我总是用以下方法,它能给你最好的结果

代码语言:javascript
运行
复制
p0 <- c(a,b) #example vector of starting values
m <- optim(p0, loglik, method="BFGS", control=list(fnscale=-1, trace=10),
hessian=TRUE, x=data.frame)
#for table of results
rbind(m$par, sqrt(diag(solve(-m$hessian))))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20479315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档