Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Getting significance levels with the eststo 'sum' command

    Hello, everyone.

    I'm new to STATA and, more specifically, with the process of transforming STATA code into LaTeX.
    So I know my issue seems very small, but no matter how much I read about it, I'm not able to find a solution.

    I'm running a code where I calculate values for difference in means between a few variables. I have no problem getting these values out with the eststo 'sum' command and then using it with the esttab.
    My problem starts with the fact that with the 'sum' command, I do not get the significance stars on my final table. I get the mean values and sd values that I want, but no significance level.
    I would like for the significance levels to be 'automatic' on the code to be put on LaTeX as a way to make it replicable.

    The solution would be to perform a t-test between the log differences that I already have. However, as far as I know, the eststo command does not support a ttest without a group variable, and that would be my case.

    Right now, with the 'sum' command, my code looks like this:

    Code:
    eststo rme_male: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & rme == 1, detail
    eststo rme_female: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & rme == 1, detail
    
    esttab rme_male rme_female, main(mean 2) aux(sd)
    If I apply the t-test, the model would be like:
    Code:
    log1 == log 2, if female == 1 & rme == 1
    So, as it is visible, there is no way I can input this model of ttest with the eststo command.

    I would appreciate any help with this.
    I was thinking about running a regression for each variable, save the results in a matrix and then, try to use it on esttab. So far, I wasn't able to do so in a way to only get two groups (female and male), and I ended up with a very long and confusing code.
    I will appreciate any help with it, and I'm sorry if any part of my question is confusing.

    Regards,
    Bruna
    Last edited by Bruna Barcellos; 25 Jul 2023, 04:25.

  • #2
    Since you did not specify the version of Stata you are using, we will assume that you have the latest version of Stata. In that case just look at https://blog.stata.com/2023/06/26/cr...table-command/ for a solution.
    ---------------------------------
    Maarten L. Buis
    University of Konstanz
    Department of history and sociology
    box 40
    78457 Konstanz
    Germany
    http://www.maartenbuis.nl
    ---------------------------------

    Comment


    • #3
      estout is from SSC (FAQ Advice #12). Also note the spelling of Stata by reading all the way through the FAQ Advice.


      Originally posted by Bruna Barcellos View Post
      However, as far as I know, the eststo command does not support a ttest without a group variable, and that would be my case.

      Right now, with the 'sum' command, my code looks like this:

      Code:
      eststo rme_male: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & rme == 1, detail
      eststo rme_female: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & rme == 1, detail
      
      esttab rme_male rme_female, main(mean 2) aux(sd)
      If I apply the t-test, the model would be like:
      Code:
      log1 == log 2, if female == 1 & rme == 1
      So, as it is visible, there is no way I can input this model of ttest with the eststo command.
      I do not see why not. You just need to temporarily change the structure of your data, incorporating the -if- restrictions.

      Code:
      sysuse auto, clear
      ttest length=disp if foreign
      preserve
      expand 2, g(new)
      gen diff= cond(new, disp , length)
      eststo m1: mean diff if !new & foreign
      eststo m2: mean diff if new & foreign
      eststo m3: estpost ttest diff if foreign, by(new)
      restore
      esttab m1 m2 m3, se mlab(length displacement diff.) coeflab(diff "Mean") ///
      starlev(* 0.10 ** 0.05 *** 0.01) noobs
      Res.:

      Code:
      . ttest length=disp if foreign
      
      Paired t test
      ------------------------------------------------------------------------------
      Variable |     Obs        Mean    Std. Err.   Std. Dev.   [95% Conf. Interval]
      ---------+--------------------------------------------------------------------
        length |      22    168.5455    2.917129    13.68255     162.479     174.612
      displa~t |      22    111.2273    5.304548    24.88054    100.1959    122.2587
      ---------+--------------------------------------------------------------------
          diff |      22    57.31818    3.063814    14.37056    50.94663    63.68973
      ------------------------------------------------------------------------------
           mean(diff) = mean(length - displacement)                     t =  18.7081
       Ho: mean(diff) = 0                              degrees of freedom =       21
      
       Ha: mean(diff) < 0           Ha: mean(diff) != 0           Ha: mean(diff) > 0
       Pr(T < t) = 1.0000         Pr(|T| > |t|) = 0.0000          Pr(T > t) = 0.0000
      
      
      . esttab m1 m2 m3, se mlab(length displacement diff.) coeflab(diff "Mean") ///
      > starlev(* 0.10 ** 0.05 *** 0.01) noobs
      
      ------------------------------------------------------------
                            (1)             (2)             (3)   
                         length    displacement           diff.   
      ------------------------------------------------------------
      Mean                168.5***        111.2***        57.32***
                        (2.917)         (5.305)         (6.054)   
      ------------------------------------------------------------
      Standard errors in parentheses
      * p<0.10, ** p<0.05, *** p<0.01

      Standard errors are displayed for all statistics. The significance stars for the means are from the test that the mean values equal zero.

      Comment


      • #4
        Dear, Maarten

        Thank you for taking some time to help me.

        Yes, I'm using the latest version.
        Unfortunately, it seems like the dtable command only works with one group as the definition for variables, but the data I'm working with has more than one group (Female/Male; Married/Unmarried) that would guide the values I'm calculating.
        Due to this factor, I'm unable to use it for the type of data I have. I might have to look more into the options that I have with eststo.

        Comment


        • #5
          Also note that the t-test of the difference is equivalent to calculating the difference and testing whether this difference does not equal 0. Therefore, you could do this without using the -by()- option.

          Code:
          sysuse auto, clear
          ttest length=disp if foreign
          gen diff= length - disp
          
          estimates clear
          foreach var of varlist length displacement diff{
              rename `var' var
              eststo: mean var if foreign
              rename var `var'
          }
          esttab est*, se mlab(length displacement diff.) coeflab(var "Mean") ///
          starlev(* 0.10 ** 0.05 *** 0.01) noobs
          Res.:

          Code:
           
          . ttest length=disp if foreign
          
          Paired t test
          ------------------------------------------------------------------------------
          Variable |     Obs        Mean    Std. Err.   Std. Dev.   [95% Conf. Interval]
          ---------+--------------------------------------------------------------------
            length |      22    168.5455    2.917129    13.68255     162.479     174.612
          displa~t |      22    111.2273    5.304548    24.88054    100.1959    122.2587
          ---------+--------------------------------------------------------------------
              diff |      22    57.31818    3.063814    14.37056    50.94663    63.68973
          ------------------------------------------------------------------------------
               mean(diff) = mean(length - displacement)                     t =  18.7081
           Ho: mean(diff) = 0                              degrees of freedom =       21
          
           Ha: mean(diff) < 0           Ha: mean(diff) != 0           Ha: mean(diff) > 0
           Pr(T < t) = 1.0000         Pr(|T| > |t|) = 0.0000          Pr(T > t) = 0.0000
          
          
          
          . esttab est*, se mlab(length displacement diff.) coeflab(var "Mean") ///
          > starlev(* 0.10 ** 0.05 *** 0.01) noobs
          
          ------------------------------------------------------------
                                (1)             (2)             (3)  
                             length    displacement           diff.  
          ------------------------------------------------------------
          Mean                168.5***        111.2***        57.32***
                            (2.917)         (5.305)         (3.064)  
          ------------------------------------------------------------
          Standard errors in parentheses
          * p<0.10, ** p<0.05, *** p<0.01
          .

          Comment


          • #6
            Dear Andrew,

            Sorry for my late reply.
            Thank you so much for your detailed answer! I really appreciate your help.
            I'll apply your suggestions and see the results I can get.

            Kind regards,
            Bruna

            Comment


            • #7
              Dear Andrew,

              I applied your model to my code, however, I failed to inform that I had other variables to be presented on the same table.
              Because of that, I would like the results of this estimation to be a column, not a horizontal line.

              The image shows the model of the table I'm creating.
              The values I'm calculating for the log should be positioned on the 3rd and last column, "Ind. Log-Diff".

              Click image for larger version

Name:	example.png
Views:	1
Size:	14.2 KB
ID:	1721861





              When using the code, my table ended up creating new horizontal lines for the new calculations, instead of inputting it on the columns that I mentioned.
              Since each value is created by a ttest between two log values, I actually have 5 pairs of t-tests that I would have to include in only one eststo.

              Do you believe there is any way to make these new calculations to appear as a column matching the original layout of the table?
              Again, thank you for your time and help.

              Comment


              • #8
                Probably start with

                Code:
                keep if rme==1
                so that you avoid restricting the sample using multiple variables. As you are new to Statalist, I will create an example on your behalf - but in future you should provide a reproducible example as advised in FAQ Advice #12.

                Code:
                sysuse auto, clear
                estimates clear
                eststo rme_domestic: estpost sum mpg weight length turn disp if !foreign, detail
                eststo rme_foreign: estpost sum mpg weight length turn disp if foreign, detail
                mat mean= e(mean)
                mat sd=e(sd)
                mat pval= e(mean)
                estpost sum mpg weight length turn disp, detail
                foreach var of varlist mpg weight length turn displacement{
                    ttest `var', by(foreign)
                    mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                    mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                    mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                }
                foreach stat in mean sd pval{
                estadd matrix `stat'=`stat', replace
                }
                
                est sto ttest
                
                esttab rme_domestic rme_foreign ttest, cells(mean(fmt(2) star pval(pval)) sd(fmt(2) par)) ///
                starlev(* 0.10 ** 0.05 *** 0.01) noobs mlab(Mean Mean Difference, lhs(Variables)) collab(none) ///
                addnotes("Standard deviations (errors) in parentheses under means (differences)" "* p<0.10, ** p<0.05, *** p<0.01")
                Res.:

                Code:
                . esttab rme_domestic rme_foreign ttest, cells(mean(fmt(2) star pval(pval)) sd(fmt(2) par)) ///
                > starlev(* 0.10 ** 0.05 *** 0.01) noobs mlab(Mean Mean Difference, lhs(Variables)) collab(none) ///
                > addnotes("Standard deviations (errors) in parentheses under means (differences)" "* p<0.10, ** p<0.05, *** p<0.01")
                
                ------------------------------------------------------------
                                      (1)             (2)             (3)   
                Variables            Mean            Mean      Difference   
                ------------------------------------------------------------
                mpg                 19.83           24.77           -4.95***
                                   (4.74)          (6.61)          (1.36)   
                weight            3317.12         2315.91         1001.21***
                                 (695.36)        (433.00)        (160.29)   
                length             196.13          168.55           27.59***
                                  (20.05)         (13.68)          (4.68)   
                turn                41.44           35.41            6.03***
                                   (3.97)          (1.50)          (0.87)   
                displacement       233.71          111.23          122.48***
                                  (85.26)         (24.88)         (18.57)   
                ------------------------------------------------------------
                Standard deviations (errors) in parentheses under means (differences)
                * p<0.10, ** p<0.05, *** p<0.01

                Comment


                • #9
                  Andrew,

                  Thank you for your help and patience with me. Sorry for not including an example of the data, I'll do it now.

                  This code solves the issue of the columns.
                  However, it creates another one: when I tabulate the ttest, everything goes well, but when I use esttab, the results for the mean value changes for the column of Log. Diff..

                  This is an example of the data for the t-test calculation (not real values):

                  Code:
                  * Example generated by -dataex-. For more info, type help dataex
                  clear
                  input float(earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr log_earn45_b_und_marr30 log_earn45_b_und_nmarr30 log_earn45_r_und_marr30 female rme)
                         700        700        800        530 6.421129  6.3223 6.0457566 1 0
                  .032722207  .22222358 -.13333357 -.125333308 6.421129  6.3223 6.0457566 1 1
                         750        750        200        230 6.421129  6.3223 6.0457566 1 0
                  .032722207  .22222358 -.13333357 -.125333308 6.421129  6.3223 6.0457566 1 1
                        6000       6000       6000       1300 6.421129 6.3223 7.0457566 1 0
                           0          0          0   .125333308 6.421129 6.3223 7.0457566 1 1
                        5000       5000       3400       3300 6.421129 6.3223 7.0457566 1 0
                           0          0          0   .125333308 6.421129 6.3223 7.0457566 1 1
                         400        400        800        230  6.421129  6.3223  6.393223 0 0
                           0          0          0          0  6.421129  6.3223  6.393223 0 1
                         300        200        800        220  6.421129  6.3223  6.393223 0 0
                           0          0          0          0  6.421129  6.3223  6.393223 0 1
                         200        300        200        220  6.421129  6.3223  6.393223 0 0
                   -.0327222 -.22222358  .13333357  .125333308  6.421129  6.3223  6.393223 0 1
                         100        600        200        750  6.421129  6.3223  6.393223 0 0
                   -.0327222 -.22222358  .13333357  .125333308  6.421129  6.3223  6.393223 0 1

                  With this data, I conduct the ttest such as:
                  Code:
                  ttest log_earn45_b_und_marr30 = log_earn45_b_und_nmarr30 if female == 1 & rme == 1
                  ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 1 & rme == 1
                  ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 1 & rme == 1

                  With your code, I decided to separate the ttest for each par of logs, as well as between
                  Code:
                   female ==1 & rme == 1
                  and
                  Code:
                  female == 0 and rme == 1
                  I believe this might be the problem. Since each t-test uses different pairs of variables, I can only see it working if I'm able to proceed with each test separately.

                  It looks like this:

                  Code:
                  eststo male1: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & married == 1 & rme == 0
                  eststo male0: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & married == 0 & rme == 0
                  eststo female1: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & married == 1 & rme == 0
                  eststo female0: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & married == 0 & rme == 0
                  
                  mat mean=e(mean)
                  mat sd=e(sd)
                  mat pval=e(mean)
                  
                  eststo rme_female: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & rme == 1, detail
                  reg earn45_b_und_marr if female == 0 & rme == 1
                  ttest log_earn45_b_und_marr30 = log_earn45_b_und_nmarr30 if female == 1 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 1 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_b_gr_marr30 = log_earn45_b_gr_nmarr30 if female == 1 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_r_gr_marr30 = log_earn45_r_gr_nmarr30 if female == 1 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 1 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                      foreach stat in mean sd pval{
                  estadd matrix `stat'=`stat', replace
                  }
                  est sto ttest
                  
                  eststo rme_male: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & rme == 1, detail
                  reg earn45_b_und_marr if female == 0 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 0 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_b_gr_marr30 = log_earn45_b_gr_nmarr30 if female == 0 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_r_gr_marr30 = log_earn45_r_gr_nmarr30 if female == 0 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                  ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 0 & rme == 1
                      mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                      mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                      mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                      foreach stat in mean sd pval{
                  estadd matrix `stat'=`stat', replace
                  }
                  est sto ttest_male

                  Later, using the esttab command, I apply
                  Code:
                   "esttab female0 female1 ttest male0 male1 ttest_male, cells(mean(fmt(2) star pval(pval)) sd(fmt(2) par))"
                  , and that's when the values for the ttest calculations change from the original table.

                  I'm sure I'm making some mistake creating this code, so I'll keep changing bits of it and see what I can get.
                  Last edited by Bruna Barcellos; 26 Jul 2023, 06:57.

                  Comment


                  • #10
                    This is everything compiled and as you can see, the code fails at the first line due to missing variables. Present a data example that runs with the code and replicates your undesired format. dataex by default allows you to include up to 100 observations, but you can use the -count()- option to include more if you need for the result to be reproducible. Again, I do not need to see all your data, just a sample that reproduces your issue.

                    Code:
                    * Example generated by -dataex-. For more info, type help dataex
                    clear
                    input float(earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr log_earn45_b_und_marr30 log_earn45_b_und_nmarr30 log_earn45_r_und_marr30 female rme)
                           700        700        800        530 6.421129  6.3223 6.0457566 1 0
                    .032722207  .22222358 -.13333357 -.125333308 6.421129  6.3223 6.0457566 1 1
                           750        750        200        230 6.421129  6.3223 6.0457566 1 0
                    .032722207  .22222358 -.13333357 -.125333308 6.421129  6.3223 6.0457566 1 1
                          6000       6000       6000       1300 6.421129 6.3223 7.0457566 1 0
                             0          0          0   .125333308 6.421129 6.3223 7.0457566 1 1
                          5000       5000       3400       3300 6.421129 6.3223 7.0457566 1 0
                             0          0          0   .125333308 6.421129 6.3223 7.0457566 1 1
                           400        400        800        230  6.421129  6.3223  6.393223 0 0
                             0          0          0          0  6.421129  6.3223  6.393223 0 1
                           300        200        800        220  6.421129  6.3223  6.393223 0 0
                             0          0          0          0  6.421129  6.3223  6.393223 0 1
                           200        300        200        220  6.421129  6.3223  6.393223 0 0
                     -.0327222 -.22222358  .13333357  .125333308  6.421129  6.3223  6.393223 0 1
                           100        600        200        750  6.421129  6.3223  6.393223 0 0
                     -.0327222 -.22222358  .13333357  .125333308  6.421129  6.3223  6.393223 0 1
                    end
                    
                    ttest log_earn45_b_und_marr30 = log_earn45_b_und_nmarr30 if female == 1 & rme == 1
                    ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 1 & rme == 1
                    ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 1 & rme == 1
                    
                    
                    eststo male1: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & married == 1 & rme == 0
                    eststo male0: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & married == 0 & rme == 0
                    eststo female1: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & married == 1 & rme == 0
                    eststo female0: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & married == 0 & rme == 0
                    
                    mat mean=e(mean)
                    mat sd=e(sd)
                    mat pval=e(mean)
                    
                    eststo rme_female: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & rme == 1, detail
                    reg earn45_b_und_marr if female == 0 & rme == 1
                    ttest log_earn45_b_und_marr30 = log_earn45_b_und_nmarr30 if female == 1 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 1 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_b_gr_marr30 = log_earn45_b_gr_nmarr30 if female == 1 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_r_gr_marr30 = log_earn45_r_gr_nmarr30 if female == 1 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 1 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        foreach stat in mean sd pval{
                    estadd matrix `stat'=`stat', replace
                    }
                    est sto ttest
                    
                    eststo rme_male: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & rme == 1, detail
                    reg earn45_b_und_marr if female == 0 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 0 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_b_gr_marr30 = log_earn45_b_gr_nmarr30 if female == 0 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_r_gr_marr30 = log_earn45_r_gr_nmarr30 if female == 0 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                    ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 0 & rme == 1
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'  
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        foreach stat in mean sd pval{
                    estadd matrix `stat'=`stat', replace
                    }
                    est sto ttest_male
                    
                    esttab female0 female1 ttest male0 male1 ttest_male, cells(mean(fmt(2) star pval(pval)) sd(fmt(2) par))
                    Res.:

                    Code:
                    . ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 1 & rme == 1
                    log_earn45_r_und_nmarr30 not found
                    r(111);

                    Comment


                    • #11
                      Andrew,

                      Sorry for my mistake.
                      Please, consider the version below. I wasn't able to include the 3rd pair of var+their log due to the size of the sample. However, I believe the number of obs. for the included var now are enough.
                      I tested the code from dataex, so I believe this one will work.
                      Code:
                      * Example generated by -dataex-. For more info, type help dataex
                      clear
                      input float(earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr log_earn45_b_und_marr30 log_earn45_b_und_nmarr30 log_earn45_r_und_marr30 log_earn45_r_und_nmarr30 female rme)
                             600        620        840        820 6.433339  6.22293 6.555573 6.423229 1 0
                      .034345707  .0343434343 -.13222157 -.1222208 6.433339  6.22293 6.555573 6.423229 1 1
                             634        630        740        250 6.433339  6.22293 6.555573 6.423229 1 0
                      .03345345707  .043434343 -.13222157 -.1282208 6.433339  6.39693 6.555573 6.423229 1 1
                            13450       1340       2000       1020 6.922225 6.902325 7.009996 7.002366 1 0
                               0          0          0   .2623444 6.922225 6.902325 7.009996 7.002366 1 1
                            13450       1344       1220       1320 6.922225 6.902325 7.009996 7.002366 1 0
                               0          0          0   .262144 6.922225 6.902325 7.009996 7.002366 1 1
                             300        640        620        602  6.39213  6.35553  6.44493  6.32293 0 0
                               0          0          0          0  6.39213  6.35553  6.44493  6.32293 0 1
                             330        640        200        620  6.39213  6.35553  6.44493  6.32293 0 0
                               0          0          0          0  6.39213  6.35553  6.44493  6.32293 0 1
                             330        440        200        200  6.39213  6.35553  6.44493 6.623333 0 0
                       -.1345505 -.2121212358  .18222155  .22315658  6.39213  6.35553  6.44493 6.623333 0 1
                             6345        100        200        720  6.39213  6.35553  6.44493 6.623333 0 0
                       -.134505 -.22121212358  .18222155  .22111358  6.39213  6.35553  6.44493 6.623333 0 1
                             340        620        700        720  6.39213  6.35553  6.44493 6.623333 0 0
                               0  .02121212215  .06822209  .06411148  6.39213  6.35553  6.44493 6.623333 0 1
                             340        120        720        220  6.39213  6.35553  6.44493 6.623333 0 0
                               0  .07122112165  .06822209  .06411848  6.39213  6.35553  6.44493 6.623333 0 1
                             340        812        800       1220  6.39213  6.35553 6.645612 6.623333 0 0
                               0          0 -.06222848          0  6.39213  6.35553 6.645612 6.632242 0 1
                             340        830        720       1200  6.39213  6.35553 6.645612 6.632242 0 0
                               0          0 -.06422248          0  6.39213  6.35553 6.645612 6.632242 0 1
                             534        630        620        620 6.214608 6.387636  6.39113  6.55593 1 0
                      -.131343448          0          0  .03111186 6.214608 6.387636  6.39113  6.55593 1 1
                             340        603        200        620 6.214608 6.387636  6.39113  6.55593 1 0
                      -.13134418          0          0  .03111186 6.214608 6.387636  6.39113  6.55593 1 1
                             744        803        200        920  6.55108  6.52308 6.684567 6.633312 0 0
                               0          0          0          0  6.55108  6.52308 6.684567 6.633312 0 1
                             740        803        200        920  6.55108  6.52308 6.684567 6.633312 0 0
                               0          0          0          0  6.55108  6.52308 6.684567 6.633312 0 1
                             440        633        200        200 5.991465 5.925465 6.324508  6.32223 1 0
                               0 -.1787878155  .09222021  .08111184 5.991465 5.925465 6.324508  6.32223 1 1
                             444        580        520        630 5.991465 5.925465 6.324508  6.32223 1 0
                               0 -.187878785  .09221021  .08001184 5.991465 5.925465 6.324508  6.32223 1 1
                             840        780        720        853  6.55108 6.925465 6.683472 6.755536 1 0
                      -.1334343457  -.06787846          0          0  6.55108 6.925465 6.683472 6.755536 1 1
                             730        780        220        853  6.55108 6.925465 6.683472 6.755536 1 0
                      -.13344457  -.07878246          0          0  6.55108 6.925465 6.683472 6.755536 1 1
                            1340       1880       1220       1300 7.090077 7.032177 6.683472 6.755536 0 0
                               0  -.17878805 -.03722223  -.1011105 7.090077 7.032177 6.683472 6.755536 0 1
                            14340        888       1320        300 7.090077 7.032177 6.683472 6.755536 0 0
                               0  -.107878785 -.03222223  -.1051105 7.090077 7.032177 6.683472 6.966655 0 1
                             344        70        320        450 5.703783 5.232383 5.683472 5.966655 1 0
                               0          0          0          0 5.703783 5.232383 5.683472 5.966655 1 1
                             344        70        150        450 5.703783 5.232383 5.683472 5.966655 1 0
                               0          0          0          0 5.703783 5.232383 5.683472 5.966655 1 1
                             622        700        230        300 5.991465  6.39693 6.219908  6.00108 1 0
                       -.4066651   -.3787472  -.1456705 -.13111157 5.991465  6.39693 6.219908  6.00108 1 1
                             660        500        300        300 5.991465  6.39693 6.219908  6.00108 1 0
                       -.4054661   -.3787472  -.1535675 -.13113157 5.991465  6.35553 6.219908  6.00108 1 1
                             660        850        340        350 5.991465 6.144448 6.306678 6.302238 1 0
                      -.1173434507          0          0          0 5.991465 6.144448 6.306678 6.302238 1 1
                             3450        850        340        350 5.991465 6.144448 6.306678 6.302238 1 0
                      -.134535307          0          0          0 5.991465 6.144448 6.306678 6.302238 1 1
                             350        880        340        630  6.39693 6.144448  6.31193  6.53456 1 0
                       -.34356337  -.15787705  .06434348          0  6.39693 6.144448  6.31193  6.53456 1 1
                             633        670        300        630  6.39693 6.144448  6.31193  6.53456 1 0
                       -.3435357  -.1878785  .06345648          0  6.39693 6.144448  6.31193  6.53456 1 1
                            1350       1787       3400       1300 7.313221 7.144448 7.095567 7.232077 0 0
                               0          0 -.08034384          0 7.313221 7.144448 7.095567 7.232077 0 1
                            1350       1700       13400       1300 7.313221 7.144448 7.095567 7.232077 0 0
                               0          0 -.083434344          0 7.313221 7.144448 7.095567 7.232077 0 1
                             3530        987        300       1300 6.684612 6.699992 6.843565 6.804565 1 0
                               0          0 -.1134343307  -.1111105 6.684612 6.699992 6.843565 6.804565 1 1
                             3530        978        340        930 6.684612 6.699992 6.843565 6.804565 1 0
                               0          0 -.113434307  -.1053605 6.684612 6.699992 6.843565 6.804565 1 1
                            3300       17870       2343       3000 7.313221 7.699992 7.843565 7.497682 1 0
                               0   .105787805          0          0 7.313221 7.699992 7.843565 7.497682 1 1
                            3300       7800       23430       2030 7.313221 7.699992 7.843565 7.497682 1 0
                               0   .10787875          0          0 7.313221 7.699992 7.843565 7.497682 1 1
                             630        780        760        300  6.39693  6.39323 6.843565 6.699812 0 0
                               0 -.067878788 -.034343413 -.05711147  6.39693  6.39323 6.843565 6.699812 0 1
                             603        780        740        830  6.39693  6.39323 6.843565 6.699812 0 0
                               0 -.067878848 -.05343413 -.05711147  6.39693  6.39323 6.843565 6.699812 0 1
                             503        780        300        830 6.267898 6.256508  6.36653  6.35593 1 0
                               0          0 -.3434343457  -.0611146 6.267898 6.256508  6.36653  6.35593 1 1
                             530        780        300        500 6.267898 6.256508  6.36653  6.35593 1 0
                               0          0 -.1334343457  -.0611246 6.267898 6.256508  6.36653  6.35593 1 1
                             845        870        930       1500  6.53218 6.733236 6.626673 6.833332 1 0
                      -.194545617  -.278787887 -.0534343713 -.09511021  6.53218 6.733236 6.626673 6.833332 1 1
                             7450        78        933       5000  6.53218 6.733236 6.626673 6.833332 1 0
                      -.194545617  -.27878887 -.0534343413 -.09511111  6.53218 6.733236 6.626673 6.833332 1 1
                             8450       17880        300       1500 6.689992 6.665652 7.626673 7.833332 0 0
                               0          0          0          0 6.689992 6.665652 7.626673 7.833332 0 1
                             845       7880        803       1500 6.689992 6.665652 7.626673 7.833332 0 0
                               0          0          0          0 6.689992 6.665652 7.626673 7.833332 0 1
                            1240       18780       1330       2500 7.011077 7.033377 7.313441 7.833332 0 0
                               0 -.1787878155          0          0 7.011077 7.033377 7.313441 7.833332 0 1
                            1430       1780       1220       2500 7.011077 7.033377 7.313441 7.495678 0 0
                               0 -.1878787855          0          0 7.011077 7.033377 7.313441 7.495678 0 1
                             644        678        730        500 6.212208  6.32293 6.235608  6.34333 1 0
                      -.1843434455 -.178787855 -.0676767765 -.07111765 6.212208  6.32293 6.235608  6.34333 1 1
                             440        7870        670        650 6.212208  6.32293 6.235608  6.34333 1 0
                      -.182444455 -.187878755 -.0767676765 -.07111165 6.212208  6.32293 6.235608  6.34333 1 1
                            1444       1780       6760       1250 6.902255 6.902345 6.907877 6.903455 0 0
                               0          0          0          0 6.902255 6.902345 6.907877 6.903455 0 1
                            1230       10870       1676       1205 6.902255 6.902345 6.907877 6.903455 0 0
                               0          0          0          0 6.902255 6.902345 6.907877 6.903455 0 1
                      end
                      .


                      .

                      Comment


                      • #12
                        Since I wasn't able to include one pair of variables, please, consider the code as:
                        Code:
                        eststo male1: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & married == 1 & rme == 0
                        eststo male0: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & married == 0 & rme == 0
                        eststo female1: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & married == 1 & rme == 0
                        eststo female0: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & married == 0 & rme == 0  
                        
                        mat mean=e(mean)
                        mat sd=e(sd)
                        mat pval=e(mean)  
                        eststo rme_female: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 1 & rme == 1, detail reg earn45_b_und_marr if female == 0 & rme == 1
                        ttest log_earn45_b_und_marr30 = log_earn45_b_und_nmarr30 if female == 1 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 1 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        ttest log_earn45_b_gr_marr30 = log_earn45_b_gr_nmarr30 if female == 1 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        test log_earn45_r_gr_marr30 = log_earn45_r_gr_nmarr30 if female == 1 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 1 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'    
                        foreach stat in mean sd pval{ estadd matrix `stat'=`stat', replace } est sto ttest  
                        
                        eststo rme_male: estpost sum earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr earn45_nongr_marr if female == 0 & rme == 1, detail
                        ttest log_earn45_b_und_marr30 = log_earn45_b_und_nmarr30 if female == 0 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        ttest log_earn45_r_und_marr30 = log_earn45_r_und_nmarr30 if female == 0 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        ttest log_earn45_b_gr_marr30 = log_earn45_b_gr_nmarr30 if female == 0 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        ttest log_earn45_r_gr_marr30 = log_earn45_r_gr_nmarr30 if female == 0 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'       mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                        ttest log_earn45_nongr_marr30 = log_earn45_nongr_nmarr30 if female == 0 & rme == 1    
                        mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                        mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                        mat pval[1, colnumb(pval,"`var'")]= `r(p)'    
                        foreach stat in mean sd pval{ estadd matrix `stat'=`stat', replace } est sto ttest_male
                        Last edited by Bruna Barcellos; 26 Jul 2023, 17:14.

                        Comment


                        • #13
                          I see only 2 complete pairs of variables, but the following should be illustrative.

                          Code:
                          * Example generated by -dataex-. For more info, type help dataex
                          clear
                          input float(earn45_b_und_marr earn45_r_und_marr earn45_b_gr_marr earn45_r_gr_marr log_earn45_b_und_marr30 log_earn45_b_und_nmarr30 log_earn45_r_und_marr30 log_earn45_r_und_nmarr30 female rme)
                                 600        620        840        820 6.433339  6.22293 6.555573 6.423229 1 0
                          .034345707  .0343434343 -.13222157 -.1222208 6.433339  6.22293 6.555573 6.423229 1 1
                                 634        630        740        250 6.433339  6.22293 6.555573 6.423229 1 0
                          .03345345707  .043434343 -.13222157 -.1282208 6.433339  6.39693 6.555573 6.423229 1 1
                                13450       1340       2000       1020 6.922225 6.902325 7.009996 7.002366 1 0
                                   0          0          0   .2623444 6.922225 6.902325 7.009996 7.002366 1 1
                                13450       1344       1220       1320 6.922225 6.902325 7.009996 7.002366 1 0
                                   0          0          0   .262144 6.922225 6.902325 7.009996 7.002366 1 1
                                 300        640        620        602  6.39213  6.35553  6.44493  6.32293 0 0
                                   0          0          0          0  6.39213  6.35553  6.44493  6.32293 0 1
                                 330        640        200        620  6.39213  6.35553  6.44493  6.32293 0 0
                                   0          0          0          0  6.39213  6.35553  6.44493  6.32293 0 1
                                 330        440        200        200  6.39213  6.35553  6.44493 6.623333 0 0
                           -.1345505 -.2121212358  .18222155  .22315658  6.39213  6.35553  6.44493 6.623333 0 1
                                 6345        100        200        720  6.39213  6.35553  6.44493 6.623333 0 0
                           -.134505 -.22121212358  .18222155  .22111358  6.39213  6.35553  6.44493 6.623333 0 1
                                 340        620        700        720  6.39213  6.35553  6.44493 6.623333 0 0
                                   0  .02121212215  .06822209  .06411148  6.39213  6.35553  6.44493 6.623333 0 1
                                 340        120        720        220  6.39213  6.35553  6.44493 6.623333 0 0
                                   0  .07122112165  .06822209  .06411848  6.39213  6.35553  6.44493 6.623333 0 1
                                 340        812        800       1220  6.39213  6.35553 6.645612 6.623333 0 0
                                   0          0 -.06222848          0  6.39213  6.35553 6.645612 6.632242 0 1
                                 340        830        720       1200  6.39213  6.35553 6.645612 6.632242 0 0
                                   0          0 -.06422248          0  6.39213  6.35553 6.645612 6.632242 0 1
                                 534        630        620        620 6.214608 6.387636  6.39113  6.55593 1 0
                          -.131343448          0          0  .03111186 6.214608 6.387636  6.39113  6.55593 1 1
                                 340        603        200        620 6.214608 6.387636  6.39113  6.55593 1 0
                          -.13134418          0          0  .03111186 6.214608 6.387636  6.39113  6.55593 1 1
                                 744        803        200        920  6.55108  6.52308 6.684567 6.633312 0 0
                                   0          0          0          0  6.55108  6.52308 6.684567 6.633312 0 1
                                 740        803        200        920  6.55108  6.52308 6.684567 6.633312 0 0
                                   0          0          0          0  6.55108  6.52308 6.684567 6.633312 0 1
                                 440        633        200        200 5.991465 5.925465 6.324508  6.32223 1 0
                                   0 -.1787878155  .09222021  .08111184 5.991465 5.925465 6.324508  6.32223 1 1
                                 444        580        520        630 5.991465 5.925465 6.324508  6.32223 1 0
                                   0 -.187878785  .09221021  .08001184 5.991465 5.925465 6.324508  6.32223 1 1
                                 840        780        720        853  6.55108 6.925465 6.683472 6.755536 1 0
                          -.1334343457  -.06787846          0          0  6.55108 6.925465 6.683472 6.755536 1 1
                                 730        780        220        853  6.55108 6.925465 6.683472 6.755536 1 0
                          -.13344457  -.07878246          0          0  6.55108 6.925465 6.683472 6.755536 1 1
                                1340       1880       1220       1300 7.090077 7.032177 6.683472 6.755536 0 0
                                   0  -.17878805 -.03722223  -.1011105 7.090077 7.032177 6.683472 6.755536 0 1
                                14340        888       1320        300 7.090077 7.032177 6.683472 6.755536 0 0
                                   0  -.107878785 -.03222223  -.1051105 7.090077 7.032177 6.683472 6.966655 0 1
                                 344        70        320        450 5.703783 5.232383 5.683472 5.966655 1 0
                                   0          0          0          0 5.703783 5.232383 5.683472 5.966655 1 1
                                 344        70        150        450 5.703783 5.232383 5.683472 5.966655 1 0
                                   0          0          0          0 5.703783 5.232383 5.683472 5.966655 1 1
                                 622        700        230        300 5.991465  6.39693 6.219908  6.00108 1 0
                           -.4066651   -.3787472  -.1456705 -.13111157 5.991465  6.39693 6.219908  6.00108 1 1
                                 660        500        300        300 5.991465  6.39693 6.219908  6.00108 1 0
                           -.4054661   -.3787472  -.1535675 -.13113157 5.991465  6.35553 6.219908  6.00108 1 1
                                 660        850        340        350 5.991465 6.144448 6.306678 6.302238 1 0
                          -.1173434507          0          0          0 5.991465 6.144448 6.306678 6.302238 1 1
                                 3450        850        340        350 5.991465 6.144448 6.306678 6.302238 1 0
                          -.134535307          0          0          0 5.991465 6.144448 6.306678 6.302238 1 1
                                 350        880        340        630  6.39693 6.144448  6.31193  6.53456 1 0
                           -.34356337  -.15787705  .06434348          0  6.39693 6.144448  6.31193  6.53456 1 1
                                 633        670        300        630  6.39693 6.144448  6.31193  6.53456 1 0
                           -.3435357  -.1878785  .06345648          0  6.39693 6.144448  6.31193  6.53456 1 1
                                1350       1787       3400       1300 7.313221 7.144448 7.095567 7.232077 0 0
                                   0          0 -.08034384          0 7.313221 7.144448 7.095567 7.232077 0 1
                                1350       1700       13400       1300 7.313221 7.144448 7.095567 7.232077 0 0
                                   0          0 -.083434344          0 7.313221 7.144448 7.095567 7.232077 0 1
                                 3530        987        300       1300 6.684612 6.699992 6.843565 6.804565 1 0
                                   0          0 -.1134343307  -.1111105 6.684612 6.699992 6.843565 6.804565 1 1
                                 3530        978        340        930 6.684612 6.699992 6.843565 6.804565 1 0
                                   0          0 -.113434307  -.1053605 6.684612 6.699992 6.843565 6.804565 1 1
                                3300       17870       2343       3000 7.313221 7.699992 7.843565 7.497682 1 0
                                   0   .105787805          0          0 7.313221 7.699992 7.843565 7.497682 1 1
                                3300       7800       23430       2030 7.313221 7.699992 7.843565 7.497682 1 0
                                   0   .10787875          0          0 7.313221 7.699992 7.843565 7.497682 1 1
                                 630        780        760        300  6.39693  6.39323 6.843565 6.699812 0 0
                                   0 -.067878788 -.034343413 -.05711147  6.39693  6.39323 6.843565 6.699812 0 1
                                 603        780        740        830  6.39693  6.39323 6.843565 6.699812 0 0
                                   0 -.067878848 -.05343413 -.05711147  6.39693  6.39323 6.843565 6.699812 0 1
                                 503        780        300        830 6.267898 6.256508  6.36653  6.35593 1 0
                                   0          0 -.3434343457  -.0611146 6.267898 6.256508  6.36653  6.35593 1 1
                                 530        780        300        500 6.267898 6.256508  6.36653  6.35593 1 0
                                   0          0 -.1334343457  -.0611246 6.267898 6.256508  6.36653  6.35593 1 1
                                 845        870        930       1500  6.53218 6.733236 6.626673 6.833332 1 0
                          -.194545617  -.278787887 -.0534343713 -.09511021  6.53218 6.733236 6.626673 6.833332 1 1
                                 7450        78        933       5000  6.53218 6.733236 6.626673 6.833332 1 0
                          -.194545617  -.27878887 -.0534343413 -.09511111  6.53218 6.733236 6.626673 6.833332 1 1
                                 8450       17880        300       1500 6.689992 6.665652 7.626673 7.833332 0 0
                                   0          0          0          0 6.689992 6.665652 7.626673 7.833332 0 1
                                 845       7880        803       1500 6.689992 6.665652 7.626673 7.833332 0 0
                                   0          0          0          0 6.689992 6.665652 7.626673 7.833332 0 1
                                1240       18780       1330       2500 7.011077 7.033377 7.313441 7.833332 0 0
                                   0 -.1787878155          0          0 7.011077 7.033377 7.313441 7.833332 0 1
                                1430       1780       1220       2500 7.011077 7.033377 7.313441 7.495678 0 0
                                   0 -.1878787855          0          0 7.011077 7.033377 7.313441 7.495678 0 1
                                 644        678        730        500 6.212208  6.32293 6.235608  6.34333 1 0
                          -.1843434455 -.178787855 -.0676767765 -.07111765 6.212208  6.32293 6.235608  6.34333 1 1
                                 440        7870        670        650 6.212208  6.32293 6.235608  6.34333 1 0
                          -.182444455 -.187878755 -.0767676765 -.07111165 6.212208  6.32293 6.235608  6.34333 1 1
                                1444       1780       6760       1250 6.902255 6.902345 6.907877 6.903455 0 0
                                   0          0          0          0 6.902255 6.902345 6.907877 6.903455 0 1
                                1230       10870       1676       1205 6.902255 6.902345 6.907877 6.903455 0 0
                                   0          0          0          0 6.902255 6.902345 6.907877 6.903455 0 1
                          end
                          
                          keep earn45_b_und_marr earn45_r_und_marr log_earn45_b_und_marr30 log_earn45_b_und_nmarr30 log_earn45_r_und_marr30 log_earn45_r_und_nmarr30 female rme
                          rename *_nmarr30 *_marr30n
                          
                          
                          gen male=!female
                          eststo male: estpost sum earn45_b_und_marr earn45_r_und_marr if male & !rme
                          eststo female: estpost sum earn45_b_und_marr earn45_r_und_marr if female & !rme 
                          
                          
                          foreach gender in male female{
                              estpost sum earn45_b_und_marr earn45_r_und_marr if `gender' & !rme
                              foreach var of varlist earn45_b_und_marr earn45_r_und_marr{
                                  mat mean=e(mean)
                                  mat sd=e(sd)
                                  mat pval=e(mean) 
                                  ttest log_`var'30= log_`var'30n    if `gender' & !rme
                                  mat mean[1, colnumb(mean,"`var'")]= `r(mu_1)'- `r(mu_2)'      
                                  mat sd[1, colnumb(sd,"`var'")]= `r(se)'    
                                  mat pval[1, colnumb(pval,"`var'")]= `r(p)'
                                  foreach stat in mean sd pval{
                                      estadd matrix `stat'=`stat', replace
                                  }
                                  est sto ttest_`gender' 
                              }
                          }
                          
                          esttab male ttest_male female ttest_female, cells(mean(fmt(2) star pval(pval)) sd(fmt(2) par)) ///
                          starlev(* 0.10 ** 0.05 *** 0.01) mlab(Mean Difference Mean Difference, lhs(Variables)) ///
                          collab(none) mgroups("Male" "Female", pattern(1 0 1 0)) label ///
                          addnotes("Standard deviations (errors) in parentheses under means (differences)" "* p<0.10, ** p<0.05, *** p<0.01")
                          Res.:

                          Code:
                          . esttab male ttest_male female ttest_female, cells(mean(fmt(2) star pval(pval)) sd(fmt(2) par)) ///
                          > starlev(* 0.10 ** 0.05 *** 0.01) mlab(Mean Difference Mean Difference, lhs(Variables)) ///
                          > collab(none) mgroups("Male" "Female", pattern(1 0 1 0)) label ///
                          > addnotes("Standard deviations (errors) in parentheses under means (differences)" "* p<0.10, ** p<0.05, *** p<0.01")
                          
                          ------------------------------------------------------------------------------------
                                                       Male                          Female                   
                                                        (1)             (2)             (3)             (4)   
                          Variables                    Mean      Difference            Mean      Difference   
                          ------------------------------------------------------------------------------------
                          earn45_b_und_marr         2018.23            0.04**       2235.61           -0.06   
                                                  (3406.25)          (0.01)       (3562.33)          (0.05)   
                          earn45_r_und_marr         3299.68           -0.07**       1829.32           -0.02   
                                                  (5499.44)          (0.03)       (3668.18)          (0.03)   
                          ------------------------------------------------------------------------------------
                          Observations                   22              22              28              28   
                          ------------------------------------------------------------------------------------
                          Standard deviations (errors) in parentheses under means (differences)
                          * p<0.10, ** p<0.05, *** p<0.01

                          Comment


                          • #14
                            Dear Andrew,

                            It worked perfectly!
                            I was able to adapt it to my code and re-use it for other parts of the table too.
                            I have no words to express my gratitude for your help. I was able to learn a lot from your examples. Thank you!

                            Wishing you the best.
                            Kind regards,
                            Bruna

                            Comment


                            • #15
                              Hey, Andrew

                              If possible, could I ask for your help in something else?

                              I'm running the code where I get the 'sum' for a list of variables and the 'mean' for others.
                              I'll use the auto data as an example.

                              The code follow as (please, ignore variables and values, it's just an example of the code structure):

                              Code:
                              sysuse auto, clear
                              
                              eststo v1: estpost sum weight if foreign == 1
                              eststo v2: estpost sum price if foreign == 1
                              
                              eststo v3: mean weight if foreign == 0
                              eststo v4: mean price if foreign == 0
                              My goal is to have the significance stars only for the vars with the 'mean' option, since in my original data, they represent the difference between log values.
                              Since the results of -sum- go to the mean and the -mean- go to the b, I tried this code:

                              Code:
                              esttab, cells("mean b(star fmt(3))" sd(par fmt(2)))
                              However, the results are not the best:

                              Code:
                                                   (1)                          (2)                          (3)                          (4)                
                                                                                                             Mean                         Mean                
                                                mean/sd            b         mean/sd            b         mean/sd            b         mean/sd            b  
                              --------------------------------------------------------------------------------------------------------------------------------
                              weight           2315.909                                                               3317.115***                            
                                               (433.00)                                                  (695.36)                                            
                              price                                         6384.682                                                               6072.423***
                                                                           (2621.92)                                                 (3097.10)                
                              --------------------------------------------------------------------------------------------------------------------------------
                              N                      22                           22                           52                           52                
                              --------------------------------------------------------------------------------------------------------------------------------

                              As you can see, from the code I created I can get the sd values to be under the mean values, but not under the b. There is also an empty row created between my values.
                              I tried using the -mean- command for all estimations too, but it didn't work since I wasn't able to find a way to suppress the estimation stars only for the variables I wanted. Also, append from esttab does not work since I need this values to be added in a column, not a row.

                              I even tried the -substitute- command, but since it is supposed to be a replicable code, I would like to avoid such commands with manual work.

                              Any advice will be welcomed! Thank you in advance.
                              Last edited by Bruna Barcellos; 04 Aug 2023, 02:38.

                              Comment

                              Working...
                              X