Mark Payne mpa at aqua.dtu.dk
Tue Mar 8 04:38:01 PST 2011

```Hi,

I have been having a lot of problems trying to fit a negative binomial distribution in ADMB. In the end, I sat down and wrote the simplest possible simulation code, where I use ADMB's build in negative bionomial random number generator to generate a set of negative bionomially distributed numbers, and then tried to fit the negative binomial distribution. In both cases I am using the built in negative binomial functions. However, I am simply not able to reconstruct the parameters that I have used to generate the simulated data in the first place - the ADMB minimizer stalls. Playing with phases doesn't help either.

The question is why isn't this working? Am I don't something really dumb? Have I misunderstood how this is supposed to work?

Code copied below.

Best wishes,

Mark

GLOBALS_SECTION
#include <ctime>  //Allow random number seeding
int ndat = 1000;
int const MU_PHASE =1;
int const TAU_PHASE=1;

DATA_SECTION
vector dat(1,ndat)
number mu_sim
number tau_sim

PARAMETER_SECTION
init_number log_mu(MU_PHASE)
sdreport_number mu
init_bounded_number tau(1,5,TAU_PHASE)     //Accounts for overdispersion
objective_function_value nll

PRELIMINARY_CALCS_SECTION
random_number_generator rand_gen(time(0));
mu_sim=10;
tau_sim =2;
for(int i=1;i<=ndat;i++) {
dat(i) = randnegbinomial(mu_sim,tau_sim,rand_gen);
}

PROCEDURE_SECTION
nll =0;
mu = exp(log_mu);

for(int i=1;i<=ndat;i++) {
nll += -log_negbinomial_density(dat(i),mu,tau) ;
}

REPORT_SECTION
cout << "Results" << endl;
cout << "Mu est   : " << mu <<  "\t sim : " << mu_sim <<endl;
cout << "Tau est  : " << tau << "\t sim : " << tau_sim << endl;
report << dat << endl;

```