Announcement

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

  • Estimating margins after mvtobit / bitobit

    Dear Statalist Users,

    I'm currently trying to estimate a bivarite Tobit model. So far, I discovered two user written commands to do so: bitobit (by Daniel Lawson, 2007) and mvtobit (by Mikkel Barslund, 2007). Both approaches work and give me similar results, except of some differences in the p-values. Both dependent variables (DA, VT) are censored at 0 and regressed on the same set of independent variables (continuous and dummy).

    The code looks like:
    • bitobit estimate, y1(DA) x1(...) y2( VT) x2(...) censor1( D_censor ) censor2( V_censor )
    • mvtobit (DA ...) (VT ...), vce(robust)
    My main questions concerns marginal effects. I need to estimate "elasticities", namely:
    • E(DA /DA > 0), E(VT / VT > 0), E(DA / DA > 0,VT > 0, E(VT / DA > 0,VT > 0, E(DA / DA > 0,VT = 0, and (VT / DA = 0,VT > 0
    The command margins, dydx(*) predict (ystar(0,.)) does not work, of course. Can somebody refer references or an approach how I could estimate these conditional effects?

    (Edit: I also tried to use Stata's' "cmp" command but couldn't work out how to specify the indicator to get results for a bivariate tobit censored from below. I tried to estimate:
    • cmp (DA = ... ) (VT = ...), ind(2 2)
    ... but results gave me censoring from below and above. Maybe someone can help me in addition with this issue. I tried cmp as there seems to be an option which allows to estimate what I'm looking for --> "condition(c d [, equation(#eqno|eqname)]) ... condition a pr, e, or ystar statistic on bounding another equation's outcome between c and d")

    Thank you for suggestions or comments. If I need to give you additional information to solve this issue, please let me know.

    Kind regards,
    Bianka
    Last edited by BiankaMey#; 22 Jan 2015, 07:33.

  • #2
    Neither bitobit nor mvtobit (available from the SSC archive) are packaged with their own predict
    command. This means the only options allowed with predict are the generic ones documented for the
    predict command. margins predict() option is restricted by this, since margins is using
    predict to compute the marginal statistics.

    Bianka, if you can work out your prediction of interest in terms of the linear prediction equations, then you
    can use margins expression() option with dydx() to get at the marginal effects you are interested
    in.

    Comment


    • #3
      Dear Jeff,

      Thank you very much for your immediate response. I must confess, to my shame, I need additional advice (I apologize for my surely basic questions and little knowledge. I'm a relative newcomer working with these Stata commands). I think I followed your recommendation and calculated linear predictions for the two equations after the mvtobit command (Did you refer to this procedure?):

      mvtobit (DA...) (VT ... ), vce(robust)
      predict xb1, equation(#1)
      predict xb2, equation(#2)

      (I also considered margins, dydx(*) expression(predict(xb), equation(#1)) after the mvtobit command (However, that seems wrong as I'm not able to distinguish equations:

      margins, dydx(*) expression(predict(xb), equation(#1))
      Warning: cannot perform check for estimable functions.
      option equation() not allowed
      r(198);

      Assuming the first approach (using predict after mvtobit) is right, I can now apply margins, dydx(*) expression (...), whereas I'm able to include input (referring also to the linear prediction xb1 and/or xb2) in the expression option to calculate the effects I'm interested in? I'm sorry if I don't get you right. Thank you very much in advance for any further advice.

      Kind regards,
      Bianka

      Comment


      • #4
        Suppose you were interested in the marginal mean of the difference between the linear
        predictions from these two equations.

        Code:
        margins, expression(xb(#1) - xb(#2))
        If x is a predictor (independent variable) in the model, the effect of variable
        x on this marginal mean can be computed by adding the dydx() option.

        Code:
        margins, expression(xb(#1) - xb(#2)) dydx(x)
        Here is a worked example, using suest and the auto data.

        Code:
        . sysuse auto
        (1978 Automobile Data)
        
        . sureg (mpg turn trunk) (head gear turn trunk)
        
        Seemingly unrelated regression
        ----------------------------------------------------------------------
        Equation          Obs  Parms        RMSE    "R-sq"       chi2        P
        ----------------------------------------------------------------------
        mpg                74      2    3.845577    0.5521      91.23   0.0000
        headroom           74      3    .6284492    0.4406      58.26   0.0000
        ----------------------------------------------------------------------
        
        ------------------------------------------------------------------------------
                     |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
        -------------+----------------------------------------------------------------
        mpg          |
                turn |  -.7610113   .1280128    -5.94   0.000    -1.011912   -.5101108
               trunk |  -.3161825   .1316625    -2.40   0.016    -.5742361   -.0581288
               _cons |   55.82001   4.265017    13.09   0.000     47.46073    64.17929
        -------------+----------------------------------------------------------------
        headroom     |
          gear_ratio |  -.0836832   .2221784    -0.38   0.706    -.5191449    .3517785
                turn |   .0029599   .0248268     0.12   0.905    -.0456997    .0516195
               trunk |   .1245635   .0218477     5.70   0.000     .0817427    .1673843
               _cons |    1.41459   1.432978     0.99   0.324    -1.393994    4.223175
        ------------------------------------------------------------------------------
        
        . margins, exp(xb(#1) - xb(#2))
        
        Predictive margins                                Number of obs   =         74
        
        Expression   : xb(#1) - xb(#2)
        
        ------------------------------------------------------------------------------
                     |            Delta-method
                     |     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
        -------------+----------------------------------------------------------------
               _cons |   18.30405   .4541556    40.30   0.000     17.41393    19.19418
        ------------------------------------------------------------------------------
        
        . margins, exp(xb(#1) - xb(#2)) dydx(trunk)
        
        Average marginal effects                          Number of obs   =         74
        
        Expression   : xb(#1) - xb(#2)
        dy/dx w.r.t. : trunk
        
        ------------------------------------------------------------------------------
                     |            Delta-method
                     |      dy/dx   Std. Err.      z    P>|z|     [95% Conf. Interval]
        -------------+----------------------------------------------------------------
               trunk |   -.440746   .1338121    -3.29   0.001    -.7030129   -.1784791
        ------------------------------------------------------------------------------
        Based on your earlier post, I imagine the expression is going to be more complicated,
        but your reference to the linear predictions from the equations would all just be something
        like xb(#1) where #1 refers to the first equation.

        Comment


        • #5
          About the cmp part of your post: You could perhaps try to estimate two interval-censored equations using the indicators(7 7) opiton. The cost is that you have to define two pairs of dependent variables; see the help file for intreg command.

          Comment

          Working...
          X