Hi
I have a panel data shown below with "id" identifies different stocks and "month" is monthly dates column. The data set is sorted by id and month.
data have;
input id month x1 x2 y;
datalines;
45 09/30/2004 -0.30 1.34 1
45 09/30/2004 -0.30 1.34 1
45 05/31/2005 -0.08 0.78 0
45 12/31/2008 . . 0
48 09/30/2001 -0.01 1.88 1
48 02/28/2004 0.78 1.50 0
48 05/31/2005 . 0.54 1
49 01/31/2002 0.05 . 1
51 03/31/2001 -0.06 1.48 0
55 05/31/2005 0.30 1.21 1
55 05/31/2005 0.30 1.21 1
55 11/30/2007 . . 0
; run;
I need to run cross sectional regression (proc reg) "by month". So the purpose is to observe variations in coefficient (beta) of "x2" over time i.e. over various months. I am using following proc but there is an Error saying "month" is not sorted in ascending order. When I sort the data by month and run the regression, resulting output gives "0" coefficients for missing values.
proc reg data=have;
model y=x1 x2; by month; run;
Kindly guide me in this regard. I also need to know how to create a data set based on time variant coefficients of only x2 along-with their corresponding months (date), and how to ultimately draw their graph.
Thanks.
See the code in Chapter 4 of Using SAS in Financial Research (Boehmer, Broussard, and Kallunki, 2002) Code from the book is available for free from the book's website.
@Rick_SAS Thanks. The book is quite useful with example codes. But I do not need a rolling regression. I have edited my question and will be grateful if you kindly help me in the context of this question.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.