#load lavaan library(lavaan) #have a look at the data ?HolzingerSwineford1939 #specify the factor structure HS.model <- ' visual =~ x1 + x2 + x3 textual =~ x4 + x5 + x6 speed =~ x7 + x8 + x9 ' ########################################################################### #multiple groups tests begin# #semTools command for a series of multiple group models library(semTools) measurementInvariance(HS.model, data=HolzingerSwineford1939, group="school") #MODEL 1 configural model model1 <- cfa(HS.model, data=HolzingerSwineford1939, group="school") summary(model1,fit.measures=TRUE) ###MODEL 2 weak invariance model model2 <- cfa(HS.model, data=HolzingerSwineford1939, group="school", group.equal=c("loadings")) summary(model2,fit.measures=TRUE) #checking the significance of chi-square change in R, model 2 v.s model 1: anova(model2, model1) ###MODEL 3 strong invariance model model3 <- cfa(HS.model, data=HolzingerSwineford1939, group="school", group.equal=c("loadings", "intercepts")) summary(model3,fit.measures=TRUE) #checking the significance of chi-square change in R, model 3 v.s model 2: anova(model3, model2) #strong invariance model-check non-invariant using modification index modindices(model3) ###MODEL 3a strong invariance model-fit partial invariance mode model3a <- cfa(HS.model, data=HolzingerSwineford1939, group="school", group.equal=c("loadings", "intercepts"), group.partial=c("x3~1", "x7~1")) summary(model3a,fit.measures=TRUE) #checking the significance of chi-square change in R, model 3a v.s model 2: anova(model3a, model2) ###MODEL 4 strict invariances model4 <- cfa(HS.model, data=HolzingerSwineford1939, group="school", group.equal=c("loadings", "intercepts", "residuals"), group.partial=c("x3~1", "x7~1")) summary(model4,fit.measures=TRUE) #checking the significance of chi-square change in R, model 4 v.s model 3a: anova(model4, model3a) ###MODEL 5 variance and variance of latent factors model5 <- cfa(HS.model, data=HolzingerSwineford1939, group="school", group.equal=c("loadings", "intercepts", "residuals", "lv.variances", "lv.covariances"), group.partial=c("x3~1", "x7~1")) summary(model5,fit.measures=TRUE) modindices(model5) #checking the significance of chi-square change in R, model 5 v.s model 4: anova(model5, model4) ################################################################## #you can now try grouping variables sex or grade, just replace group="school" with group="sex" or group="grade" #More `group equality constraints' currently supported: #? "means": the intercepts/means of the latent variables #? "regressions": all regression coecients in the model