help for goprobit

Maximum-Likelihood Estimation of Generalized Ordered Probit Models

goprobit depvar [indepvars] [weight] [if exp] [in range] [, pl pl(varlist) npl npl(varlist) constraints(clist) robust cluster(varname) level(#) score(newvarlist|stub*) maximize_options ]

goprobit shares the features of all estimation commands; see help est. goprobit typed without arguments redisplays previous results. fweights, iweights, and pweights are allowed; see help weights.

The syntax of predict following goprobit is

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

where statistic is

p probability (specify one new variable and outcome() option, or specify k new variables, k = # of outcomes); the default

xb linear prediction (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.


goprobit is a user-written program that estimates generalized ordered probit models. The actual values taken on by the dependent variable are irrelevant except that larger values are assumed to correspond to "higher" outcomes. This model relaxes the parallel regression assumption of the standard ordered probit model; see below and help oprobit. goprobit supports linear constraints and allows the user to partially relax equal coefficients by specifying variables in npl() or pl().

goprobit is a modified version of Vincent Kang Fu's gologit and particularly Richard Williams' gologit2 programs. The current version of gologit2 allows to estimate the generalized ordered probit model using the link(probit) option and therefore produces results equivalent to goprobit. goprobit was written for Stata 8 and many of the references in this help file are for Stata 8 manuals and commands.


pl, npl, npl(), pl() provide alternative means for imposing or relaxing equal coefficients. 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.

robust specifies that the Huber/White/sandwich estimator of variance is to be used in place of the traditional calculation; see [U] 23.14 Obtaining robust variance estimates. robust combined with cluster() allows observations which are not independent within cluster (although they must be independent between clusters). If you specify pweights, robust is implied.

cluster(varname) specifies that the observations are independent across groups (clusters) but not necessarily within groups. varname specifies to which group each observation belongs; e.g., cluster(personid) in data with repeated observations on individuals. cluster() affects the estimated standard errors and variance-covariance matrix of the estimators (VCE), but not the estimated coefficients. cluster() can be used with pweights to produce estimates for unstratified cluster-sampled data.

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

score(newvarlist|stub*) creates J-1 new variables, where J is the number of observed outcomes. Each new variable contains the contributions to the scores for an equation in the model; see [U] 23.15 Obtaining scores.

If score(newvarlist) is specified, J-1 new variables must be provided.

If score(stub*) is specified, then variables stub1, stub2, ..., stubJ-1 will be created.

The first variable contains d(ln L_i)/d(x_i B_1); the second variable contains d(ln L_i)/d(x_i B_2); and so on.

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.

If you do not specify the outcome() option, you must specify k new variables. For instance, say you fitted your model by typing "goprobit happy income health" 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.


The oprobit command included with Stata imposes what is called the parallel regression assumption. By default, goprobit relaxes the parallel regression 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, goprobit estimates the standard ordered probit model, e.g. the commands oprobit y x1 x2 x3 and goprobit y x1 x2 x3, pl will produce equivalent results.

In practice, the parallel regression assumption is often violated by the data. Standard advice in such situations is to go to a non-ordinal model, such as mlogit. Unfortunately, such models do not take into account the ordinal nature of the dependent variable and therefore cannot be efficient. goprobit provides an alternative generalized model introduced by Maddala (1983:46) and Terza (1985). This model possibly relaxes the parallel regression assumption for some explanatory variables while being maintained for others. For example, the command goprobit y x1 x2 x3, npl(x1) would relax the parallel regression assumption for x1 while maintaining it for x2 and x3. An equivalent command is goprobit y x1 x2 x3, pl(x2 x3) which forces x2 and x3 to meet the parallel regression assumption while not imposing it on x1.

More formally, suppose we have an ordinal dependent variable Y which takes on the values 1, 2, ..., J. The 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 will take on each of the values 1, ..., J is equal to

P( Y = 1 ) = F( -XB_1 ) P( Y = j ) = F( -XB_j ) - F( -XB_(j-1) ) j = 2, ..., J - 1 P( Y = m ) = 1 - F( -XB_(J-1) )

The generalized ordered probit model uses the normal distribution as the cumulative distribution F(.), although other distributions may also be used; see help gologit and help gologit2.

The standard ordered probit model (estimated by Stata's oprobit command and by goprobit with the pl option) restricts the B_j coefficients to be the same for every dividing point j = 1, ..., J-1. The generalized ordered probit model (estimated in goprobit 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 the parameters. Since probabilities are by definition constrained to be in the range [0,1], valid combinations must satisfy the following inequalities:

XB_1 >= XB_2 >= XB_3 ... >= XB_J-1

The current version of goprobit 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 gologit2 and http://www.nd.edu/~rwilliam/gologit2/ for further discussion on this topic.

A panel data version of goprobit with random effects can be estimated by regoprob; see help regoprob if installed.


. goprobit happy linc unempl health if male == 1, robust

. goprobit happy linc unempl health if male == 1, robust npl(linc)

. goprobit, 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/


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


Boes, S. and R. Winkelmann (2006) "Ordered Response Models." Allgemeines Statistisches Archiv 90: 165-179.

Fu, V.K. (1998) "Estimating Generalized Ordered Logit Models." Stata Technical Bulletin 8: 160-164.

Long, J.S and J. Freese (2003) "Regression Models for Categorical Dependent Variables Using Stata", revised edition, Stata Press.

Maddala, G. (1983) "Limited-Dependent and Qualitative Variables in Econometrics." Cambridge University Press: Cambridge.

Terza, J. (1985) "Ordered Probit: A Generalization." Communications in Statistics A. Theory and Methods 14: 111.

Williams, R. (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.

Winkelmann, R. and S. Boes (2006) "Analysis of Microdata." Springer: Berlin.

Also see

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

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