df.fa
is the result of psych::fa(bfi[1:25],5,rotate = 'oblimin',fm='minres',cor = 'cor')
,
I print(df.fa$loadings,sort=TRUE)
,then:
Loadings:
MR2 MR1 MR3 MR5 MR4
N1 0.815 0.103 -0.111
N2 0.777
N3 0.706 -0.100
E1 -0.557 0.106 -0.103
E2 -0.676
E4 0.591 0.287
C1 0.546 0.148
C2 0.149 0.666
C3 0.567
C4 0.174 -0.614
C5 0.189 -0.142 -0.553
A2 0.640
A3 0.116 0.660
A5 -0.112 0.233 0.532
You can find N2
only has number under one factor(MR2), but why does N3
has number in 2 factors, even N1
has number in 3 factors.
How to explain it?
I would consider calculating absolute fit statistics to determine the goodness of fit for your current model. Then you could drop some of the items above that have low factor loadings and create a new model via Confirmatory Factor Analysis. The following three statistics are generally recommended:
Chi Square; recommended to be non-significant
Tucker Lewis Index (TLI) recommended to be 0.9 or greater
Root Mean Square Error of Approximation (RMSEA); recommended to be less than 0.005
EFA_model <- fa(bfi[1:25], nfactors = 5)
EFA_model$TLI
EFA_model$RMSEA
EFA_model$chi
You can then drop the items from your EFA_model$loadings
that have low factor loadings scores and build a CFA model the cfa()
function.
Run the same assessment on the CFA model's absolute fit statistics as above, for example, CFA_model$TLI
and you can also compare relative fit statistics between your EFA and CFA models using BIC (Bayesian Information Criterion) with EFA_model$BIC
and CFA_model$BIC
and the model with lower BIC is preferred.
Maybe this is formatting question, not a statistical one. By default, low factor loadings are not printed. The line below will remove your "don't print below this" cutoff (it is.1 by default):
print(df.fa$loadings,sort=TRUE, cutoff = 0)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.