GLM的日志可能性


10

在下面的代码中,我使用glm对分组数据执行逻辑回归,并使用mle2对“手工”进行逻辑回归。为什么R中的logLik函数会给我一个对数可能性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
造成这种差异的一个普遍原因是,仅在一个乘数常数之前定义似然性:“ 更确切地说,似然函数是函数等价类的任何代表,大号{αPθα>0} 比例常数 α>0不允许依赖于,并且对于任何一个比较中使用的所有似然函数都必须相同。θ“对数似然性可能会依次移动任意常数。...(ctd)
Glen_b-恢复莫妮卡

(ctd)...并不是说这是这种特殊差异的解释,但这是不同功能如何产生不同可能性之间存在差异的常见原因。
Glen_b-恢复莫妮卡

我错误地认为对数可能性是用pdf的内核定义的,因此对于此问题是唯一的。
汤姆(Tom)”

1
但是,值得进行调查,因为有时解释是另一回事。
Glen_b-恢复莫妮卡

Answers:


9

看起来R中的logLik函数计算出在SAS中称为“全似然函数”的函数,在这种情况下,它包括二项式系数。我没有在mle2计算中包括二项式系数,因为它对参数估计没有影响。一旦将此常量添加到mle2计算中的对数似然中,glm和mle2就会一致。


2
(+1)感谢您关注并提出解决方案。干杯。
主教
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.