Why deviance returned by GLMFIT is not = -2*LogLikelihood?
1 view (last 30 days)
Show older comments
Francisco de Castro
on 6 Mar 2012
Commented: David Nielsen
on 4 Mar 2017
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)))
0 Comments
Accepted Answer
Tom Lane
on 6 Mar 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 Comments
Marris Atwood
on 9 Jun 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
on 4 Mar 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?
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!