Плохо, что я не могу предоставить воспроизводимый код своей задачи, потому что я использую большой вектор. Но вопрос все же достаточно ясен. Что я пытаюсь сделать, так это подогнать бета-распределение с помощью функции 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?
Извините за мой плохой английский и заранее большое спасибо за ваши идеи!
fitdistrplus
R: cran.r-project .org/web/packages/fitdistrplus/vignettes/ - person Marco Sandri   schedule 30.05.2017dbetabinom.ab
из пакетаVGAM
.) - person aschmsu   schedule 30.05.2017mmedist
для вычисления альфы и беты методом моментов, но в методе mle мне все еще нужны начальные значения. И использует ту же функциюoptim
, так что разницы не вижу. Может быть, вы имели в виду какую-то конкретную функцию? - person aschmsu   schedule 30.05.2017