GLM Gamma с лог-ссылкой: рассчитать логарифмическую вероятность
Я пытаюсь вычислить логарифмическую вероятность обобщенной линейной модели ( GLM), с family=Gamma
& функция log-link вручную. Мне нужно знать, как это работает по разным причинам. Основываясь на информации, которую я нашел в документации 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
, Может кто-нибудь объяснить мне, почему я получаю разницу? Огромное спасибо!!