En el siguiente código realizo una regresión logística en datos agrupados usando glm y "a mano" usando mle2. ¿Por qué la función logLik en R me da una probabilidad de registro logLik (fit.glm) = - 2.336 que es diferente del logLik (fit.ml) = - 5.514 que obtengo 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])
3
Una razón común para tales diferencias es el hecho de que la probabilidad solo se define hasta una constante multiplicativa : " Más precisamente, entonces, una función de probabilidad es cualquier representante de una clase de funciones de equivalencia, donde no se permite que la constante de proporcionalidad dependa de , y se requiere que sea la misma para todas las funciones de probabilidad utilizadas en cualquiera comparación
—
Glen_b -Reinstate a Monica el
" . La probabilidad de registro a su vez puede ser desplazada por una constante arbitraria. ... (ctd)
(ctd) ... Eso no quiere decir que sea la explicación de esta diferencia en particular, pero es una razón común para las diferencias entre cómo las diferentes funciones dan diferentes probabilidades.
—
Glen_b -Reinstate Monica
Asumí incorrectamente que la probabilidad de registro se definió con el núcleo del pdf y, por lo tanto, era única para este problema.
—
Tom
Sin embargo, vale la pena investigar, porque a veces la explicación es otra.
—
Glen_b -Reinstate Monica