Statistical programming, matrix languages, and more

Problem with calculating MLE using NLPNRA

Reply
N/A
Posts: 1

Problem with calculating MLE using NLPNRA

Could somebody please tell me what I did wrong? Thanks.

I am trying to get MLE for exponential duration model using NLPNRA in proc IML. I followed the example of Rosenbrock function in SAS/IML software reference. I got the error message "ERROR: (execution) Matrix has not been set to a value." exp is the data set imported. t is the variable in the data set that are the random numbers generated from an exponential distribution.


%macro test(dsn=,x=);
proc iml;
reset noname;
use &dsn;
read all var {&x} into tt;
print tt;

start LL(beta);
f=sum(log(beta)-beta*tt);
return(f);
finish LL;

start grad(beta);
g=j(1,1,0);
g=sum(1/beta-tt);
return(g);
finish grad;

start hess(beta);
h=j(1,1,0);
h=-100/(beta*beta);
return(h);
finish hess;

beta=1;
call NLPNRA(rc,xr,"LL",beta)grd="grad" hes="hess";
%mend;

%test(dsn=exp,x=t);
SAS Employee
Posts: 94

Re: Problem with calculating MLE using NLPNRA

The matrix tt is unintialized in your gradient function grad(). In order for the global variable tt to be used in grad(), you need:

start grad(beta) global(tt);
Ask a Question
Discussion stats
  • 1 reply
  • 289 views
  • 0 likes
  • 2 in conversation