SOLVE / OPTIMIZE Example for PROC MODEL
/*--------------------------------------------------------------
SAS Sample Library
Name: modoslv.sas
Description: Example program from SAS/ETS User's Guide,
The MODEL Procedure
Title: SOLVE / OPTIMIZE Example for PROC MODEL
Product: SAS/ETS Software
Keys: nonlinear simultaneous equation models
PROC: MODEL
Notes:
--------------------------------------------------------------*/
data d;
do i = 1 to 20;
rate = 0.2;
if i > 1 then rate = .;
output;
end;
run;
data s;
_name_ = "stock"; rate = 0; stock = 1; output;
_name_ = "rate"; rate = 1; stock = 0; output;
run;
proc model data=d sdata=s;
dependent rate stock;
parms theta 0.2
kappa 0.002
sigma 0.4
sinit 1
vol .1;
id i;
bounds rate >= 0;
rate = zlag(rate) + kappa*(theta - zlag(rate));
h.rate = sigma**2 * zlag(rate);
eq.stock = log(stock/sinit) - (rate + vol*vol/2);
h.stock = vol**2;
solve / optimize converge=1e-6 seed=1 random=1 out=o outobjvals outviolations;
quit;
proc print data=o(where=(_objval_>1e-6));
run;
data test1;
do t=1 to 50;
x1 = sqrt(t) ;
y = .;
output;
end;
proc model data=test1;
exogenous x1 ;
control a1 -1 b1 -29 c1 -4 ;
y = a1 * sqrt(y) + b1 * x1 * x1 + c1 * lag(x1);
solve y / out=sim forecast dynamic ;
run;
proc model data=test1;
exogenous x1 ;
control a1 -1 b1 -29 c1 -4 ;
y = a1 * sqrt(abs(y)) + b1 * x1 * x1 + c1 * lag(x1);
solve y / out=sim forecast dynamic itprint;
run;