BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
hhchenfx
Rhodochrosite | Level 12

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;

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
hhchenfx
Rhodochrosite | Level 12

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;

View solution in original post

2 REPLIES 2
hhchenfx
Rhodochrosite | Level 12

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;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

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!

Register Now

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1539 views
  • 1 like
  • 2 in conversation