Solved – In Stata, why do the stcox CI differ when using margins

cox-modelstata

I'm trying to understand how the margins and marginsplot work after stcox command in Stata.

So let's start with a dumb example:

webuse stan3
stset
stcox i.posttran i.surg

That gives me result

------------------------------------------------------------------------------
          _t | Haz. Ratio   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
  1.posttran |   1.173034   .3444712     0.54   0.587     .6597023    2.085801
   1.surgery |   .3449043   .1482592    -2.48   0.013     .1485267    .8009264
------------------------------------------------------------------------------

Now, when I use

margins, over( posttran surgery )

The output is

Predictive margins                                Number of obs   =        172
Model VCE    : OIM

Expression   : Relative hazard, predict()
over         : posttran surgery

----------------------------------------------------------------------------------
                 |            Delta-method
                 |     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
-----------------+----------------------------------------------------------------
posttran#surgery |
            0 0  |          1          .        .       .            .           .
            0 1  |   .3449043   .1482592     2.33   0.020     .0543217    .6354869
            1 0  |   1.173034   .3444712     3.41   0.001     .4978826    1.848185
            1 1  |   .4045843   .2057569     1.97   0.049     .0013083    .8078604
----------------------------------------------------------------------------------

What is puzzling me here is the fact that estimates and their Std. errors are the same as when using stcox. However – the CI, z and p are now different.

What is causing such behaviour?


Update: I also posted the question on Statalist.

Best Answer

I have not used -margins- much. I do not know if it is a bug or a design feature, but I have always been wary of using -margins- with ratio outcomes. I think the results are only correct with linear predictors.

For your Cox model, you can use margins on the linear predictor by

. margins , over(posttran surgery) exp(predict(xb))

You can then manually exponentiate the results to get the same results presented by -stcox-

NOTE: The -exp- above is an abbreviation of -expression- (an option to -margins-), not the exponential function. Also, the command

. margins , over(posttran surgery) exp(exp(predict(xb)))

(where the second -exp- is the exponential function) does not produce the correct results. Instead it produces the same output as the default option. In short, you have to use -margins-, then exponentiate. You cannot exponentiate then use -margins-.

Related Question