Message/Author 

Sanjoy posted on Tuesday, May 31, 2005  2:05 am



Dear Professor/s ... I ran Bivariate probit model using MPlus, SAS (Proc QLIM) and STATA (using “biprobit” command) … SAS and STATA results are matching with each other for every variables (in fact up to 5 point after decimal) ... however they are not matching with MPlus, discrepancies are pretty huge ...it really makes me worried (everything is different, coefficient, SE and hence the following, though the overall significance of parameters remain almost same) Now in MPlus I have run my model using both ML and WLSMV, even the result differences among them are noticeable too ... below is my code ANALYSIS: ESTIMATOR=ML; !(I have checked with MLR as well) MODEL: Y1 on X1 X2 X3 X4; Y2 on X1 X2 X3 X4; Q1. Now ...Under ML I have put the restriction Y1 with Y2 in MODEL command ...it does not work ... How could I be sure that MPlus is assuming Y1 and Y2 are related or not. under WLSMV it gives us “rho” but that is also pretty low (0.784 in Mplus vs. 0.816 in SAS and STATA result) Q2. Do you think I should write something else to make it Bivariate in the above code? ...I need to make it sure that I am writing MPlus syntax correctly Q3. For sure, I know SAS and STATA use Maximum Likelihood estimation ...I was expecting MPlus’s ML result to match with them ...what could be the reasons behind such discrepancies Thanks and regards NB: I check with single equation probit using MPlus and SAS, the discrepancies are there too … I can send you the print out of all these results 

bmuthen posted on Tuesday, May 31, 2005  2:22 am



With ML and categorical outcomes, Mplus uses logit, not probit. For approximate logitprobit conversions, see e.g. Maddala's book on our web site. Probit is only available with the Mplus WLS estimators. With categorical outcomes and ML, correlated residuals is not available because Mplus works with a conditional independence assumption to reduce the computational burden for general models (with more than 2 dependent variables). If you want a residual covariance you can create a factor that influences each outcome. For single equation probit, Mplus does produce ML estimates (see the "sample statistics")  given that you say that you see discrepancies here as well, I suspect you are not analyzing the same data in the different programs, for example you may handle missing data differently. 

Sanjoy posted on Tuesday, May 31, 2005  9:52 am



Thank You Professor ... but a little confusion still remains about the Threshold Assumption of MPlus I took MPlus example3.4 (page23) and run it as Logit/ML Q1. Using the same data set (ex3.4.dat) I run Logit (error following Logistic Distribution)in STATA and SAS ...as you have said, this time every thing is exactly same with MPlus, BUT with one difference ... Thresholds (MPlus) U1$1 1.796 0.241 7.462 While in STATA/SAS I got constant 1.795903 .2406734 7.46 it looks the difference lies in the way we assume threshold ...I'm wondering what is that! Q2. thanks ...now I got the ML and single equation Probit thing in MPlus ... I use "sampstat", and in the output under "estimated sample statistics" I got the value which is exactly matching with STATA result ... however, here as well, the constant sign is different again! thanks and regards Thanks and regards 


The constant in SAS is an intercept. Intercepts and thresholds differ only in sign. 

Sanjoy posted on Tuesday, May 31, 2005  12:53 pm



Thanks madam, now things are clear. 


I am also trying to run bivariate probit model in Mplus, trying to get the same results as produced using stata's "biprobit". As suggested above, I introduced factors in the following partial codes; Variables: categoricals are y1 y2; Analysis: TYPE=random; Algorithm=integration; ESTIMATOR=WLSMV; LINK=PROBIT; Model: f1 by y1; f2 by y2; y1 ON x1 x2 f1; y2 ON x1 x2 f2; f1 with f2; Q1:The coefficient and standard errors came very close, but the estimate for f1 with f2, by which I meant to capture residual covariance, is .000. Is this forced to be zero, or is is a result of the analysis? Is this the correct way to get residual covariance? Q2:Though the coefficient estimates come very close to the results by stata's biprobit, they aren't identical. Is there any error or lack of command that might have produced this descrepancy? Any comments will be greatly appreciated!!! 


You regress y1 and y2 on themselves when you regress them on f1 and f2 as your input shows  that is not what you want. You should simply say y1 ON x1 x2; y2 ON x1 x2; I don't know what you mean by "as suggested above" as a motivation for bringing in factors. If you want intercepts instead of thresholds you simply change the threshold signs. 


I meant your comments on May 30 where you say "if you want a residual covariance you can create a factor that influences each outcome." How should I exactly create a factor to capture residual covariance and incorporate it in the codes; y1 ON x1 x2; y2 ON x1 x2; Thank you! 


I see. With the WLSMV estimator you get probit by default and also access to residual covariance parameters. This is obtained if you delete your 3 statements Algorithm=integration; ESTIMATOR=WLSMV; LINK=PROBIT; Actually, algo=integration and estimator=wlsmv is contradictory (I assume the program ignores the former statement). It is with ML that you don't have access to residual covariance. 


Thank you for your response, but I am confused still. So the codes will be; Analysis: TYPE=random; Model: y1 ON x1 x2; y2 ON x1 x2; But it goes further away from the stata's biprobit results and still I am not sure where to look for residual covariance... Thank you. 


You do not need TYPE=RANDOM; Please delete that. To specify a residual covariance, say y1 WITH y2; If you have categorical outcomes and specify nothing in the ANALYSIS command, you will obtain weighted least squares. In summary, with maximum likelihood and categorical outcomes, residual covariances cannot be specified using the WITH option. They must be specified by putting a factor behind the two variables to be covaried as shown in Example 7.16. Each residual covariance results in one dimension of integration. The WITH option is used with weighted least squares to specify a residual covariance. 


I came up with the following set of partial codes; Analysis: type = meanstructure; model: Y1 on X1 X2; Y2 on X1 X2; f1 by Y1; f2 by Y2; f1 with f2; [Y1$1*5 Y2$1*5]; f1@1; f2@1; This way, I am able to get the residual covariance but the coefficient estimates in this multiequation modeling are the same as running univariate probit models. However, stata uses the biprobit (or multivariae probit) disribution and not just correlate the residuals, thus produces coefficient estimates that are different from single probits, and these coefficients are supposedly efficient since they take residual covariance into account when estimating the coefficients. So my question would be: does mplus do stata's biprobit?? Thanks!! 


I would need to see the Stata output and the Mplus input, data, and output to answer this. It looks like you set the model up properly. Please send them and your license number to support@statmodel.com. 

Back to top 