------------------------------------------------------------------------------- help formvtobitMikkel Barslund (mikkelbarslund@gmail.com) -------------------------------------------------------------------------------

Multivariate tobit models estimated by maximum simulated likelihood

mvtobitequation1equation2 ...equationM[weight] [ifexp] [inrange] [,draws(#)anseed(#)beta0atrho0(matrix_name)prefix(string)burn(integer)randomhrandomshuffleadoonlyprimes(matrix_name)init(matrix_name)robustcluster(varname)constraints(numlist)level(#)maximize_options]where each equation is specified as

([eqname:]depvar[=] [varlist] [,noconstant])

by...:may be used withmvtobit; see help by.

pweights,fweights,aweights, andiweights are allowed; see help weights.

mvtobitis likely to produce a series of "(not concave)" statements in the beginning of the estimation process. It is recommended to specify thedifficultoption; see help maximize.

mvtobitshares the features of all estimation commands; see help est.

mvtobittyped without arguments redisplays the last estimates. Theleveloption may be used.

mvtobitrequiresmdrawsto be installed.

Note:much code in this routine is hacked from or inspired by Cappellari and Jenkins'mvprobitandmdrawscommands (see mvprobit and mdraws if installed). This in particular applies to the help and syntax handling files.mdrawsmust be installed formvtobitto work. Theshuffleoption requires installation of_gclsort. Both are available from SSC.

Using Stata version 9 or above?Take a look atcmpandRoodman (2009).

Description

mvtobitestimatesM-equation tobit models (including bivariate models), by the method of maximum simulated likelihood (MSL). Bivariate tobit models are estimated without simulation (see also Daniel Lawsons bitobit if installed). A limitation is that only models left-censored at zero can be estimated, i.e.y(i) = max[xb(i)+e(i),0]

where

eisM-variate normally distributed. Along with coefficients for each equationmvtobitestimates the cross-equation error-correlations and the variance of the error terms.

mvtobituses the Geweke-Hajivassiliou-Keane (GHK) simulator implemented inegenfunction mvnp (if installed) and the related mdraws function to draw random numbers for evaluation of the multi-dimensional Normal integrals in the likelihood function. For each observation, a likelihood contribution is calculated for each replication, and the simulated likelihood contribution is the average of the values derived from all the replications. The simulated likelihood function for the sample as a whole is then maximized using standard methods (mlin this case). For a brief description of the GHK smooth recursive simulator, see Greene (2003, 931-933), who also provides references to the literature. See Cappellari and Jenkins (2006) for detailed information on implemention of MSL in Stata and the workings of mvnp and mdraws. Also see Train (2003).Under standard conditions, the MSL estimator is consistent as the number of observations and the number of draws tend to infinity and is asymptotically equivalent to the true maximum likelihood estimator as the ratio of the square root of the sample size to the number of draws tends to zero. Thus, other things equal, the more draws, the better. In practice, however, it has been observed that a relatively small number of draws may work well for `smooth' likelihoods in the sense that the change in estimates as the number of draws is increased is negligible. It is the responsibility of the user to check that this is the case. Simulation variance may be reduced using antithetic draws in addition to the pseudo-random uniform variates used in the calculation of the simulated likelihood. The antithetic draws for a vector of pseudo-random uniform draws, z, are 1-z.

Estimation is numerically intensive and may be very slow if the data set is large, if the number of draws is large, or (especially) if the number of equations is large. Users may also need to

set matsizeandset memoryto values above the default ones. (See help for matsize and memory.) Use of theatrho0option may speed up convergence.Models for which the error variance-covarince matrix is close to not being positive definite are likely to be difficult to maximize. (The Cholesky factorization used by MSL requires positive definiteness.) In these cases,

mlmay report difficulties calculating numerical derivatives and a non-concave log likelihood. In difficult maximization problems, the message "Warning: cannot do Cholesky factorization of rho matrix" may appear between iterations. It may be safely ignored if the maximization proceeds to a satisfactory conclusion. Results may differ depending on the sort order of the data, because the sort order affects which values of the random variable(s) get allocated to which observation. (Note,mvtobitdoes not change the sort order of the data.) This potential problem is reduced by the larger the number of random draws that is used.

Options

beta0specifies that the estimates of the marginal tobit regressions (used to provide starting values) are reported.

atrho0(matrix_name)allows users to specify starting values for the standard deviations and correlations that are different from the default values (zeroes and ones, respectively). The matrixmatrix_namecontains values of the incidental parameters, /lnsigmaiand /atrhoij, for theMequations. Matrixmatrix_namemust have properly named column names. E.g., if a starting value in /atrho12is being set, one would first use the commandmatrixmatrix_name=(value), followed bymatrix colnamesmatrix_name= atrho12:_cons. Between 1 andM(M-1)/2 /atrhoij, and between 1 andM/lnsigmaistarting values may be specified, wherei= 1,...,M-1, andj>i. One likely source for a non-default starting value for atrhojiis the /athrho parameter estimate from a bivariate model corresponding to equationsiandjof the fullmvtobitmodel.

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

cluster(varname)specifies that the observations are independent across groups (clusters) but not necessarily within groups.varnamespecifies to which group each observation belongs; e.g.,cluster(personid)in data with repeated observations on individuals. See[U] 23.11 Obtaining robust variance estimates.cluster()can be used with pweights to produce estimates for unstratified cluster-sampled data. Specifyingcluster()impliesrobust.

noconstantsuppresses the constant term (intercept) in the relevant regression.

constraints(numlist)specifies the linear constraints to be applied during estimation. Constraints are defined using theconstraintcommand and are numbered; see help constraint. The default is to perform unconstrained estimation.

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

init(matrix_name)specifies a matrix of starting values. Options frommlinitcan be specified inside the parenthesis.

maximize_optionscontrol the maximization process; see help maximize. Use of them is likely to be rare.

See also mdraws. The explanations below are taken from theOptions related to random number generationmdrawshelpfile.

draws(#)specifies the number of pseudo-random standard uniform variates drawn when calculating the simulated likelihood. The default is 5. (See the discussion above concerning the choice of the number of draws.) If theanoption is specified, the total number of draws used in the calculations is twice the number specified indraws(#).

prefix(string)specifies the prefix common to the names of each of the created variables containing the random numbers used by theegenfunction mvnp(). The default prefix is X_MVT.

anspecifies that antithetic draws is to be used bymdraws. The antithetic draw for a vector of uniform draws, z, is 1-z.

randomspecifies that pseudorandom number sequences are created rather than Halton sequences (the default).

seed(#)specifies the initial value of the (pseudo-)random-number seed used by themdrawsfunction in the simulation process. The value should be an integer (the default value is 123456789). Warning: if the number of draws is 'small', changes in the seed value may lead to surprisingly large changes in estimates.seed(#)only has effect whenrandom,hrandomorshuffleare specified.

primes(matrix_name)specifies the name of an existing 1 xMorMx 1 matrix containingMdifferent prime numbers. If the option is not specified and as long asM<= 20, the program uses the firstMprime numbers in ascending order to generate the Halton sequences.

burn(#)specifies the number of initial sequence elements to drop for each equation when creating Halton sequences. The default is zero, and the option is ignored ifrandomis specified. Specification of this option reduces the correlation between the sequences in each dimension. Train (2003, 230) recommends that#should be at least as large as the prime number used to generate the sequences.

hrandomspecifies that each Halton sequence should be transformed by a random perturbation. For each dimension, a draw,u, is taken from the standard uniform distribution. Each sequence element hasuadded to it. If the sum is greater than 1, the element is transformed to the sum minus 1; otherwise, the element is transformed to the sum. See Train (2003, 234).

shufflespecifies that "shuffled" Halton draws should be created, as proposed by Hess and Polak (2003). Each Halton sequence in each dimension is randomly shuffled before sequence elements are allocated to observations. Philippe Van Kerm's program_gclsort, available via SSC, must be installed for this option to work.

adoonlyprevents using the Stata plugin to perform the intensive numerical calculations. Specifying this option results in slower-running code but may be necessary if the plugin is not available for your platform. This option is also useful if you like to do speed comparisons!

Saved resultsIn addition to the usual results saved after

ml,mvtobitalso saves the following:

e(draws)is the number of pseudo-random draws used when simulating probabilities. If theanoption is specified,e(draws)is twice the number specified indraws(#), rather than equal to the number.

e(an)is a local macro containing "yes" if theanoption is specified, and containing "no" otherwise.

e(seed)is the initial seed value used by the random-number generator.

e(neqs)is the number of equations in theM-equation model.

e(ll0)is the log likehood for the comparison model (the sum of the log likelihoods from the marginal univariate tobit models corresponding to each equation).

e(chi2_c)is chi-square test statistic for the likelihood ratio test of the multivariate tobit model against the comparison model.

e(nrho)is the number of estimated rhos (the degrees of freedom for the likelihood ratio test against the comparison model).

e(sigmai)is the estimate of the standard deviation of thei'th error term.

e(sesigmai)is the estimated standard error of sigmai.

e(rhoji)is the estimate of correlationjiin the variance-covariance matrix of cross-equation error terms.

e(serhoji)is the estimated standard error of correlationji.

e(rhsi)is the list of explanatory variables used in equationi. This list does not include the constant term, regardless of whether there is one is implied by equationi.

e(nrhsi)is the number of explanatory variables in equationi. This number includes the constant term if there is one implied by equationi.

Examples

. mvtobit (y1 = x11 x12) (y2 = x21 x22)

. mvtobit (y1 = x11 x12) (y2 = x21 x22) (y3 = x31 x32), dr(20) an

. constraint define 1 [y1]x11 = [y2]x22

. mvtobit (y1 = x11 x12) (y2 = x21 x22) (y3 = x31 x32), dr(20) anconstraints(1)

AuthorsMikkel Barslund, Danish Economic Councils, Denmark <mikkelbarslund@gmail.com>

AcknowledgmentsI have hacked a large amount of code from Cappellari and Jenkins

mvprobit(Cappellari and Jenkins, 2003). In addition most of the heavy work in this routine is performed by theirmdrawscommand. All errors are, of course, mine.

VersionVersion 1.0, August, 2007.

ReferencesCappellari, L. and S.P. Jenkins. 2003. Multivariate probit regression using simulated maximum likelihood.

The Stata Journal3(3): 278-294.Cappellari, L. and S.P. Jenkins. 2006. Calculation of multivariate normal probabilities by simulation, with applications to maximum simulated likelihood estimation.

The Stata Journal6(2): 156-189.Greene, W.H. 2003.

Econometric Analysis, 5th ed. Upper Saddle River, NJ: Prentice-Hall.Roodman, D. 2009. Estimating Fully Observed Recursive Mixed-Process Models with cmp. Working Paper 168. Center for Global Development.

Also seeManual:

[R] intreg,[R] tobitOnline: help for constraint, est, ereturn, postest, ml, tobit, and (if installed) bitobit, mdraws, mvnp.