BookmarkSubscribeRSS Feed
wy_CA
Calcite | Level 5
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);
1 REPLY 1
Hutch_sas
SAS Employee
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);

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 1 reply
  • 1542 views
  • 0 likes
  • 2 in conversation