   Next: Pairwise statistics with large Up: Fixed effects Previous: An efficient way with

### Two-way fixed effects

Two-way fixed effects are easily coded up using the inefficient dummy method. Since we're trying for efficiency, a better solution is to use a combination of the Frisch-Waugh Theorem and the inefficient method.

Explicitly, first determine which one of your dummy sets has fewer elements.

Suppose we want to run the regression in the previous subsection -- returns on lagged size -- with dummies for date and permno. Since data is monthly and the msf file has data from 1927-2007, there will be 12*81=810+162=972 date dummies. That's much smaller than the 27865 permno dummies.

Then we create the date dummies as shown in Section 13.3.1. Explicitly:

```  data dates;
date='31Jan1927'd;
do while(date<='31Dec2007'd);
output;
date=intnx('month', date+1, 1)-1;
end;
run;
data dates;
set dates;
array dateids (972);
do i = 1 to dim(dateids);
dateids(i)=0;
end;
dateids(_n_)=1;
run;
```

and merge these in with the original dataset by date. There are 972 date dummies named dateid1-dateid972.

Once I have the date dummies, I treat the date dummies as additional independent variables:

```proc standard data= msf mean=0;
by permno;
var lagsize dateid1-dateid972;
run;

proc reg data=msf;
model ret=lagsize dateid1-dateid972/noint;
run;
```

which produces the two-way fixed effects coefficient on lagsize.

To suppress the printing of the dummy coefficients, I can say:

```proc reg data=msf outest=est(keep=lagsize _type_) noprint tableout;
model ret=lagsize dateid1-dateid972/noint;
run;

proc print data=est;
run;
```   Next: Pairwise statistics with large Up: Fixed effects Previous: An efficient way with
Andre de Souza 2012-11-19