[ADMB Users] Problem with negative log likelihoods?

Carlos Martorell martorell at ciencias.unam.mx
Tue Sep 30 18:57:14 PDT 2014


Hi,
After checking the output of an ADMB run I believe that I have found a
problem in (at least) a couple of the functions used to calculate the
negative log-likelihoods in dpois and dnbinom functions in the statsLib.h
library. When a vector of parameters (lambdas in the Poisson case) is
provided, the code for the log-likelihood is

00067 dvariable
<http://admb-project.org/documentation/api/classdvariable.html> dpois
<http://admb-project.org/documentation/api/dpois_8cpp.html#a64d2001c40c90f8295bd86ea88ff6979>(const
dvector <http://admb-project.org/documentation/api/classdvector.html>&
k, const dvar_vector
<http://admb-project.org/documentation/api/classdvar__vector.html>&
lambda)00068 {00069   RETURN_ARRAYS_INCREMENT
<http://admb-project.org/documentation/api/group__RA.html#ga9616d0c80845da3942a30acbb1dbbfa9>();00070
  int i;00071   int n = size_count
<http://admb-project.org/documentation/api/dsize_8cpp.html#aa42ba747b253f027435b478a7d747f52>(k);00072
  dvariable <http://admb-project.org/documentation/api/classdvariable.html>
nll=0;00073   for(i = 1; i <= n; i++)00074   {00075     nll -=
k(i)*log <http://admb-project.org/documentation/api/d3arr2a_8cpp.html#a921f553085254834ebbe598d5e9c0341>(lambda(i))+lambda(i)+gammln
<http://admb-project.org/documentation/api/group__gammafunc.html#gae01374ddda83bc2216ba9df9c76d9995>(k(i)+1.);00076
  }00077   RETURN_ARRAYS_DECREMENT
<http://admb-project.org/documentation/api/group__RA.html#ga780ea9f1c9038a5116c28140166d6e7e>();00078
  return nll;00079 }

I believe that the correct code for line 00075 should be

nll -= -k(i)*log
<http://admb-project.org/documentation/api/d3arr2a_8cpp.html#a921f553085254834ebbe598d5e9c0341>
(lambda(i))+lambda(i)+gammln
<http://admb-project.org/documentation/api/group__gammafunc.html#gae01374ddda83bc2216ba9df9c76d9995>
(k(i)+1.);

This is evident in the same function when lambda is constant, e.g.,

00035 <http://admb-project.org/documentation/api/statsLib_8h.html#a64d2001c40c90f8295bd86ea88ff6979>
dvariable <http://admb-project.org/documentation/api/classdvariable.html>
dpois <http://admb-project.org/documentation/api/dpois_8cpp.html#a64d2001c40c90f8295bd86ea88ff6979>(const
double& k, const prevariable
<http://admb-project.org/documentation/api/classprevariable.html>&
lambda)00036 {00037   RETURN_ARRAYS_INCREMENT
<http://admb-project.org/documentation/api/group__RA.html#ga9616d0c80845da3942a30acbb1dbbfa9>();00038
  dvariable <http://admb-project.org/documentation/api/classdvariable.html>
tmp = -k*log <http://admb-project.org/documentation/api/d3arr2a_8cpp.html#a921f553085254834ebbe598d5e9c0341>(lambda)+lambda
+ gammln <http://admb-project.org/documentation/api/group__gammafunc.html#gae01374ddda83bc2216ba9df9c76d9995>(k+1.);00039
  RETURN_ARRAYS_DECREMENT
<http://admb-project.org/documentation/api/group__RA.html#ga780ea9f1c9038a5116c28140166d6e7e>();00040
  return tmp;00041 }

I found these codes both in the ADMB version that I downloaded and in the
package documentation (
http://admb-project.org/documentation/api/dpois_8cpp_source.html). After
making the correction that I propose above and re-running ADMB, the program
reports the correct log-likelihoods. The same problem can be found in
dnbinom and maybe in other functions.
Given that the functions provided for the estimation of negative
log-likelihoods are widely used, it would be important to check that their
outputs are correct.
Best,



-- 
      I think [the island's] unusually sterile character gives it a
grandeur
      which more vegetation might have spoiled.
                                                   ----Ch. Darwin. El
diario del Beagle

Dr. Carlos Martorell

Departamento de Ecología y Recursos Naturales
Facultad de Ciencias-UNAM
Circuito Exterior S/N, Cd. Universitaria
04510 México D.F.
Tel.  (55) 5622 4835 Fax (55) 5622 4828
http://www.fciencias.unam.mx/investigacion/grupos/biologia/ecologia/ambientesl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/users/attachments/20140930/aec91136/attachment.html>


More information about the Users mailing list