I'm fairly new to coding in general and I mainly use both lavaan and Mplus for data analysis in social sciences. I am currently trying to test an SEM model in Mplus - one that I've successfully run in Lavaan. However, I must be doing something wrong - i.e., not testing the same model -, as I can't get the model to converge on Mplus. I do not understand why. Maybe someone here can give me a hand? I'm guessing maybe it is related to the missings or something of the kind. Please note that 3 variables have different names in lavaan - mplus:
- ltest.pr - ltestpr
- age.ccountry - agec
- HSES.index - HSES As Mplus doesn't accept . in variable names, these have also been replaced by _
Lavaan Code:
ordered.list<-c("cr2","cr3","cr4","cr5","cr6","lr1","lr2","lr4","lr5","lr6","lr7","lr8","er1","er2","er3","er4","er5","er6","er7","er8","er9","ela2","ela3","ela4","ela5","ela6","ela7","ela8","ela9","elt1","elt2","elt3","elt4","elt5","elt6","plr1","plr2","plr3","plr4","plr5","plr6","plr7","plr8")
model<- 'confidence=~cr2 + cr3 + cr4 + cr5 + cr6
st.enjoyment =~ lr1 + lr2 + lr4 + lr5 + lr6 + lr7 + lr8
engagement =~ er1 + er2 + er3 + er4 + er5 + er6 + er7 + er8 + er9
activities =~ ela2+ela3+ela4+ela5+ela6+ela7+ela8+ela9
tasks=~elt1+elt2+elt3+elt4+elt5+elt6
elt3~~elt4
competences=~a*activities+a*tasks
prt.enjoyment =~ plr3 + plr4 + plr5 + plr6 + plr7 + plr8
confidence ~ competences + ltest.pr + age.ccountry + + prt.enjoyment + ITSEX + HSES.index
st.enjoyment ~ competences + ltest.pr + age.ccountry + + prt.enjoyment + ITSEX + HSES.index
engagement ~ competences + ltest.pr + age.ccountry + + prt.enjoyment + ITSEX + HSES.index
competences ~ ITSEX + HSES.index
ltest.pr ~ ITSEX + HSES.index
age.ccountry ~ ITSEX + HSES.index
prt.enjoyment ~ ITSEX + HSES.index
competences ~~ prt.enjoyment
competences ~~ ltest.pr
competences ~~ age.ccountry
age.ccountry ~~ prt.enjoyment
age.ccountry ~~ ltest.pr
prt.enjoyment ~~ ltest.pr'
model_fit <- sem (model, data=dataset_min , ordered=ordered.list, estimator="WLSMV",missing="pairwise", cluster="IDSCHOOL")
summary(model_fit, fit.measures=T, standardized=T)
Mplus Code:
TITLE: mainmodel-individual
DATA: FILE = "dataset.min.mplus.dat";
VARIABLE:
names are IIDCNTRY IDPOP IDGRADER IDGRADE WAVE IDSCHOOL IDCLASS IDSTUD
ITSEX ITADMINI ITLANG_SA IDBOOK sex ltest_st ltestpr books HSESi bcountry
agec cr1 cr2 cr3 cr4 cr5 cr6 cr_index er1 er2 er3 er4 er5 er6 er7 er8 er9
er_index lr1 lr2 lr3 lr4 lr5 lr6 lr7 lr8 lr_index sb1 sb2 sb3 sb4 sb5 sb6
sb_index pb1 pb2 pb3 pb4 pb5 pb6 pb7 pb8 pb9 pb10 pb_index snr1 snr2 snr3
snr4 snr5 snr6 snr7 snr_index nsclass nsclass4 ns_langdif ns_readdif ela1
ela2 ela3 ela4 ela5 ela6 ela7 ela8 ela9 ela_index elt1 elt2 elt3 elt4 elt5
elt6 elt7 elt_index plr2 plr3 plr1 plr4 plr5 plr6 plr7 plr8 plr_index lbs_pt
lbs_cri lbs_ucr lbs_chi lbs_eng cr3_nr cr4_nr cr5_nr cr6_nr lr3_nr plr1_nr plr4_nr;
usevar = IDSTUD ltestpr HSESi ITSEX agec cr2 cr3 cr4
cr5 cr6 er1 er2 er3 er4 er5 er6 er7 er8 er9 lr1 lr2 lr4
lr5 lr6 lr7 lr8 ela1 ela2 ela3 ela4 ela5 ela6 ela7 ela8
ela9 elt1 elt2 elt3 elt4 elt5 elt6 plr3 plr4
plr5 plr6 plr7 plr8;
CATEGORICAL ARE cr2 cr3 cr4 cr5 cr6 lr1 lr2 lr4 lr5 lr6 lr7 lr8 er1 er2 er3 er4 er5 er6
er7 er8 er9 ela2 ela3 ela4 ela5 ela6 ela7 ela8 ela9 elt1 elt2 elt3 elt4 elt5 elt6
plr3 plr4 plr5 plr6 plr7 plr8;
CLUSTER IS IDSCHOOL;
IDVARIABLE = IDSTUD;
MISSING ARE ALL(99999);
ANALYSIS: TYPE IS COMPLEX;
ESTIMATOR IS WLSMV;
MODEL: conf by cr2 cr3 cr4 cr5 cr6;
stenj by lr1 lr2 lr4 lr5 lr6 lr7 lr8;
engag by er1 er2 er3 er4 er5 er6 er7 er8 er9;
activ by ela1 ela2 ela3 ela4 ela5 ela6 ela7 ela8 ela9;
tasks by elt1 elt2 elt3 elt4 elt5 elt6;
elt3 WITH elt4;
lcomp by activ*(1)
tasks*(1);
prtenj by plr3 plr4 plr5 plr6 plr7 plr8;
conf on lcomp ltestpr agec prtenj ITSEX HSESi;
stenj on lcomp ltestpr agec prtenj ITSEX HSESi;
engag on lcomp ltestpr agec prtenj ITSEX HSESi;
lcomp on ITSEX HSESi;
ltestpr on ITSEX HSESi;
agec on ITSEX HSESi;
prtenj on ITSEX HSESi;
lcomp WITH prtenj;
lcomp WITH ltestpr;
lcomp WITH agec;
agec WITH prtenj;
agec WITH ltestpr;
prtenj WITH ltestpr;
OUTPUT: SAMPSTAT STDYX TECH4 modindices(all);
I have looked into the dataset, but they are based on the same file except for the fact that the variable names changed due to Mplus limitations. I have tried the MplusAutomation package but find the same difficulties.