Why deviance returned by GLMFIT is not = -2*LogLikelihood?

1 visualización (últimos 30 días)
I'm working with GLM models using glmfit. After fitting the model I need to calculate the LogLikelihood (which is not returned directly by glmfit). I've seen in many sources that deviance (which IS returned by glmfit) is equal to -2*LogLikelihood. However, if I calculate the LogLikelihood separately (see example below with binomial distribution) I get totally different answers. Any idea what I'm doing wrong? I took the example data from MATLAB doc. on glmfit
x = [2100 2300 2500 2700 2900 3100 3300 3500 3700 3900 4100 4300]';
n = [48 42 31 34 31 21 23 23 21 16 17 21]';
y = [1 2 0 3 8 8 14 17 19 15 17 21]';
[b,dev,stats]= glmfit(x,[y n],'binomial');
yfit= glmval(b, x,'logit','size',n);
dev/-2
logLikelihood= nansum(log( binopdf( y, n, yfit)))

Respuesta aceptada

Tom Lane
Tom Lane el 6 de Mzo. de 2012
Two things. First, the last argument to binopdf should be the fitted probability, not the fitted counts. Second, the deviance is defined with respect to a "full" model that has a separate fitted value for every observation. So -dev/2 reproduces this value:
sum(log(binopdf(y,n,yfit./n))) - sum(log(binopdf(y,n,y./n)))
If you need the log likelihood value, your way of computing it is fine, once you correct the binopdf input.
  2 comentarios
Marris Atwood
Marris Atwood el 9 de Jun. de 2015
So you mean the saturated model's log likelihood, i.e., sum(log(binopdf(y,n,y./n))), is not necessarily always 0, right? That is acceptable, but how I should know if that is 0?
David Nielsen
David Nielsen el 4 de Mzo. de 2017
Would this not be the log likelihood ratio, i.e. the ratio of the log likelihood of the fitted model and the saturated model?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Support Vector Machine Regression en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by