如何在 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% 保证合适的初始值,但我可以通过以下方法避免这种错误:
- 只需将一种方法更改为
"BFGS"
。它会显示警告,但不会显示错误。
或
- 在 mle 中指定
lower
和 upper
参数。
很遗憾我无法提供我的问题的可重现代码,因为我使用了一个大向量。但问题还是很明确的。 我想做的是用 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% 保证合适的初始值,但我可以通过以下方法避免这种错误:
- 只需将一种方法更改为
"BFGS"
。它会显示警告,但不会显示错误。
或
- 在 mle 中指定
lower
和upper
参数。