1
votes

I am using the community-contributed command outreg2 in Stata to create a table with multiple regressions based on categorical variables:

bysort Sector: outreg2 using results_by_sectors.xls, replace dec(2) ///
keep(log_tfp_leader_growth years_schooling_normalized ///
tfp_gap_years_school_norm i_rd_go tfp_gap_i_rd) title("Regressions By Sectors") ///
label: reg log_tfp_growth log_tfp_leader_growth years_schooling_normalized ///
tfp_gap_years_school_norm, robust

Everything is well except one thing; the table instead of using the names/labels of the categorical variable Sector pops out as Sector 1, Sector 2, Sector 3 and so on:

enter image description here

However, the labels/names of each Sector are:

tab Sector

        ind |      Freq.     Percent        Cum.
------------+-----------------------------------
      10-12 |        236        3.88        3.88
      13-15 |        236        3.88        7.76
      16-18 |        236        3.88       11.64
         19 |        220        3.62       15.26
      20-21 |        220        3.62       18.88
      22-23 |        236        3.88       22.76
      24-25 |        220        3.62       26.38
      26-27 |        220        3.62       30.00
         28 |        220        3.62       33.62
      29-30 |        220        3.62       37.24
      31-33 |        220        3.62       40.86
          A |        284        4.67       45.53
          B |        284        4.67       50.20
        D-E |        252        4.14       54.34
          F |        284        4.67       59.01
          G |        284        4.67       63.68

How should I modify my outreg2 code so instead of getting Sector 1, Sector 2 in the column names of each regression to get the labels of each Sector as shown above (e.g. 10-12 etc.)?

1

1 Answers

1
votes

You cannot do that with outreg2 because it is coded by its author to return the name of the variable plus the factor level number:

. sysuse auto, clear
(1978 Automobile Data)

. bysort foreign: outreg2 using myfile, side replace: quietly reg price weight mpg
dir : seeout

. type myfile.txt
        (1)     (2)     (3)     (4)
        foreign 0               foreign 1       
VARIABLES       price   se      price   se

price                           
weight  4.415***        (0.948) 5.156***        (0.881)
mpg     237.7*  (139.0) -19.78  (57.68)
Constant        -13,285**       (5,726) -5,066  (3,203)

Observations    52              22      
R-squared       0.483           0.785   
Standard errors in parentheses                          
*** p<0.01, ** p<0.05, * p<0.1                          

You can see that this is indeed the case if you recode the variable you use for bysort:

. recode foreign (0 = 1) (1 = 2)
(foreign: 74 changes made)

. bysort foreign: outreg2 using myfile, side replace: quietly reg price weight mpg
dir : seeout

. type myfile.txt
        (1)     (2)     (3)     (4)
        foreign 1               foreign 2       
VARIABLES       price   se      price   se

price                           
weight  4.415***        (0.948) 5.156***        (0.881)
mpg     237.7*  (139.0) -19.78  (57.68)
Constant        -13,285**       (5,726) -5,066  (3,203)

Observations    52              22      
R-squared       0.483           0.785   
Standard errors in parentheses                          
*** p<0.01, ** p<0.05, * p<0.1                          

However, you can get the desired output with the estout community-contributed command:

. sysuse auto, clear
(1978 Automobile Data)

. quietly bysort foreign: eststo: quietly reg price weight mpg

. esttab, label nodepvar

----------------------------------------------------
                              (1)             (2)   
                         Domestic         Foreign   
----------------------------------------------------
Weight (lbs.)               4.415***        5.156***
                           (4.66)          (5.85)   

Mileage (mpg)               237.7          -19.78   
                           (1.71)         (-0.34)   

Constant                 -13285.4*        -5065.8   
                          (-2.32)         (-1.58)   
----------------------------------------------------
Observations                   52              22   
----------------------------------------------------
t statistics in parentheses
* p<0.05, ** p<0.01, *** p<0.001

Obviously, you will have to play with the various options to get exactly what you need (e.g. specify the option cells(b se) in order to include standard errors in the table).