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(u_{1} −Xb) − F(−Xb) Pr(Y = 2) = F(u_{2} −Xb) − F(u_{1} −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(u_{1} − Xb − con) − F(−Xb − con) Pr(Y = 1) = F(u_{2} − Xb − con) − F(u_{1} −Xb − con) ...
Now, compare this with Stata’s noconstant 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 u_{1} = /cut2 + con = /cut2 − /cut1. Doing the same for Pr(Y = 2), we see that u_{2} = /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 u_{1} = /cut2 − /cut1 Greene's u_{2} = /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 
rep78  Coef. Std. Err. z P>z [95% Conf. Interval]  
price  .0000966 .0000515 1.88 0.061 4.36e06 .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 u_{1}:
. 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 u_{1} is 1.19 with a standard error of 0.18. Finally we estimate u_{2}:
. 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 u_{2} is 2.096 with a standard error of .246.