Stata: Data Analysis and Statistical Software
   >> Home >> Resources & support >> FAQs >> Fitting ordered logistic and probit models with constraints

How can I convert Stata’s parameterization of ordered probit and logistic models to one in which a constant is estimated?

Why is there no constant term reported in ologit and oprobit?

Title   Fitting ordered logistic and probit models with constraints
Author Mark Inlow, StataCorp
Ronna Cong, StataCorp
Date August 1999; minor revisions July 2009

Consider a parameterization in which a constant is present, e.g., Greene’s formulation (Greene 2003, 736):

    Pr(Y = 0) = F(−Xb)
    Pr(Y = 1) = F(u1 −Xb) − F(−Xb)
    Pr(Y = 2) = F(u2 −Xb) − F(u1 −Xb)
    ...

In the preceding, F is the cumulative distribution function (CDF), either the cumulative standard normal distribution for ordered probit regression or the cumulative logistic distribution for ordered logistic regression. Since Greene includes a constant in his Xb, we need to indicate this to make his notation and Stata’s ordered probit/logistic notation comparable:

    Pr(Y = 0) = F(−Xb − con)
    Pr(Y = 1) = F(u1 − Xb − con) − F(−Xb − con)
    Pr(Y = 1) = F(u2 − Xb − con) − F(u1 −Xb − con)
    ...

Now, compare this with Stata’s no-constant model:

    Pr(Y = 0) = F(/cut1 − Xb)
    Pr(Y = 1) = F(/cut2 − Xb) − F(/cut1 − Xb)
    Pr(Y = 2) = F(/cut3 − Xb) − F(/cut2 − Xb)
    ...

Examining the expressions for Pr(Y = 0), we see that

    −Xb − con = /cut1 − Xb 

so Greene’s constant equals –/cut1. Greene set the first cut point to zero, whereas Stata set the constant to zero.

Combining this observation with the expressions for Pr(Y = 1), we see that Greene’s u1 = /cut2 + con = /cut2 − /cut1. Doing the same for Pr(Y = 2), we see that u2 = /cut3 − /cut1. Thus to estimate Greene’s model using the coefficient estimates from Stata’s ordered probit/logistic regression commands we can use the following:

    Greene's intercept = −/cut1
    Greene's u1 = /cut2 − /cut1
    Greene's u2 = /cut3 − /cut1
    ...

After you fit your model using Stata, you can convert to Greene’s parameterization using lincom, which will provide both the coefficient estimate and the standard error as follows:

    ologit/oprobit ...
    lincom _b[/cut2] - _b[/cut1]
    lincom _b[/cut3] - _b[/cut1]
    ...

To make things concrete, consider the following example using the auto dataset, which is shipped with Stata.

. sysuse auto, clear
(1978 Automobile Data)

. replace rep78 = 2 if rep78 == 1 | missing(rep78)
(7 real changes made)

. tabulate rep78

     Repair |
Record 1978 |      Freq.     Percent        Cum.
------------+-----------------------------------
          2 |         15       20.27       20.27
          3 |         30       40.54       60.81
          4 |         18       24.32       85.14
          5 |         11       14.86      100.00
------------+-----------------------------------
      Total |         74      100.00

. oprobit rep78 price weight

Iteration 0:   log likelihood = -97.440603  
Iteration 1:   log likelihood = -91.088192  
Iteration 2:   log likelihood = -91.074229  
Iteration 3:   log likelihood = -91.074223  

Ordered probit regression                         Number of obs   =         74
                                                  LR chi2(2)      =      12.73
                                                  Prob > chi2     =     0.0017
Log likelihood = -91.074223                       Pseudo R2       =     0.0653

------------------------------------------------------------------------------
       rep78 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       price |   .0000966   .0000515     1.88   0.061    -4.36e-06    .0001976
      weight |  -.0007095   .0002013    -3.52   0.000    -.0011041    -.000315
-------------+----------------------------------------------------------------
       /cut1 |  -2.468357   .5580629                      -3.56214   -1.374573
       /cut2 |  -1.276601   .5310947                     -2.317528   -.2356748
       /cut3 |  -.3720451   .5046055                     -1.361054    .6169635
------------------------------------------------------------------------------

Thus the intercept (constant) is −/cut1 = 2.47, and now we compute the point estimate and standard error of u1:

. lincom _b[/cut2] - _b[/cut1]

 ( 1)  - [cut1]_cons + [cut2]_cons = 0

------------------------------------------------------------------------------
       rep78 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         (1) |   1.191755    .183964     6.48   0.000     .8311925    1.552318
------------------------------------------------------------------------------

Our estimate of u1 is 1.19 with a standard error of 0.18. Finally we estimate u2:

. lincom _b[/cut3] - _b[/cut1]

 ( 1)  - [cut1]_cons + [cut3]_cons = 0

------------------------------------------------------------------------------
       rep78 |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         (1) |   2.096311   .2457135     8.53   0.000     1.614722    2.577901
------------------------------------------------------------------------------

Thus our estimate of u2 is 2.096 with a standard error of .246.

Reference

Greene, W. H. 2003.
Econometric Analysis. 5th ed. Upper Saddle River, NJ: Prentice Hall.
Bookmark and Share 
FAQs
What's new?
Statistics
Data management
Graphics
Programming Stata
Mata
Resources
Internet capabilities
Stata for Windows
Stata for Unix
Stata for Mac
Technical support
Like us on Facebook Follow us on Twitter Follow us on LinkedIn Google+ Watch us on YouTube
Follow us
© Copyright 1996–2013 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index   |   View mobile site