10 votos

Log verosimilitud GLM

En el código siguiente realizar una regresión logística en datos agrupados usando glm y "a mano" utilizando mle2. ¿Por qué la función de logLik en R da me una log verosimilitud logLik (fit.glm) =-2.336 que es diferente de la una logLik (fit.ml) =-5.514 que llego a mano?

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])

9voto

Uaithne Puntos 21

Parece que la función logLik en R calcula lo que se conoce en SAS como la "función de verosimilitud completa", que en este caso incluye el coeficiente binomial. No incluí el coeficiente binomial en el cálculo de mle2 porque no tiene ningún impacto en las estimaciones de parámetro. Una vez que esta constante se agrega a la posibilidad de registro en el cálculo de mle2, glm y mle2 están de acuerdo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X