Разница между правдоподобием журнала вручную и функцией logLike

Я пытаюсь сравнить значение функции правдоподобия журнала, заданное функцией logLik, и значение, вычисленное вручную для гамма-распределения. Значение, заданное функцией logLik:

require(fitdistrplus)

x = rgamma(50,shape = 2, scale = 10)
Gamma_fitdist = fitdist(x,"gamma")
logLik(Gamma_fitdistr)
-189.4192

а для функции логарифмического правдоподобия вручную:

gmll <- function(scale,shape,datta){
  a <- scale
  b <- shape
  n <- length(datta)
  sumd <- sum(datta)
  sumlogd <- sum(log(datta))
  gmll <- n*a*log(b) + n*lgamma(a) + sumd/b - (a-1)*sumlogd
  gmll
} 

gmll(scale = 10, shape = 2, datta = x)
-246.6081

Почему функция logLik дает другое значение? Спасибо!


person felipe gateño    schedule 30.12.2020    source источник


Ответы (1)


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

library(fitdistrplus)

set.seed(666)
x = rgamma(50, shape = 2, scale = 4)

Gamma_fitdist = fitdist(x,"gamma")
logLik(Gamma_fitdist)
# -150.3687

gmll <- function(scale,shape,datta){
  a <- shape
  b <- scale
  n <- length(datta)
  sumd <- sum(datta)
  sumlogd <- sum(log(datta))
  -n*a*log(b) - n*lgamma(a) - sumd/b + (a-1)*sumlogd
} 

rate <- Gamma_fitdist$estimate[["rate"]]
shape <- Gamma_fitdist$estimate[["shape"]]
gmll(scale = 1/rate, shape = shape, datta = x)
# -150.3687
person Stéphane Laurent    schedule 30.12.2020