Как выбрать "стартовые" значения в функции stats4::mle в R?

Плохо, что я не могу предоставить воспроизводимый код моей проблемы, потому что я использую большой вектор. Но вопрос все еще довольно ясен. Я пытаюсь приспособить бета-дистрибутив с помощью функции mle:

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

Где nll - это функция, считающая отрицательные логарифмические зависимости. В документации по mle функции "start" аргумент определяется как "Начальные значения для оптимизатора".

Сначала я попробовал несколько значений, и вот как я получил 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

Ища в интернете, я нашел разумную идею начать с ценностей, которые учитываются методом моментов. Поэтому я изменил свои 0,1 и 10 по его формулам, но я все еще получаю ту же ошибку.

Знаете ли вы какой-нибудь программный способ вычисления 100% подходящих начальных значений для подгонки бета с mle?

Извините за мой плохой английский и заранее большое спасибо за ваши идеи!

1 ответ

Решение

Я не смог найти способ вычисления 100% гарантированных подходящих начальных значений, но вот как я мог избежать этих ошибок:

  1. Просто измените метод на "BFGS", Он покажет предупреждения, но без ошибок.

или же

  1. Укажите lower а также upper аргументы в мле.
Другие вопросы по тегам