Log Probabilità per GLM


10

Nel codice seguente eseguo una regressione logistica su dati raggruppati usando glm e "a mano" usando mle2. Perché la funzione logLik in R mi dà una probabilità di log logLik (fit.glm) = - 2.336 che è diverso da quello logLik (fit.ml) = - 5.514 che ottengo 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
Un motivo comune per tali differenze è il fatto che la probabilità è definita solo fino a una costante moltiplicativa : " Più precisamente, quindi, una funzione di probabilità è rappresentativa di una classe di funzioni di equivalenza, dove la costante di proporzionalità non può dipendere da ed è necessario che sia la stessa per tutte le funzioni di verosimiglianza utilizzate in ognuna confronto.L{αPθ:α>0},α>0θ "La verosimiglianza può a sua volta essere spostata da una costante arbitraria. ... (ctd)
Glen_b -Restate Monica

(ctd) ... Questo non vuol dire che sia la spiegazione di questa particolare differenza, ma è un motivo comune per le differenze tra il modo in cui funzioni diverse danno probabilità diverse.
Glen_b -Restate Monica

Ho erroneamente supposto che la probabilità di log fosse definita con il kernel del pdf ed era quindi unica per questo problema.
Tom,

1
Vale la pena indagare, tuttavia, perché a volte la spiegazione è qualcos'altro.
Glen_b -Restate Monica

Risposte:


9

Sembra che la funzione logLik in R calcoli quella che viene definita in SAS come "funzione di piena verosimiglianza", che in questo caso include il coefficiente binomiale. Non ho incluso il coefficiente binomiale nel calcolo mle2 perché non ha alcun impatto sulle stime dei parametri. Una volta che questa costante viene aggiunta alla probabilità del log nel calcolo di mle2, glm e mle2 sono d'accordo.


2
(+1) Grazie per aver seguito e pubblicato la risoluzione dopo averlo capito. Saluti.
cardinale
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.