Код ошибки 100, определяющий распределение exp с использованием fitdist в r - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь вписать экспоненциальное распределение в мои данные, но я получаю ошибку ниже

"Error in fitdist(x41, "exp", method = "mle") : 
  the function mle failed to estimate the parameters, 
                with the error code 100"

Я пробовал mme, который работает, но у меня есть другие дистрибутивы с mle, поэтому мне нужно mle в экспоненциальном распределении какЧто ж.Я застрял на несколько дней.Кто-нибудь может мне помочь, пожалуйста?

Мои данные выглядят так.

2795.5
304.6833
2786.45
5897.75
4381.367
1178.1
351.3167
109.85
459.6167
13.26667
0.033333
846.3833
3698.45
1527.1
94.31667
15.01667
271.8833
473

Это мой код

ExpMle41 <- fitdist(x41, "exp", method="mle") 
ExpMle41
plot(ExpMle41)

Любая помощь будет принята с благодарностью.Спасибо.

1 Ответ

0 голосов
/ 30 ноября 2018

Предполагая, что это fitdist из fitdistrplus пакета, я могу продублировать вашу ошибку:

> fitdist(x41, "exp", method="mle")
<simpleError in optim(par = vstart, fn = fnobj, fix.arg = fix.arg, obs = data,     gr = gradient, ddistnam = ddistname, hessian = TRUE, method = meth,     lower = lower, upper = upper, ...): non-finite finite-difference value [1]>
Error in fitdist(x41, "exp", method = "mle") : 
  the function mle failed to estimate the parameters, 
                with the error code 100

, но в ваших данных есть несколько больших чисел ... возможно, если мы уменьшим их все нафактор ...

> fitdist(x41/10000, "exp", method="mle")
Fitting of the distribution ' exp ' by maximum likelihood 
Parameters:
     estimate Std. Error
rate   7.1417   1.683315

Ну, это похоже на работу.Давайте масштабировать немного меньше:

> fitdist(x41/1000, "exp", method="mle")
Fitting of the distribution ' exp ' by maximum likelihood 
Parameters:
     estimate Std. Error
rate  0.71417  0.1683312

Верно.Разделите на тысячу произведений.Давайте продолжим:

> fitdist(x41/100, "exp", method="mle")
Fitting of the distribution ' exp ' by maximum likelihood 
Parameters:
     estimate Std. Error
rate 0.071417 0.01682985

Хорошо.

> fitdist(x41/10, "exp", method="mle")
Fitting of the distribution ' exp ' by maximum likelihood 
Parameters:
      estimate  Std. Error
rate 0.0071417 0.001649523

Таким образом, масштабирование данных на 1/10 работает, и вы можете увидеть, как оцениваются оценка и SE.Давайте сделаем еще один шаг:

> fitdist(x41/1, "exp", method="mle")
<simpleError in optim(par = vstart, fn = fnobj, fix.arg = fix.arg, obs = data,     gr = gradient, ddistnam = ddistname, hessian = TRUE, method = meth,     lower = lower, upper = upper, ...): non-finite finite-difference value [1]>
Error in fitdist(x41/1, "exp", method = "mle") : 
  the function mle failed to estimate the parameters, 
                with the error code 100

Хруст.Это похоже на некоторую проблему числовой устойчивости с базовым алгоритмом.Если в какой-то момент он принимает экспоненту ваших данных, то, возможно, он попадает во что-то неотличимое от бесконечности.Как:

> exp(x41)
 [1]           Inf 2.100274e+132           Inf           Inf           Inf
 [6]           Inf 3.757545e+152  5.096228e+47 4.064401e+199  5.776191e+05
[11]  1.033895e+00           Inf           Inf           Inf  9.145540e+40
[16]  3.323969e+06 1.195135e+118 2.638092e+205

Но масштаб десяти и математика могут справиться, примерно (E + 256 !!!)

> exp(x41/10)
 [1] 2.552833e+121  1.706977e+13 1.032728e+121 1.367817e+256 1.907002e+190
 [6]  1.459597e+51  1.809216e+15  5.898273e+04  9.139021e+19  3.768462e+00
[11]  1.003339e+00  5.727429e+36 4.184491e+160  2.094645e+66  1.247731e+04
[16]  4.489166e+00  6.423056e+11  3.484408e+20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...