Лог вероятности для GLM


10

В следующем коде я выполняю логистическую регрессию для сгруппированных данных, используя glm, и «вручную», используя mle2. Почему функция logLik в R дает мне вероятность логирования logLik (fit.glm) = - 2.336, отличную от той, что logLik (fit.ml) = - 5.514, которую я получаю вручную?

library(bbmle)

#successes in first column, failures in second
Y <- matrix(c(1,2,4,3,2,0),3,2)

#predictor
X <- c(0,1,2)

#use glm
fit.glm <- glm(Y ~ X,family=binomial (link=logit))
summary(fit.glm)

#use mle2
invlogit <- function(x) { exp(x) / (1+exp(x))}
nloglike <- function(a,b) {
  L <- 0
  for (i in 1:n){
     L <- L + sum(y[i,1]*log(invlogit(a+b*x[i])) + 
               y[i,2]*log(1-invlogit(a+b*x[i])))
  }
 return(-L) 
}  

fit.ml <- mle2(nloglike,
           start=list(
             a=-1.5,
             b=2),
           data=list(
             x=X,
             y=Y,
             n=length(X)),
           method="Nelder-Mead",
           skip.hessian=FALSE)
summary(fit.ml)

#log likelihoods
logLik(fit.glm)
logLik(fit.ml)


y <- Y
x <- X
n <- length(x)
nloglike(coef(fit.glm)[1],coef(fit.glm)[2])
nloglike(coef(fit.ml)[1],coef(fit.ml)[2])

3
Распространенной причиной таких различий является тот факт, что вероятность определяется только с точностью до мультипликативной константы : « Точнее, функция вероятности - это любой представитель из класса эквивалентных функций, где константа пропорциональности не может зависеть от и должна быть одинаковой для всех функций правдоподобия, используемых в любой сравнение.L{αпθ:α>0},α>0θ "Логарифмическая правдоподобие может, в свою очередь, быть смещена на произвольную постоянную. ... (ctd)
Glen_b

(ctd) ... Это не значит, что это объяснение этого конкретного различия, но это общая причина различий в том, как разные функции дают разные вероятности.
Glen_b

Я неправильно предположил, что вероятность журнала была определена с ядром PDF и поэтому была уникальной для этой проблемы.
Том

1
Однако это стоит исследовать, потому что иногда объяснение - это нечто другое.
Glen_b

Ответы:


9

Похоже, что функция logLik в R вычисляет то, что в SAS называется «функцией полного правдоподобия», которая в этом случае включает биномиальный коэффициент. Я не включил биномиальный коэффициент в расчет mle2, поскольку он не влияет на оценки параметров. Как только эта константа добавляется к логарифмической вероятности в вычислениях mle2, glm и mle2 соглашаются.


2
(+1) Спасибо за отслеживание и публикацию резолюции после того, как вы ее выяснили. Приветствия.
кардинал
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.