[Stata] How to convert stata dta file to Mplus dat file: using stata2mplus

Stata has features for analyzing Structural Equation Models (e.g., sem, gsem, or sembuilder), but some advanced analyses are only available in Mplus. If you prefer data cleaning and descriptive analysis in Stata and SEM analysis in Mplus, you might want to convert your Stata data dta files to Mplus data dat files. For this purpose, UCLA IDRE has developed a package called stata2mplus. Here is a quick how-to guide.

Step 1. Install the package

Stata
net install stata2mplus, from(https://stats.oarc.ucla.edu/stat/stata/ado/analysis)
// stata2mplus is not on ssc install, so you need to search using net install

* alternatively, you can search and then install on the pop-up screen
search stata2mplus 
Stata

Step 2. Data preparation

One thing to keep in mind when preparing Mplus data is that variable names should not be longer than 8 characters. So you would need to keep your variable names short. The first step is to use rename to shorten the variable names.

Stata
// Rename variable 
rename variable1 var1
rename variable2 var2
rename education1 edu1 
... 
Stata

If you’re going to do item parceling, I recommend going through factor analysis and item parceling in this step. Here is an example. For more information on item parceling, you can refer to the method articles like this: Item Parceling in Structural Equation Modeling: A Primer

Stata
factor variable1 variable2 variable3 variable4 variable5 variable6 variable7 variable8 variable9 variable10, ml factor(1)

// After running factor analysis, assign the items to parcel 
// according the the order of factor loading. 
gen parcel1 = (variable3+variable5+variable6) 
gen parcel2 = (variable1+variable7+variable8) 
gen parcel3 = (variable2+variable4+variable9+variable10) 
Stata

Step 3. Export Data in Stata

The last step is to extract the data into a Mplus dat file, where I keep only the variables I want to use in the SEM model (keep if) and then I sort the order of the variables again (order). The reason for doing this is to avoid errors in ordering the variables in Mplus, as this can lead to errors. In Stata, the variables are not stored in the order you leave them in the keep if, so you need to make sure they are stored in exactly that order with order command. The final step is to export the data via stata2mplus. By default, missing is set to -9999, but you can change this number to whatever you like.

Stata
keep if parcel1 parcel2 parcel3 edu1 edu2 gender 
order parcel1 parcel2 parcel3 edu1 edu2 gender
stata2mplus using "name_for_mplus_file", missing(-9999) replace
Stata

Step 4. Import Data in Mplus

To import this into Mplus, follow the steps below. You need to ensure that 1) the order is the same and 2) the missing values’ numbers are the same as you extracted in Stata.

Data:
  File is name_for_mplus_file.dat ;
Variable:
  Names are 
  parcel1 parcel2 parcel3 edu1 edu2 gender;
  USEVARIABLES ARE 
     parcel1 parcel2 parcel3 edu1 edu2 gender;
  Missing are all (-9999) ; 
  • February 22, 2023