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 2024

Innovate_SAS_Blue.png

Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.

If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website. 

Register now!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

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