Bivariate Probit Regression
Bivariate Probit Regression
com
biprobit — Bivariate probit regression
Syntax
Bivariate probit regression
biprobit depvar1 depvar2 indepvars if in weight , options
options Description
Model
noconstant suppress constant term
partial fit partial observability model
offset1(varname) offset variable for first equation
offset2(varname) offset variable for second equation
constraints(constraints) apply specified linear constraints
collinear keep collinear variables
SE/Robust
vce(vcetype) vcetype may be oim, robust, cluster clustvar, opg, bootstrap,
or jackknife
Reporting
level(#) set confidence level; default is level(95)
noskip perform likelihood-ratio test
nocnsreport do not display constraints
display options control column formats, row spacing, line width, display of omitted
variables and base and empty cells, and factor-variable labeling
Maximization
maximize options control the maximization process; seldom used
coeflegend display legend instead of statistics
1
2 biprobit — Bivariate probit regression
su options Description
Model
partial fit partial observability model
constraints(constraints) apply specified linear constraints
collinear keep collinear variables
SE/Robust
vce(vcetype) vcetype may be oim, robust, cluster clustvar, opg, bootstrap,
or jackknife
Reporting
level(#) set confidence level; default is level(95)
noskip perform likelihood-ratio test
nocnsreport do not display constraints
display options control column formats, row spacing, line width, display of omitted
variables and base and empty cells, and factor-variable labeling
Maximization
maximize options control the maximization process; seldom used
coeflegend display legend instead of statistics
indepvars may contain factor variables; see [U] 11.4.3 Factor variables.
depvar1 , depvar2 , indepvars, and depvar may contain time-series operators; see [U] 11.4.4 Time-series varlists.
bootstrap, by, fp, jackknife, rolling, statsby, and svy are allowed; see [U] 11.1.10 Prefix commands.
Weights are not allowed with the bootstrap prefix; see [R] bootstrap.
vce(), noskip, and weights are not allowed with the svy prefix; see [SVY] svy.
pweights, fweights, and iweights are allowed; see [U] 11.1.6 weight.
coeflegend does not appear in the dialog box.
See [U] 20 Estimation and postestimation commands for more capabilities of estimation commands.
Menu
biprobit
Statistics > Binary outcomes > Bivariate probit regression
Description
biprobit fits maximum-likelihood two-equation probit models—either a bivariate probit or a
seemingly unrelated probit (limited to two equations).
biprobit — Bivariate probit regression 3
Options
Model
noconstant; see [R] estimation options.
partial specifies that the partial observability model be fit. This particular model commonly has
poor convergence properties, so we recommend that you use the difficult option if you want
to fit the Poirier partial observability model; see [R] maximize.
This model computes the product of the two dependent variables so that you do not have to replace
each with the product.
offset1(varname), offset2(varname), constraints(constraints), collinear; see [R] estima-
tion options.
SE/Robust
vce(vcetype) specifies the type of standard error reported, which includes types that are derived from
asymptotic theory (oim, opg), that are robust to some kinds of misspecification (robust), that
allow for intragroup correlation (cluster clustvar), and that use bootstrap or jackknife methods
(bootstrap, jackknife); see [R] vce option.
Reporting
level(#); see [R] estimation options.
noskip specifies that a full maximum-likelihood model with only a constant for the regression equation
be fit. This model is not displayed but is used as the base model to compute a likelihood-ratio test
for the model test statistic displayed in the estimation header. By default, the overall model test
statistic is an asymptotically equivalent Wald test of all the parameters in the regression equation
being zero (except the constant). For many models, this option can substantially increase estimation
time.
nocnsreport; see [R] estimation options.
display options: noomitted, vsquish, noemptycells, baselevels, allbaselevels, nofvla-
bel, fvwrap(#), fvwrapon(style), cformat(% fmt), pformat(% fmt), sformat(% fmt), and
nolstretch; see [R] estimation options.
Maximization
maximize options: difficult, technique(algorithm spec), iterate(#), no log, trace,
gradient, showstep, hessian, showtolerance, tolerance(#), ltolerance(#),
nrtolerance(#), nonrtolerance, and from(init specs); see [R] maximize. These options are
seldom used.
Setting the optimization type to technique(bhhh) resets the default vcetype to vce(opg).
The following option is available with biprobit but is not shown in the dialog box:
coeflegend; see [R] estimation options.
Example 1
We use the data from Pindyck and Rubinfeld (1998, 332). In this dataset, the variables are
whether children attend private school (private), number of years the family has been at the present
residence (years), log of property tax (logptax), log of income (loginc), and whether the head of
the household voted for an increase in property taxes (vote).
We wish to model the bivariate outcomes of whether children attend private school and whether
the head of the household voted for an increase in property tax based on the other covariates.
. use http://www.stata-press.com/data/r13/school
. biprobit private vote years logptax loginc
Fitting comparison equation 1:
Iteration 0: log likelihood = -31.967097
Iteration 1: log likelihood = -31.452424
Iteration 2: log likelihood = -31.448958
Iteration 3: log likelihood = -31.448958
Fitting comparison equation 2:
Iteration 0: log likelihood = -63.036914
Iteration 1: log likelihood = -58.534843
Iteration 2: log likelihood = -58.497292
Iteration 3: log likelihood = -58.497288
Comparison: log likelihood = -89.946246
Fitting full model:
Iteration 0: log likelihood = -89.946246
Iteration 1: log likelihood = -89.258897
Iteration 2: log likelihood = -89.254028
Iteration 3: log likelihood = -89.254028
Bivariate probit regression Number of obs = 95
Wald chi2(6) = 9.59
Log likelihood = -89.254028 Prob > chi2 = 0.1431
private
years -.0118884 .0256778 -0.46 0.643 -.0622159 .0384391
logptax -.1066962 .6669782 -0.16 0.873 -1.413949 1.200557
loginc .3762037 .5306484 0.71 0.478 -.663848 1.416255
_cons -4.184694 4.837817 -0.86 0.387 -13.66664 5.297253
vote
years -.0168561 .0147834 -1.14 0.254 -.0458309 .0121188
logptax -1.288707 .5752266 -2.24 0.025 -2.416131 -.1612839
loginc .998286 .4403565 2.27 0.023 .1352031 1.861369
_cons -.5360573 4.068509 -0.13 0.895 -8.510188 7.438073
The output shows several iteration logs. The first iteration log corresponds to running the univariate
probit model for the first equation, and the second log corresponds to running the univariate probit
for the second model. If ρ = 0, the sum of the log likelihoods from these two models will equal the
log likelihood of the bivariate probit model; this sum is printed in the iteration log as the comparison
log likelihood.
biprobit — Bivariate probit regression 5
The final iteration log is for fitting the full bivariate probit model. A likelihood-ratio test of the
log likelihood for this model and the comparison log likelihood is presented at the end of the output.
If we had specified the vce(robust) option, this test would be presented as a Wald test instead of
as a likelihood-ratio test.
We could have fit the same model by using the seemingly unrelated syntax as
. biprobit (private=years logptax loginc) (vote=years logptax loginc)
Stored results
biprobit stores the following in e():
Scalars
e(N) number of observations
e(k) number of parameters
e(k eq) number of equations in e(b)
e(k aux) number of auxiliary parameters
e(k eq model) number of equations in overall model test
e(k dv) number of dependent variables
e(df m) model degrees of freedom
e(ll) log likelihood
e(ll 0) log likelihood, constant-only model (noskip only)
e(ll c) log likelihood, comparison model
e(N clust) number of clusters
e(chi2) χ2
e(chi2 c) χ2 for comparison test
e(p) significance
e(rho) ρ
e(rank) rank of e(V)
e(rank0) rank of e(V) for constant-only model
e(ic) number of iterations
e(rc) return code
e(converged) 1 if converged, 0 otherwise
Macros
e(cmd) biprobit
e(cmdline) command as typed
e(depvar) names of dependent variables
e(wtype) weight type
e(wexp) weight expression
e(title) title in estimation output
e(clustvar) name of cluster variable
e(offset1) offset for first equation
e(offset2) offset for second equation
e(chi2type) Wald or LR; type of model χ2 test
e(chi2 ct) Wald or LR; type of model χ2 test corresponding to e(chi2 c)
e(vce) vcetype specified in vce()
e(vcetype) title used to label Std. Err.
e(opt) type of optimization
e(which) max or min; whether optimizer is to perform maximization or minimization
e(ml method) type of ml method
e(user) name of likelihood-evaluator program
e(technique) maximization technique
e(properties) b V
d(predict) program used to implement predict
e(asbalanced) factor variables fvset as asbalanced
e(asobserved) factor variables fvset as asobserved
6 biprobit — Bivariate probit regression
Matrices
e(b) coefficient vector
e(Cns) constraints matrix
e(ilog) iteration log (up to 20 iterations)
e(gradient) gradient vector
e(V) variance–covariance matrix of the estimators
e(V modelbased) model-based variance
Functions
e(sample) marks estimation sample
ξjβ = xj β + offsetβj
ξjγ = zj γ + offsetγj
1 if y1j 6= 0
n
q1j =
−1 otherwise
1 if y2j 6= 0
n
q2j =
−1 otherwise
ρ∗j = q1j q2j ρ
Xn
lnL = wj lnΦ2 q1j ξjβ , q2j ξjγ , ρ∗j
j=1
0
where Φ2 () is the cumulative bivariate normal distribution function (with mean [ 0 0 ] ) and wj is
an optional weight for observation j . This derivation assumes that
∗
y1j = xj β + 1j + offsetβj
∗
y2j = zj γ + 2j + offsetγj
E(1 ) = E(2 ) = 0
Var(1 ) = Var(2 ) = 1
Cov(1 , 2 ) = ρ
∗ ∗ ∗
where y1j and y2j are the unobserved latent variables; instead, we observe only yij = 1 if yij >0
and yij = 0 otherwise (for i = 1, 2).
In the maximum likelihood estimation, ρ is not directly estimated, but atanh ρ is
1 1+ρ
atanh ρ = ln
2 1−ρ
From the form of the likelihood, if ρ = 0, then the log likelihood for the bivariate probit models
is equal to the sum of the log likelihoods of the two univariate probit models. A likelihood-ratio test
may therefore be performed by comparing the likelihood of the full bivariate model with the sum of
the log likelihoods for the univariate probit models.
biprobit — Bivariate probit regression 7
This command supports the Huber/White/sandwich estimator of the variance and its clustered
version using vce(robust) and vce(cluster clustvar), respectively. See [P] robust, particularly
Maximum likelihood estimators and Methods and formulas.
biprobit also supports estimation with survey data. For details on VCEs with survey data, see
[SVY] variance estimation.
References
De Luca, G. 2008. SNP and SML estimation of univariate and bivariate binary-choice models. Stata Journal 8:
190–220.
Greene, W. H. 2012. Econometric Analysis. 7th ed. Upper Saddle River, NJ: Prentice Hall.
Hardin, J. W. 1996. sg61: Bivariate probit models. Stata Technical Bulletin 33: 15–20. Reprinted in Stata Technical
Bulletin Reprints, vol. 6, pp. 152–158. College Station, TX: Stata Press.
Heckman, J. 1979. Sample selection bias as a specification error. Econometrica 47: 153–161.
Lokshin, M., and Z. Sajaia. 2011. Impact of interventions on discrete outcomes: Maximum likelihood estimation of
the binary choice models with binary endogenous regressors. Stata Journal 11: 368–385.
Pindyck, R. S., and D. L. Rubinfeld. 1998. Econometric Models and Economic Forecasts. 4th ed. New York:
McGraw–Hill.
Poirier, D. J. 1980. Partial observability in bivariate probit models. Journal of Econometrics 12: 209–217.
Van de Ven, W. P. M. M., and B. M. S. Van Pragg. 1981. The demand for deductibles in private health insurance:
A probit model with sample selection. Journal of Econometrics 17: 229–252.
Also see
[R] biprobit postestimation — Postestimation tools for biprobit
[R] mprobit — Multinomial probit regression
[R] probit — Probit regression
[SVY] svy estimation — Estimation commands for survey data
[U] 20 Estimation and postestimation commands