R optim () L-BFGS-B требует конечных значений 'fn' - PullRequest
0 голосов
/ 29 июня 2018

Я использую MLE и метод l-моментов для гамма-распределения, экспоненциального распределения и распределения Вейбулла.

Я использовал fitdistr () в гамма-распределении.

У меня есть ошибка, сообщающая, что L-BFGS-B нужны конечные значения 'fn' И мне интересно, могу ли я это исправить, изменив метод оптимизации с L-BFGS-B на BFGS.

Ошибка в статистике: 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,777 20

10 1972 5 5 0,762 22 * ​​1036 *

и в моем основном файле см. Код ниже:

# 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     
 }
...