Everything works just fine when I have 4 variables or more. But I thought the minimum for a CFA or EFA was 3 variables. When I run the code, it gives me 0's for all the parameters that estimate if it's a good fit or not.
For this purpose, i will use the USArrests
database.
library(lavaan)
d<- USArrests
abc <- 'abc =~ Murder + Assault + Rape'
fit <- lavaan::cfa(abc, data=d, missing = "FIML", estimator = "MLR")
summary(fit, fit.measures=TRUE)
This is where I'm running into an issue. If I add another variable to the abc
model like UrbanPop
, everything works and I will be able to get the CFI, RMSEA and so on. But sometimes I don't have a fourth one and still want to see if they're a good fit.
Results for 4 variables
Model Test User Model:
Standard Robust
Comparative Fit Index (CFI) 0.910 0.923
RMSEA 0.281 0.221
SRMR 0.073 0.073
And every time I use 3 variables regardless of the dataframe I get this :
Model Test Baseline Model:
Comparative Fit Index (CFI) 1.000 1.000
RMSEA 0.000 0.000
SRMR 0.000 0.000
Thank you!
I thought the minimum for a CFA or EFA was 3 variables. When I run the code, it gives me 0's for all the parameters that estimate if it's a good fit
A 1-factor CFA with 3 indicators is just-identified (df = 0) when no errors correlate. If you have df = 0, then your model provides no opportunity for the data to falsify the model. The fit statistic is thus 0 because fit is (arbitrarily) perfect in a just-identified model. Introductory SEM / CFA textbooks discuss identification and fit in more detail, e.g.,
Brown, T. A. (2015). Confirmatory factor analysis for applied research. Guilford.