help for regoprob

Random Effects Generalized Ordered Probit Estimation

regoprob depvar [indepvars] [if exp] [in range] [, i(varname) quadrat(#) pl pl(varlist) npl npl(varlist) constraints(clist) level(#) maximize_options ]

regoprob shares the features of all estimation commands; see help est. regoprob typed without arguments redisplays previous results.

The syntax of predict following regoprob is

predict [type] newvarname(s) [if exp] [in range] [, statistic outcome(outcome) ]

where statistic is

p probability marginal on the individual effect (specify one new variable and outcome() option, or specify k new variables, k = # of outcomes); the default xb linear prediction xb (outcome() option required) stdp S.E. of linear prediction (outcome() option required) stddp S.E. of difference in linear predictions (outcome() option is outcome(outcome1,outcome2))

Note that you specify one new variable with xb, stdp, and stddp and specify either one or k new variables with p.

These statistics are available both in and out of sample; type "predict ... if e(sample) ..." if wanted only for the estimation sample.


regoprob is a user-written program that estimates panel data generalized ordered probit models with random effects. The actual values taken on by the dependent variable are irrelevant except that larger values are assumed to correspond to "higher" outcomes. The generalized model relaxes the parallel regression assumption of standard ordered probit models; see help oprobit and its random effects counterpart reoprob. regoprob supports linear constraints and allows the user to partially relax the parallel regression assumption by specifying variables in npl() or pl(). The likelihood contribution for each unit is approximated using Gauss-Hermite quadrature. regoprob requires installation of the goprobit and the ghquadm commands.

regoprob is a modified version of goprobit. regoprob was written for Stata 8 and many of the references in this help file are for Stata 8 manuals and commands.


i() specifies the variable corresponding to an independent unit (e.g., a subject id). i(varname) is not optional.

quadrat() specifies the number of points to use for the Gauss-Hermite quadrature. It is optional, and the default is 12. Increasing this value improves accuracy, but also increases computation time.

pl, npl, npl(), pl() provide alternative means for imposing or relaxing the parallel regression assumption. Only one may be specified at a time.

pl specified without parameters constrains all independent variables to meet the parallel regression assumption. It will produce results that are equivalent to oprobit. npl specified without parameters relaxes the parallel regression assumption for all explanatory variables. This is the default option.

pl(varlist) constrains the specified explanatory variables to meet the parallel regression assumption. All other variables do not need to meet the assumption. The variables specified must be a subset of the explanatory variables.

npl(varlist) frees the specified explanatory variables from meeting the parallel regression assumption. All other explanatory variables are constrained to meet the assumption. The variables specified must be a subset of the explanatory variables.

constraints(clist) specifies the linear constraints to be applied during estimation. The default is to perform unconstrained estimation. Constraints are defined with the constraint command. constraints(1) specifies that the model is to be constrained according to constraint 1; constraints(1-4) specifies constraints 1 through 4; constraints(1-4,8) specifies 1 through 4 and 8. Keep in mind that the pl, and npl options work by generating across-equation constraints, which may affect how any additional constraints should be specified. When using the constraint command, refer to equations by their equation #, e.g. #1, #2, etc.

level(#) specifies the confidence level in percent for the confidence intervals of the coefficients; see help level.

maximize_options control the maximization process; see help maximize. You should never have to specify them.

Options for predict

p, the default, calculates predicted probabilities marginal on the individual effect.

If you do not specify the outcome() option, you must specify k new variables. For instance, say you fitted your model by typing "regoprob happy income health, i(persnr)" and that happy takes on three values. Then you could type "predict p1 p2 p3, p" to obtain all three predicted probabilities.

If you also specify the outcome() option, then you specify one new variable. Say that happy took on values 1, 2, and 3. Then typing "predict p1, p outcome(1)" would produce the same p1 as above, "predict p2, p outcome(2)" the same p2 as above, etc. If happy took on values 7, 22, and 93, you would specify outcome(7), outcome(22), and outcome(93). Alternatively, you could specify the outcomes by referring to the equation number (outcome(#1), outcome(#2), and outcome(#3).

xb calculates the linear prediction. You must also specify the outcome() option.

stdp calculates the standard error of the linear prediction. You must specify option outcome().

stddp calculates the standard error of the difference in two linear predictions. You must specify option outcome(), in this case with two particular outcomes of interest inside the parentheses; for example, "predict sed, stdp outcome(1,3)".

outcome() specifies for which outcome the statistic is to be calculated. equation() is a synonym for outcome(): it does not matter which one you use. outcome() and equation() can be specified using (1) #1, #2, ..., with #1 meaning the first category of the dependent variable, #2 the second category, etc.; or (2) values of the dependent variable.

Remarks and Methods

Standard ordered response models such as oprobit or reoprob impose what is called the parallel regression assumption. By default, regoprob relaxes this assumption and allows the effects of the explanatory variables to vary with the point at which the categories of the dependent variable are dichotomized. However, if the pl option is specified, regoprob estimates the standard random effects ordered probit model, e.g., the commands reoprob y x1 x2 x3, i(id) and regoprob y x1 x2 x3, i(id) pl will produce equivalent results.

More formally, suppose we have an ordinal dependent variable Y_it which takes on the values 1, 2, ..., J, where i denotes cross-sectional units and t the time dimension of the (panel) dataset (see help xt). The random effects generalized ordered probit model estimates a set of coefficients (including one for the constant) for each of the J - 1 points at which the dependent variable can be dichotomized. The probabilities that Y_it will take on each of the values 1, ..., J conditional on the individual effect u_i is equal to

P( Y_it = 1 | u_i ) = F( -X_it B_1 - u_i )

P( Y_it = j | u_i ) = F( -X_it B_j - u_i ) - F( -X_it B_(j-1) - u_i ) j = 2, ..., J - 1

P( Y_it = J | u_i ) = 1 - F( -X_it B_(J-1) - u_i )

The random effects generalized ordered probit model uses the standard normal distribution as the cumulative distribution for F(.), although other distributions may also be used. The individual effects are assumed to be normally distributed with zero mean and variance sigma^2 which is parameterized as rho = sigma^2/(1+sigma^2).

The standard random effects ordered probit (estimated by reoprob and regoprob with the pl option) restricts the B_j coefficients to be the same for every dividing point j = 1, ..., J-1. The random effects generalized ordered probit model (estimated in regoprob via the npl() and pl() options) restricts some B_j coefficients to be the same for every dividing point while others are free to vary.

Note that the generalized ordered probit model imposes explicit restrictions on parameters. Since probabilities are by definition constrained to be in the range [0,1], valid combinations must satisfy the following inequalities:

X_it B_1 >= X_it B_2 >= X_it B_3 ... >= X_it B_J-1

The current version of regoprob does not impose these restrictions during the maximization process. After fitting the model, the user should verify the validity of the model by calculating predicted probabilities. See help goprobit, help gologit2 and http://www.nd.edu/~rwilliam/gologit2/ for further discussion on this topic.

The likelihood contribution for each cross-sectional unit in the above model is approximated using a Gauss-Hermite quadrature. See Butler and Moffitt (1982) for details about using Gauss-Hermite quadrature to approximate such integrals.

regoprob uses the d1 method (analytic first derviatives) of Stata's ml commands.


. regoprob happy linc unempl health if male == 1, i(id)

. regoprob happy linc unempl health if male == 1, i(id) npl(unempl)

. regoprob, level(99)

. predict xb1, xb outcome(#1)


Stefan Boes Socioeconomic Institute Statistics and Empirical Economics Research Group University of Zurich boes@sts.unizh.ch http://www.unizh.ch/sts/


Guillaume R. Frechette of the New York University wrote reoprob and kindly gave me permission to use parts of his code for regoprob. See reoprob for a description of the reoprob command.

Richard Williams of the Notre Dame Department of Sociology wrote gologit2 and kindly gave me permission to use parts of his code for programming goprobit. For a more detailed description of gologit2 and its features, see the reference below or gologit2.

reoprob combines the features of goprobit and reoprob, i.e., estimates panel data generalized ordered probit models.


Boes, S. and R. Winkelmann (2006) "The Effect of Income on Positive and Negative Subjective Well-Being." unpublished manuscript.

Butler, J.S. and R. Moffitt (1982) "A computationally efficient quadrature procedure for the one-factor multinomial probit model." Econometrica 50: 761-764.

Williams, Richard (2006) "Generalized Ordered Logit/ Partial Proportional Odds Models for Ordinal Dependent Variables." The Stata Journal 6(1): 58-82. A pre-publication version is available at http://www.nd.edu/~rwilliam/gologit2/gologit2.pdf.

Also see

Manual: [U] 23 Estimation and post-estimation commands, [U] 29 Overview of Stata estimation commands

Online: help for estcom, postest, constraint, oprobit, goprobit, ologit, gologit, gologit2, reoprob