#SCoA bifactor #install required libraries library(lavaan) library(semPlot) #to create bifactor 8 factor SCoA model SCoA6bf.model <- ' BD =~ bd1 + bd2 + bd3 + bd4 + bd5 IG =~ ig1 + ig2 + ig3 SI =~ si1 + si2 + si3 + si4 + si5 TI =~ ti1 + ti2 + ti3 + ti4 + ti5 + ti6 CE =~ ce1 + ce2 + ce3 + ce4 + ce5 + ce6 PE =~ pe1 + pe2 SQ =~ sq1 + sq2 SF =~ sf1 + sf2 + sf3 general =~ bd1 + bd2 + bd3 + bd4 + bd5 + ce1 + ce2 + ce3 + ce4 + ce5 + ce6 + ig1 + ig2 + ig3 + pe1 + pe2 + sf1 + sf2 + sf3 + sf4 + si1 + si2 + si3 + si4 + si5 + sq1 + sq2 + ti1 + ti2 + ti3 + ti4 + ti5 + ti6 # specific factors are uncorrelated with general factor general ~~ 0*BD + 0*CE + 0*IG + 0*PE + 0* SF + 0*SI + 0*SQ +0*TI ' #to create bifactor 4 main factors (join IG, BD) SCoA model SCoA6bf3.model <- ' BD =~ bd1 + bd2 + bd3 + bd4 + bd5 + ig1 + ig2 + ig3 IMP =~ si1 + si2 + si3 + si4 + si5 + ti1 + ti2 + ti3 + ti4 + ti5 + ti6 AFFECT =~ ce1 + ce2 + ce3 + ce4 + ce5 + ce6 + pe1 + pe2 EXTRNL =~ sq1 + sq2 + sf1 + sf2 + sf3 general =~ bd1 + bd2 + bd3 + bd4 + bd5 + ce1 + ce2 + ce3 + ce4 + ce5 + ce6 + ig1 + ig2 + ig3 + pe1 + pe2 + sf1 + sf2 + sf3 + sf4 + si1 + si2 + si3 + si4 + si5 + sq1 + sq2 + ti1 + ti2 + ti3 + ti4 + ti5 + ti6 # specific factors are uncorrelated with general factor general ~~ 0*BD + 0*IMP + 0*AFFECT + 0*EXTRNL ' #do bifactor CFA analysis of model SCoAbf3_fit <- cfa (SCoA6bf3.model, data=NZSCoAVI, control=list(iter.max=100000)) #get results of bifactor cfa summary (SCoAbf3_fit, standardized=TRUE) fitmeasures(SCoAbf3_fit) #to get gamma hat fit index library(semTools) moreFitIndices(SCoAbf3_fit) #to get x2/df ratio and p-value-thanks to Terry Jorgensen UvA (amsterdam) fm <- fitMeasures(SCoAbf3_fit) fm[["chisq"]] / fm[["df"]] fm["pvalue"] #to get conventional correlated factors diagram semPaths(SCoAbf3_fit, intercept = FALSE, whatLabel = "std", residuals = FALSE, exoCov = TRUE) #this design separates sempaths properly semPaths(SCoAbf3_fit, "model", "std", bifactor = "g", layout = "tree2", residuals = FALSE, exoCov = FALSE) #to get lavaanplot style chart library(LavaanPlot) lavaanPlot(model = SCoAbf3_fit, node_options = list(shape = "box", fontname = "Helvetica"), edge_options = list(color = "grey"), coefs = TRUE, covs = TRUE, stars = TRUE)