【问题标题】:MLE function: Error in optim(start, f, method = method, hessian = TRUE, ...) : non-finite finite-difference value [1]MLE 函数:优化错误(start,f,method = method,hessian = TRUE,...):非有限差分值 [1]
【发布时间】:2020-10-22 07:27:33
【问题描述】:

我正在尝试获取 MLE。

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))

我收到了错误

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)

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

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

它奏效了。为什么另一个不工作?

【问题讨论】:

    标签: r mle


    【解决方案1】:

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

    mle2函数默认使用最小化方法Nelder-Mead,不依赖计算对数似然函数的导数。

    如果您将 method="Nelder-Mead" 添加到您的 mle 调用中,我怀疑您将获得与您的 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

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2018-02-28
      • 1970-01-01
      • 2021-02-18
      相关资源
      最近更新 更多