FIML-based Exploratory Factor Analysis (EFA)
https://online.stat.psu.edu/stat505/lesson/12
https://quantdev.ssri.psu.edu/tutorials/structural-equation-modeling-r-using-lavaan
https://github.com/maugavilla/well_hello_stats/blob/main/tutorials/13_EFA_cont.md
# https://bookdown.org/yihui/rmarkdown-cookbook/
#Compute EFA
fit.efa <- efa(spring2023,
ov.names=paste0(c("KD2_1","KD2_2","KD2_3","KD2_4","KD2_5")),
nfactors = 1:2,
rotation = "geomin",
baseline = T,
missing="fiml")
fit_ind <- NULL
for(j in 1:2){
temp <- c(nfac = nrow(lavInspect(fit.efa[[j]],"cor.lv")),
fitMeasures(fit.efa[[j]], c("npar","chisq","df","pvalue","cfi","tli","srmr","rmsea","aic","bic")),
moreFitIndices(fit.efa[[j]], "gammaHat"))
fit_ind <- do.call(rbind, list(fit_ind, temp))
}
fit_ind <- as.data.frame(fit_ind)
round(fit_ind, 4)
summary(fit.efa[[2]], nd = 2L, cutoff = 0.3, dot.cutoff = 0.05)
round(fit_ind[2,], 3)
#Compute reliability, alpha value
library(dplyr)
Resourceful <- spring2023 %>% select (KD2_1,KD2_2,KD2_3,KD2_4,KD2_5)
#install.packages("ltm")
#library(ltm)
ltm::cronbach.alpha(Resourceful, standardized = TRUE, CI=TRUE, na.rm=TRUE)
#Compute composite score
spring2023 = mutate(spring2023,belonging_social_expect=(Q2_2+Q2_4+Q2_6)/3,
academic_expect=(Q2_1+Q2_5+Q2_7+Q2_8)/4)
#Correlation matrix
columns <- c("belonging_social_expect","academic_expect")
cor_matrix <- cor(spring2023[,columns],use="pairwise.complete.obs")
cor_matrix
abs(cor_matrix) >0.5