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;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.