Announcement

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

  • Economic significance for Tobit regression

    Hi,

    I am a new user of STATA so my question is probably fairly easy.

    I'm trying to calculate economic significance according to this definition: "Economic significance is indicated by the predicted change in the dependent variable from a movement from the tenth to the ninetieth percentile in the independent variable as a percentage of the mean of the dependent variable".

    So far I have estimated the Tobit regression using: tobit leases tobinq logsizemv taxrate abnormalearnings roa solvency, ll(0) ul(100) vce(robust)

    The dependent variable "leases" is a firms lease obligations as a percentage of total debt (i.e., censoring at 0 and 100).

    Thanks in advance
    Attached Files

  • #2
    You can use -margins, contrast-. See example below

    Code:
    sysuse auto,clear
    generate wgt=weight/1000
    sum mpg, meanonly
    local mpg_mean = r(mean)
    tobit mpg price gear wgt, ll(17) vce(robust)  nolog
    //Prediction as percent of mean of dependent variable
    //Change in the wgt from 10 to 90th percentile; other variables at mean
    margins ,expression(predict(ystar(17,.))/`mpg_mean')  at((p10) wgt )  at((p90) wgt)  /// 
        vce(unconditional)  atmeans
    margins , expression(predict(ystar(17,.))/`mpg_mean')   at((p90) wgt) at((p10) wgt)  /// 
        contrast(atcontrast(ar._at) marginswithin)  atmeans  vce(unconditional)
    Code:
    . margins ,expression(predict(ystar(17,.))/`mpg_mean')  at((p10) wgt )  at((p90) wgt)  /// 
    >         vce(unconditional)  atmeans
    
    Adjusted predictions                                        Number of obs = 74
    
    Expression: predict(ystar(17,.))/21.2972972972973
    1._at: price      = 6165.257 (mean)
           gear_ratio = 3.014865 (mean)
           wgt        =     2.02 (p10)
    2._at: price      = 6165.257 (mean)
           gear_ratio = 3.014865 (mean)
           wgt        =     4.06 (p90)
    
    ------------------------------------------------------------------------------
                 |            Unconditional
                 |     Margin   std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
             _at |
              1  |   1.263198   .0551323    22.91   0.000     1.155141    1.371256
              2  |   .8226502   .0124633    66.01   0.000     .7982226    .8470777
    ------------------------------------------------------------------------------
    
    . margins , expression(predict(ystar(17,.))/`mpg_mean')   at((p90) wgt) at((p10) wgt)  /// 
    >         contrast(atcontrast(ar._at) marginswithin)  atmeans  vce(unconditional) 
    
    Contrasts of adjusted predictions                           Number of obs = 74
    
    Expression: predict(ystar(17,.))/21.2972972972973
    1._at: price      = 6165.257 (mean)
           gear_ratio = 3.014865 (mean)
           wgt        =     4.06 (p90)
    2._at: price      = 6165.257 (mean)
           gear_ratio = 3.014865 (mean)
           wgt        =     2.02 (p10)
    
    ------------------------------------------------
                 |         df        chi2     P>chi2
    -------------+----------------------------------
             _at |          1       53.82     0.0000
    ------------------------------------------------
    
    --------------------------------------------------------------
                 |            Unconditional
                 |   Contrast   std. err.     [95% conf. interval]
    -------------+------------------------------------------------
             _at |
       (2 vs 1)  |   .4405483   .0600529      .3228467    .5582499
    --------------------------------------------------------------

    Comment


    • #3
      Hi Scott,

      Thanks for your reply!

      Just making sure I understand correctly.. Would the conclusion in your example be that the predicted change in mpg from a movement from the tenth to the ninetieth percentile in the wgt variable as a percentage of the mean of mpg is 44.05%?

      Comment


      • #4
        Yes, but it should be -45%. As it is written, it is contrasting the change from p90 to p10. The predicted MPG at p10 is 26.9 and the prediction at p90 is 17.5, a decline of 9.4 as the weight increases.

        The order the at() statements should be reversed :
        Code:
         at((p10) wgt) at((p90) wgt)

        Comment


        • #5
          Okay thanks!

          Comment


          • #6
            Although the excellent advice by Scott Merryman worked perfectly for Tobit regressions, I'm afraid I need help once again..

            How can I adapt the code below to work for fixed effects regressions?

            Code:
            margins , expression(predict(ystar(17,.))/`mpg_mean') at((p90) wgt) at((p10) wgt) /// > contrast(atcontrast(ar._at) marginswithin) atmeans vce(unconditional)
            It says "option ystar() not allowed".

            Any help would be much appreciated.

            Comment


            • #7
              If you are using -xtreg- then the prediction options are not the same as -tobit-. A more complete example would be helpful.

              Comment


              • #8
                Sure - and thanks alot for your help. So as you guessed, I'm using -xtreg-, and wish to make the same calculation of economic significance as in the Tobit example. A simplified version of my code so far is:

                Code:
                xtset id time
                xtreg y x, fe
                
                sum y, meanly
                local y_m=r(mean)
                margins, expression(???/`y_m') at((p10) x) at((p90) x) contrast(atcontrast(ar._at) marginswithin) atmeans
                I was hoping I could simply change the prediction option to one that works with fixed effects.

                The measure of economic significance that I'm trying to calculate is defined as "the predicted change in the dependent variable from a movement from the tenth to the ninetieth percentile in the independent variable as a percentage of the mean of the dependent variable".

                Comment


                • #9
                  Using the overall sample mean:

                  Code:
                  webuse grunfeld,clear
                  
                  xtreg invest mvalue kstock,fe
                  sum invest
                  local y_mean = r(mean)
                  margins, expression(predict(xb)/`y_mean') at((p90) mvalue) at((p10) mvalue) /// 
                      contrast(atcontrast(ar._at) marginswithin)  atmeans

                  Comment


                  • #10
                    Yes, it works! Thank you very much.

                    Comment

                    Working...
                    X