Как выбрать "стартовые" значения в функции 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% гарантированных подходящих начальных значений, но вот как я мог избежать этих ошибок:
- Просто измените метод на
"BFGS"
, Он покажет предупреждения, но без ошибок.
или же
- Укажите
lower
а такжеupper
аргументы в мле.