如何在 R 函数 stats4::mle 中选择 "start" 值?

How to choose "start" values in function stats4::mle in R?

很遗憾我无法提供我的问题的可重现代码,因为我使用了一个大向量。但问题还是很明确的。 我想做的是用 mle 函数拟合 beta 分布:

params <- mle(nll, start = list(alpha = 0.1, beta = 10), method = "L-BFGS-B")

其中nll是一个计算负对数概率的函数。在 mle 函数的文档中,“start”参数定义为 "Initial values for optimizer."

起初我尝试了几个值,这就是我得到 0.1 和 10 的方法。但现在我想通过一些因素来拟合我的向量的一部分,这个值并不适合所有的值。在其中一些我得到一个错误:

 Error in optim(start, f, method = method, hessian = TRUE, ...) : 
 L-BFGS-B needs finite values of 'fn' 
In addition: Warning messages:
1: In lbeta(shape1[okk] + x[okk], shape2[okk] + size[okk] - x[okk]) :
NaNs produced
2: In lbeta(shape1[okk], shape2[okk]) : NaNs produced

在网上搜索我发现一个合理的想法是从值开始,这些值是由 Method of Moments. 计算的所以我用它的公式改变了我的 0.1 和 10,但我仍然得到同样的错误。

您是否知道一些编程方法来计算 100% 合适的初始值以使用 mle 拟合 beta?

抱歉我的英语不好,非常感谢您的见解!

我找不到一种方法来计算 100% 保证合适的初始值,但我可以通过以下方法避免这种错误:

  1. 只需将一种方法更改为"BFGS"。它会显示警告,但不会显示错误。

  1. 在 mle 中指定 lowerupper 参数。