MLE не смог оценить параметры с кодом ошибки 7 - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь оценить параметры распределения Вейбулла-Гаммы, но у меня возникает следующая ошибка:

"функция mle не смогла оценить параметры, с кодом ошибки 7« Что мне делать?do?

Распределение Вейбулла-Гаммы

Функция плотности

dWeibullGamma <- function(x, alpha, beta, lambda) 
{
  ((alpha*beta)/(lambda))*(x^(alpha-1))*(1+(1/lambda)*x^(alpha))^(-(beta+1))
}

Функция накопления

   pWeibullGamma <- function(x, alpha, beta, lambda) 
{
  1-(1+(1/lambda)*x^(alpha))^(-(beta))
}

Функция Гарцарда

hWeibullGamma <- function(x, alpha, beta, lambda) 
{
((alpha*beta)/(lambda))*(x^(alpha-1))*(1+(1/lambda)*x^(alpha))^(-(beta+1))/(1+(1/lambda)*x^(alpha))^(-(beta)) 
}

Функция выживания

sWeibullGamma <- function(x,alpha,beta,lambda)
{
  (1+(1/lambda)*x^(alpha))^(-(beta))
}

Оценка

paramWG = fitdist(data = dadosp, distr = 'WeibullGamma', start = c(alpha=1.5,beta=1,lambda=1.5), lower= c(0, 0))
summary(paramWG) 

[https://i.stack.imgur.com/XDxwC.png][1] Изображение

Sample: 

dadosp = c(240.3,71.9,271.3, 186.3,241,253,287.4,138.3,206.9,176,270.4,73.3,118.9,203.1,139.7,31,269.6,140.2,205.1,133.2,107,354.6,277,27.6,186,260.9,350.4,242.6,292.5, 112.3,242.8,310.7,309.9,53.1,326.5,145.7,271.5, 117.5,264.7,243.9,182,136.7,103.8,188.3,236,419.8,338.6,357.7)

1 Ответ

0 голосов
/ 10 октября 2018

Для вашей выборки алгоритм не сходится при оценке ML.Подгонка распределения Вейбулла-Гамма к этим данным потребует чрезвычайно высокого значения lambda.Вы можете решить эту проблему, оценив log10(lambda) вместо lambda.

. Вы можете добавить lambda <- 10^lambda в свои 4 функции, например,

dWeibullGamma <- function(x, alpha, beta, lambda) 
{
  lambda <- 10^lambda
  ((alpha*beta)/(lambda))*(x^(alpha-1))*(1+(1/lambda)*x^(alpha))^(-(beta+1))
}

Затем алгоритм, кажется, сходится:

library(fitdistrplus)
paramWG = fitdist(data = data, distr = 'WeibullGamma',
                  start = list(alpha=1, beta=1, lambda=1), lower = c(0, 0, 0))
summary(paramWG)$estimate

Выходные данные:

     alpha       beta     lambda 
  2.432939 799.631852   8.680802 

Мы видим, что оценка лямбда равна 10^8.68, следовательно, возникает проблема сходимости, когда журнал не берется.

Youможно также взглянуть на подгонку следующим образом:

newx <- 0:500
pars <- summary(paramWG)$estimate
pred <- dWeibullGamma(newx, pars["alpha"], pars["beta"], pars["lambda"])

hist(data, freq = FALSE)
lines(newx, pred, lwd = 2)

fit

Примечание: возможно, подгонка другого распределения будет более целесообразной?

...