[ADMB Users] Problem with negative log likelihoods?

Coilin Minto mintoc at gmail.com
Thu Oct 2 03:04:28 PDT 2014


Hi Carlos,

Just a clarification on the fix. If it's the negative log-likelihood, it
should be

nll += -k(i)*log(lambda(i))+lambda(i)+gammln(k(i)+1.);

The suggested

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.);

returns the log-likelihood.

Cheers,
Coilin

On Wed, Oct 1, 2014 at 7:20 PM, Steve Martell <SteveM at iphc.int> wrote:

>  Hola Carlos,
>
>  Mucho gracias por la correccion.  I will update the source code.
>
>  Steve
>  On Oct 1, 2014, at 10:59 AM, Carlos Martorell <martorell at ciencias.unam.mx>
> wrote:
>
>  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
>  _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
>
>
>
> ------------------------------
>
> This internet e-mail message, and any files transmitted with it, contains
> confidential, privileged information that is intended only for the
> addressee. If you have received this e-mail message in error, please call
> us at (206) 634-1838 collect if necessary) and ask to speak to the
> message sender. Nothing in this e-mail or the act of transmitting it, is to
> be construed as a waiver of any rights or privileges enjoyed by the sender
> or the International Pacific Halibut Commission pursuant to the
> International Organizations Immunities Act, 22 U.S.C. Sec. 288 et seq.
>
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/users/attachments/20141002/95904abf/attachment-0001.html>


More information about the Users mailing list