4
votes

Does anyone know if it is possible to use the magnificent "indicate()" option in esttab with xtreg? If I run a regression like

eststo MYREG: reg y x i.category,

then I can do

esttab MYREG , indicate("Category FE = *.category")

and I will get a nice table like so:

----------------------
x            2.3443
             (2.15)
Category FE    Yes
----------------------
N             4321
----------------------

THE PROBLEM: When I use

xtset category
xtreg y x 

there is no coefficient saved that I can use in the indicate statement. Or is there? I have been unable to find any.

I realize that I can use

estadd local fe "Yes" : MYREG

and then I can get a table like

esttab MYREG , stats(N fe)

----------------------
x            2.3443
             (2.15)
----------------------
N             4321
Category FE    Yes
----------------------

but I am using a bunch of other "i.VAR" type fixed effects and I want them all to show up together just below the coefficients and not have just one of them showing up in the footer.

1
If you explain that you are using a mean-differencing panel estimator (which is what xtreg..., fe does), indicating that you have fixed effects for the panel variable is somewhat incorrect as the fixed effects have been differenced out rather than dummied (as is done in reg ... i.category), and this would not be comparable to the other vectors of fixed effects you want to include as controls (i.VAR).SOConnell
You are incorrect, using "i.VAR" or "xtreg" produces very very very similar results... With two observations per group (household) they are actually numerically identical. So yes, the question stands.Superpronker
Right, my comment was not about whether they are the same. Mathematically they are. It's about implying that there is a vector of coefficients for category that are not being displayed (which is what you would be doing with the other i.VAR fixed effects), which is not the case in xtreg Y X ... ,fe.SOConnell

1 Answers

2
votes

The quickest thing to do is to insert arbitrary lines of text/smcl/latex using the varlist option. For example to insert a line noting a FE right before _cons (rather than down in the stats panel), use

esttab myreg, stats(N) varlabels(,blist(_cons "{p2col 0 20 0 0: FE}yes{p_end}"))

Which will display:

----------------------------
                      (1)   
                   weight   
----------------------------
week                6.210***
                 (158.97)   
FE                 yes
_cons               19.36***
                  (32.09)   
----------------------------
N                     432   
----------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

You can adjust the 20 to get the right horizontal layout, or just use spaces (which is what you'll do if you have more than a single model.

If you want something more robust (that can handle model re-ordering) the alternative is to edit each model estimate and put in fake entries in the e(b) (and e(V)) matrices and then use indicate when you output the table. Here is a simple ado I've used:

*Needs erepost
program add_fake_coeff_to_e, eclass
    args cname cval

    tempname eb eb2 eV eV2
    mat `eb' = e(b)
    local eb_names : colnames `eb'
    mat `eb2' = `eb', `cval'
    matrix colnames `eb2' = `eb_names' `cname'

    *Need the dimensions of V to match b
    mat `eV' = e(V)
    local num_eb : word count `eb_names'

    mat `eV2' = I(`=`num_eb'+1')
    mat `eV2'[1,1] = `eV'
    matrix colnames `eV2' = `eb_names' `cname'
    matrix rownames `eV2' = `eb_names' `cname'

    erepost b=`eb2' V=`eV2'
end

So then you would do

reg blah
add_fake_coeff_to_e "FE" 1
estimates store est1
esttab est1 , <other opts> indicate("FE", labels("Y" ""))