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
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
StataStep 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.
// Rename variable
rename variable1 var1
rename variable2 var2
rename education1 edu1
...
StataIf 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
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)
StataStep 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.
keep if parcel1 parcel2 parcel3 edu1 edu2 gender
order parcel1 parcel2 parcel3 edu1 edu2 gender
stata2mplus using "name_for_mplus_file", missing(-9999) replace
StataStep 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) ;