如何选择"开始"函数stats4 :: mle在R中的值?

时间:2017-05-29 21:02:57

标签: r statistics mle

很糟糕我无法提供可重现的问题代码,因为我使用的是大矢量。但问题仍然很明确。 我尝试做的是使用 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吗?

对不起我的英语不好,并提前感谢您的见解!

1 个答案:

答案 0 :(得分:0)

我找不到计算100%保证合适的初始值的方法,但这是我如何避免这种错误:

  1. 只需将方法更改为"BFGS"即可。它会显示警告,但没有错误。
    1. 在mle。中指定lowerupper参数。