我在试着拿到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))而且它起作用了。为什么另一个不能工作?
发布于 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/mle2和https://www.rdocumentation.org/packages/stats4/versions/3.6.2/topics/mle。
https://stackoverflow.com/questions/64477268
复制相似问题