首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MLE函数: optim(start,f,method = method,hessian = TRUE,...)中的错误:非有限差值[1]

MLE函数: optim(start,f,method = method,hessian = TRUE,...)中的错误:非有限差值[1]
EN

Stack Overflow用户
提问于 2020-10-22 15:27:33
回答 1查看 448关注 0票数 0

我在试着拿到MLE。

代码语言:javascript
复制
loglike <- function(theta) {
  ll <- 14 * log(1 - theta) + 12216 * log(theta)
  ll
}

neg.loglike <- function(theta) -loglike(theta)

mle(neg.loglike, start = list(theta = 0.5))

我得到了一个错误

代码语言:javascript
复制
Error in optim(start, f, method = method, hessian = TRUE, ...) : 
  non-finite finite-difference value [1]
In addition: There were 37 warnings (use warnings() to see them)

我通常使用上面的代码,但我发现了另一个函数:

代码语言:javascript
复制
mle2(neg.loglike, start = list(theta = 0.5))

而且它起作用了。为什么另一个不能工作?

EN

回答 1

Stack Overflow用户

发布于 2020-12-30 20:44:17

函数mle默认使用最小化方法BFGS,这需要计算对数似然函数的雅可比(有时是Hessian)。如果不为雅可比函数和黑森函数指定解析函数,则可能会出现数值问题。这就是你得到的错误。

默认情况下,函数mle2使用最小化方法内尔德-米德,该方法不依赖于计算对数似然函数的导数。

如果您在mle呼叫中添加method="Nelder-Mead“,我怀疑您将获得与mle2呼叫相同的结果。

详情请参考https://www.rdocumentation.org/packages/bbmle/versions/1.0.23.1/topics/mle2https://www.rdocumentation.org/packages/stats4/versions/3.6.2/topics/mle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64477268

复制
相关文章

相似问题

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