简体   繁体   中英

print() factor analysis output by sort in R

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM