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

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!

Register now

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