Practical Guide to Creating Factor Scores for CFA Models

cfa demonstration practice with scoa data jamovi n.w
1 / 6
Embed
Share

Learn how to create factor scores for Confirmatory Factor Analysis (CFA) models using various methods such as averaging, standardizing, weighting, regression, and Bartlett approach. Understand the steps to assess and analyze Checklist and SCoA data to develop factor score variables for path modeling.

  • Factor Scores
  • CFA Models
  • Measurement Modeling
  • Path Modeling

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. CFA Demonstration & practice with SCoA data (JAMOVI + lavaan) HSE Psychometric School August 2019 Prof. dr. Gavin T. L. Brown University of Auckland Ume University

  2. Assessment Checklist We haven t created a measurement model for the A_Check1 to A_Check12 variables What estimator should we use to look for factors? The published journal article says there are 2 factors So what do you have to do TODAY? 1. create measurement model CFA for Checklist 2. create factor score variables Then we ll merge with the SCoA model Goal Create data set in which there are factor scores for both Assessment Checklist and SCoA so we can run a path model

  3. Factor Score Steps Requires reducing latent structures (if any) to manifest variables (i.e., scale scores) Confirm CFA structure preferably Create scores Multiple methods 1: average of raw score for each item belonging to the factor 2: standardize all items (Mean = 0, SD=1) before average score for items in a factor 3: weight the score by the factor loading, then average 4: least squares regression approach using an underlying model to predict an optimal factor score (R: option scores = regression ) 5: Bartlett approach multiplying the row vector of observed variables, by the inverse of the diagonal matrix of variances of the unique factor scores, and the factor pattern matrix of loadings (lavaan option: scores = Bartlett )

  4. Assess Checklist CFA #to create 2factor check list model AssesCheck.model <- ' Check1 =~ A_Check1 + A_Check5 + A_Check6 + A_Check7 + A_Check10 Check2 =~ A_Check2 + A_Check3 + A_Check4 + A_Check8 + A_Check9 + A_Check11 + A_Check12 ' #do bifactor CFA analysis of model AssessCheck_fit <- cfa (AssesCheck.model, data=NZSCoAVI, ordered=c("A_Check1", "A_Check5", "A_Check6", "A_Check7", "A_Check10", "A_Check2", "A_Check3", "A_Check4", "A_Check8", "A_Check9", "A_Check11", "A_Check12"), estimator="wls") #get results of bifactor cfa summary (AssessCheck_fit, standardized=TRUE) fitmeasures(AssessCheck_fit) #to create Bartlett factor scores fit.AC1 <- sem('Check1 =~ A_Check1 + A_Check5 + A_Check6 + A_Check7 + A_Check10', data = NZSCoAVI) fsAC1 <- lavPredict(fit.AC1, fsm = TRUE, method = "Bartlett") fit.AC2 <- sem('Check2 =~ A_Check2 + A_Check3 + A_Check4 + A_Check8 + A_Check9 + A_Check11 + A_Check12', data = NZSCoAVI) fsAC2 <- lavPredict(fit.AC2, fsm = TRUE, method = "Bartlett") #create a data frame with the 5 bartlett factor scores FS.Data <- data.frame(Test = fsAC1, Interactive = fsAC2) round(FS.Data, digits = 2)

  5. Factor score result (SCoA bifactor) > round(FS.Data, digits = 2) person BD 1 0.41 2 0.28 3 0.78 4 0.21 5 1.81 6 -1.04 7 -0.94 8 0.25 9 0.15 10 -0.96 11 0.73 12 2.54 >head(FS.Data) Persons 1 2 3 4 5 6 NB command only shows first 6 rows IMP IMP.1 EXTRNL general BD IMP 0.670441 -1.73075 -1.66868 0.058995 0.795211 0.840879 IMP.1 0.670441 -1.73075 -1.66868 0.058995 0.795211 0.840879 EXTRNL 1.155231 -1.18243 -1.03649 -1.11935 1.017361 1.045411 general -0.31462 0.545895 0.564346 0.116235 -0.35192 -0.51652 0.67 -1.73 -1.67 0.06 0.8 0.84 0.89 -0.32 0.08 -0.4 1.21 0.78 0.67 -1.73 -1.67 0.06 0.8 0.84 0.89 -0.32 0.08 -0.4 1.21 0.78 1.16 -1.18 -1.04 -1.12 1.02 1.05 0.58 0.21 -0.88 -1.25 0.79 1.39 -0.31 0.55 0.56 0.12 -0.35 -0.52 -0.3 -0.01 0.12 0.11 -0.31 -0.42 0.413376 0.278377 0.776325 0.214549 1.812219 -1.03515 NB stops at Row 200 with info message [ reached 'max' / getOption("max.print") -- omitted 417 r

  6. SCoA bifactor Bartlett Factor score syntax #create bifactor 4 main factors 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 fsIMP <- lavPredict(fit.IMP, fsm = TRUE, method = "Bartlett") fit.AFFECT <- sem('AFFECT =~ ce1 + ce2 + ce3 + ce4 + ce5 + ce6 + pe1 + pe2', data = NZSCoAVI) fsAFFECT <- lavPredict(fit.AFFECT, fsm = TRUE, method = "Bartlett") fit.EXTRNL<- sem('EXTRNL =~ sq1 + sq2 + sf1 + sf2 + sf3', data = NZSCoAVI) fsEXTRNL <- lavPredict(fit.EXTRNL, fsm = TRUE, method = "Bartlett") fit.general <- sem('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', data = NZSCoAVI) fsgeneral <- lavPredict(fit.general, fsm = TRUE, method = "Bartlett") # specific factors are uncorrelated with general factor general ~~ 0*BD + 0*IMP + 0*AFFECT + 0*EXTRNL ' #note import data from csv not SAV because of haven problem #to create Bartlett factor scores fit.BD <- sem('BD =~ bd1 + bd2 + bd3 + bd4 + bd5 + ig1 + ig2 + ig3', data = NZSCoAVI) fsBD <- lavPredict(fit.BD, fsm = TRUE, method = "Bartlett") fit.IMP <- sem('IMP =~ si1 + si2 + si3 + si4 + si5 + ti1 + ti2 + ti3 + ti4 + ti5 + ti6', data = NZSCoAVI) #Create a data frame that has the 5 Bartlett factor Scores FS.Data <- data.frame(BD = fsBD, IMP = fsIMP, AFFECT=fsIMP, EXTRNL=fsEXTRNL, general=fsgeneral) #round values to 2 decimal places round(FS.Data, digits = 2)

Related


More Related Content