Hi,
I use the sashelp.stocks as the input file and I want to run regression of
Close = Volume
For a given day, say 27Feb2023, I want to run this regression on 30 rows including 27Feb2023.
The output I want to have is date, stock, predicted value and residual value as in the code below.
Can you please help?
Thank you,
HHC
proc reg noprint data=sashelp.stocks outest=want_test;
by stock;
model close = volume;
output out=want (keep = stock date predicted residual) p=predicted r=residual;
run;
quit;
Thanks for you suggestion.
proc sort data=sashelp.stocks out =have ; by stock descending date;run;
data have; set have ;
by stock;
if first.stock then n=0;
n+1;
run;
proc sql;
create table full
as select a.stock, a.date , b. date as _date, b.close, b.volume
from have as a left join have as b
on a.stock=b.stock and a.n<=b.n<=a.n+30
order by a.stock, a.date , b.date;
quit;
proc reg noprint data=full outest=want_test;
by stock date;
model close = volume;
output out=want (keep = stock date predicted residual) p=predicted r=residual;
run;
quit;
Thanks for you suggestion.
proc sort data=sashelp.stocks out =have ; by stock descending date;run;
data have; set have ;
by stock;
if first.stock then n=0;
n+1;
run;
proc sql;
create table full
as select a.stock, a.date , b. date as _date, b.close, b.volume
from have as a left join have as b
on a.stock=b.stock and a.n<=b.n<=a.n+30
order by a.stock, a.date , b.date;
quit;
proc reg noprint data=full outest=want_test;
by stock date;
model close = volume;
output out=want (keep = stock date predicted residual) p=predicted r=residual;
run;
quit;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.