R optim() L-BFGS-B требует конечных значений 'fn'
Я использую MLE и метод l-моментов для гамма-распределения, экспоненциального распределения и распределения Вейбулла.
Я использовал fitdistr() в гамма-распределении.
У меня есть сообщение об ошибке, в котором говорится, что L-BFGS-B нужны конечные значения 'fn'. И мне интересно, можно ли это исправить, изменив метод оптимизации с L-BFGS-B на BFGS.
Ошибка в stats:optim(x = c(36.576, 1.778, 30.48, 1.524, 21.336, 3.302): L-BFGS-B нужны конечные значения 'fn'
Вот мой код
# Maximum Likelihood Estimator (MLE)
gams_mle <- fitdistr(month_temp, "gamma", list(shape = s_gam, rate = 1/g_gam), lower = c(0,0))
gam_mle <- c(as.numeric(gams_mle$estimate[1]), as.numeric(gams_mle$estimate[2]))
Пример данных:
0 1972 4 4 4,318 2
1 1972 4 4 6,604 4
2 1972 4 4 3,302 6
3 1972 4 4 0,762 8
4 1972 5 5 0,254 10
5 1972 5 5 3,048 12
6 1972 5 5 0,254 14
7 1972 5 5 1,777 16
8 1972 5 5 0,254 18
9 1972 5 5 1,778 20
10 1972 5 5 0,762 22
и в моем основном файле, см. код ниже:
# 2. Gamma distribution function (alpha, beta)
j = 13
for (i in 1:12){
month_temp = input_data[,3]
index = month_temp == i
month_temp = input_data[index,5]
par_gam = gamma_fit(month_temp, option = FALSE)
par_matrix[j,1] = i
par_matrix[j,2] = 2
par_matrix[j, 3:4] = par_gam[1:2]
par_matrix[j, 8:9] = par_gam[3:4]
j = j + 1
}