GLMの対数尤度


10

次のコードでは、glmを使用してグループ化されたデータとmle2を使用して「手動」でロジスティック回帰を実行します。RのlogLik関数で対数尤度logLik(fit.glm)=-2.336が得られるのはなぜですか。手作業で取得したものとは異なります。

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{αPθ:α>0}, ここで、比例定数はに依存することが許可されておらず、任意の1つの比較で使用されるすべての尤度関数で同じである必要があります。α>0θ"次に、対数尤度が任意の定数によってシフトされる可能性があります。...(ctd)
Glen_b -Reinstate Monica

(ctd)...それは、この特定の違いの説明であると言っているわけではありませんが、異なる関数が異なる可能性を与える方法の違いの一般的な理由です。
Glen_b-2013

対数尤度はpdfのカーネルで定義されているため、この問題に固有であると誤って想定しました。
トム

1
ただし、説明が別の場合があるため、調査する価値はあります。
Glen_b-2013

回答:


9

RのlogLik関数は、SASで「全尤度関数」と呼ばれるものを計算しているようです。この場合、二項係数が含まれます。パラメータ推定に影響を与えないため、mle2計算に二項係数を含めませんでした。この定数がmle2計算で対数尤度に追加されると、glmとmle2は一致します。


2
(+1)解決策を理解してからフォローアップし、解決策を投稿していただきありがとうございます。乾杯。
枢機卿、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.