Programming the statistical procedures from SAS

Fixed effect regressions

Reply
New Contributor
Posts: 3

Fixed effect regressions

Hi all,

I want to run a regression between annual expense and sales, including a fixed effect for each firm (firm_code).

I came across the codes:

proc glm;

absorb firm_code;

model expense = sales / solution noint;

run;

quit;

However, I am using a panel data including 4 years of observations for each firm. This means for each firm (firm_code) there will be four observations of expense and sales.

As a result, I only need to create on dummy variable for each firm, I am not sure whether the command "absorb" does that, or does it create a dummy variable for every line of observation for firm?

If there is any better ways of running fixed effects regression, please tell me Smiley Happy

Thank you in advance!

Respected Advisor
Posts: 2,655

Re: Fixed effect regressions

Posted in reply to miguel_valero

Actually, you don't have to create a dummy variable for each firm, just be certain that the dataset is sorted by firm_code.  GLM will automatically nest the observations within firm_code, and perform the regression.  And provided you don't need predicted values or regression diagnostics, you get all this with a marked reduction in overhead computational resources.

Now if you want a regression for EACH firm_code (sort of implied in the first line of your post), either a BY statement or something like:

proc glm;

class firm_code;

model model expense = sales|firm_code / solution noint;

quit;

This would give separate intercepts and slopes for each firm_code, but assumes common residual variance across firm_codes

Steve Denham

Message was edited by: Steve Denham

New Contributor
Posts: 3

Re: Fixed effect regressions

Posted in reply to SteveDenham

Hi Steve,

Sorry for the misunderstanding. I have a panel of annual data for different firms over several years of time. I just need to run one regression for the entire panel. However, I do need to control for firm fixed effect for each individual firm (presumably by adding a dummy variable for each firm - e.g. dummy A equals to 1 for firm A 2010, 2011, and 2012).

Thank you for your help!

Respected Advisor
Posts: 2,655

Re: Fixed effect regressions

Posted in reply to miguel_valero

Then ABSORB looks like your best tool to accomplish that.

Steve Denham

Contributor
Posts: 22

Re: Fixed effect regressions

Posted in reply to SteveDenham

@SteveDenhamCurrently I am doing exactly what you have mentioned. I am trying to run fixed effect regression. In first step I need to run regression on every firm-year (each year of each firm individually) and then using the intercept of that regression in second regression.

I tried to run your code:

proc glm;

class firm_code;

model model expense = sales|firm_code / solution noint;

quit;

 

I guess writing model two times was unintentional. So I change you codes as follow;

proc glm data=dtab2;
class count;                      * where count is unique number for each firm year;
model exret = Mktrf | count / solution noint;      *where exret=excess return, Mktrf=Market return;

output out=xglm p=predicted;
quit;

Results show this error

ERROR: Number of levels for some effects > 32767.

Also I tried to run proc reg/proc panel/proc tscs/ but the problem is:

if I don't specify by variable, I get reg output of whole model as one (row) observation having intercept and coefficient for all firms

if I specify by variable for both time series (macc=unique for each time obs) and cross-sectional (permno) variable, it seems my model is over specified,

  >proc reg give infinite error for each firm-year (number of nonmissing values are ....)

  >proc panel give error (Event Stack Underflow caused by mis-matched begin and end event call in SAS)

if I reg by count(proc reg data=dtab2 outest=xreg noprint; by count; model exret = Mktrf / adjrsq; quitSmiley Wink then beta & RMSE ave no values and intercept are generated exactly of similar value as exret (dep variable) itself.

 

Kindly suggest me any solution to this problem.

 

 

SAS Employee
Posts: 283

Re: Fixed effect regressions

Posted in reply to miguel_valero

Paul Allison has a wonderful book on fitting fixed effects models of various types - ordinary regression (normal response), logistic, Poisson, and survival (Cox) models. Here is the reference and a link to it:

 

Fixed Effects Regression Methods for Longitudinal Data Using SAS (Allison, P., SAS Institute, 2005)

Ask a Question
Discussion stats
  • 5 replies
  • 4045 views
  • 0 likes
  • 4 in conversation