GLM Gamma с лог-ссылкой: рассчитать логарифмическую вероятность - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь вычислить логарифмическую вероятность обобщенной линейной модели (GLM), используя family=Gamma и функцию логарифмической связи вручную. Мне нужно знать, как это работает по разным причинам. Основываясь на информации, которую я нашел в документации R, в настоящее время я написал следующую функцию для вычисления логарифмического правдоподобия с учетом зависимостей y, прогнозов из GLM, которые представляют rates в распределении гамма-излучения, и оценочных shape параметр вроде так:

  library(MASS)
  gamma_loglik <- function(y, rates, shape) {
  loglikelihood <- 0
  for (i in 1:length(y)) {
    probability <- dgamma(y[i],
                          rate = rates[i],
                          shape = shape)
    loglikelihood <- loglikelihood + log(probability)
  }
  return(loglikelihood)
}

Затем мы можем проверить пример игрушки и сравнить логарифмическую вероятность из этой функции с логарифмической вероятностью, рассчитанной функцией logLik().

set.seed(1)
x = rnorm(10)
y = rnorm(10)
model = glm(y ~ x, family=Gamma(link="log"))
dispersion <- summary(model)$dispersion
shape <- 1 / dispersion
rate <- shape / predict(model, 
                        newdata = data.frame(x), 
                        type = "response")
gamma_loglik(y, rate, shape)
logLik(model)

, где gamma_loglik() приводит к вероятности -13.8871, тогда как logLik() отображает -13.57336. Может кто-нибудь объяснить мне, почему я получаю разницу? Спасибо большое !!

...