很糟糕我无法提供可重现的问题代码,因为我使用的是大矢量。但问题仍然很明确。 我尝试做的是使用 mle 函数拟合beta分布:
params <- mle(nll, start = list(alpha = 0.1, beta = 10), method = "L-BFGS-B")
nll 是计算负logliklihood的函数。在 mle 功能&#34; 开始&#34;的文档中参数定义为&#34;优化器的初始值。&#34;
起初我尝试了几个值,这就是我得到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吗?
对不起我的英语不好,并提前感谢您的见解!
答案 0 :(得分:0)
我找不到计算100%保证合适的初始值的方法,但这是我如何避免这种错误:
"BFGS"
即可。它会显示警告,但没有错误。 或
lower
和upper
参数。