Dalam kode berikut ini saya melakukan regresi logistik pada data yang dikelompokkan menggunakan glm dan "dengan tangan" menggunakan mle2. Mengapa fungsi logLik di R memberi saya kemungkinan logLik (fit.glm) = - 2.336 yang berbeda dari yang logLik (fit.ml) = - 5.514 saya dapatkan dengan tangan?
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])
Jawaban:
Tampaknya fungsi logLik dalam R menghitung apa yang disebut dalam SAS sebagai "fungsi kemungkinan penuh", yang dalam hal ini termasuk koefisien binomial. Saya tidak memasukkan koefisien binomial dalam perhitungan mle2 karena tidak berdampak pada estimasi parameter. Setelah konstanta ini ditambahkan ke kemungkinan log dalam perhitungan mle2, glm dan mle2 setuju.
sumber