library(mosaic)
library(ggplot2)
library(dplyr)
library(psych)
#install.packages("lavaan")
library(lavaan)

#install.packages("semPlot")
library(semPlot)

Confirmatory Factor Analysis

Now, instead of taking a shot in the dark about the factor structure, we are going in with a clear idea about which items we things load on which factors. Our goal is to test how well our model of the factor structure actually fits the data.

First we specify the model.

bf_model <- ' agreeable =~ A1 + A2 + A3 + A4 + A5
              conscient =~ C1 + C2 + C3 + C4 + C5
              extrov =~ E1 + E2 + E3 + E4 + E5
              neurot =~ N1 + N2 + N3 + N4 + N5
              openness =~ O1 + O2 + O3 + O4 + O5 '

Diagram

Plot the model to make sure it is what you want. Here we are using the semPaths() and semPlotModel() from the semPlot package. The rotation = 2 option forces the exogenous variables to be on the left side.

semPaths(semPlotModel(bf_model), rotation = 2)

Output

Then fit the CFA model with cfa() and ask for the relevant output.

bf_fit <- cfa(bf_model, data = bfi)

summary(bf_fit, fit.measures = TRUE, rsq=TRUE)
## lavaan (0.5-23.1097) converged normally after  55 iterations
## 
##                                                   Used       Total
##   Number of observations                          2436        2800
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic             4165.467
##   Degrees of freedom                               265
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            18222.116
##   Degrees of freedom                               300
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.782
##   Tucker-Lewis Index (TLI)                       0.754
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -99840.238
##   Loglikelihood unrestricted model (H1)     -97757.504
## 
##   Number of free parameters                         60
##   Akaike (AIC)                              199800.476
##   Bayesian (BIC)                            200148.363
##   Sample-size adjusted Bayesian (BIC)       199957.729
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.078
##   90 Percent Confidence Interval          0.076  0.080
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.075
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   agreeable =~                                        
##     A1                1.000                           
##     A2               -1.579    0.108  -14.650    0.000
##     A3               -2.030    0.134  -15.093    0.000
##     A4               -1.564    0.115  -13.616    0.000
##     A5               -1.804    0.121  -14.852    0.000
##   conscient =~                                        
##     C1                1.000                           
##     C2                1.148    0.057   20.152    0.000
##     C3                1.036    0.054   19.172    0.000
##     C4               -1.421    0.065  -21.924    0.000
##     C5               -1.489    0.072  -20.694    0.000
##   extrov =~                                           
##     E1                1.000                           
##     E2                1.226    0.051   23.899    0.000
##     E3               -0.921    0.041  -22.431    0.000
##     E4               -1.121    0.047  -23.977    0.000
##     E5               -0.808    0.039  -20.648    0.000
##   neurot =~                                           
##     N1                1.000                           
##     N2                0.947    0.024   39.899    0.000
##     N3                0.884    0.025   35.919    0.000
##     N4                0.692    0.025   27.753    0.000
##     N5                0.628    0.026   24.027    0.000
##   openness =~                                         
##     O1                1.000                           
##     O2               -1.020    0.068  -14.962    0.000
##     O3                1.373    0.072   18.942    0.000
##     O4                0.437    0.048    9.160    0.000
##     O5               -0.960    0.060  -16.056    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   agreeable ~~                                        
##     conscient        -0.110    0.012   -9.254    0.000
##     extrov            0.304    0.025   12.293    0.000
##     neurot            0.141    0.018    7.712    0.000
##     openness         -0.093    0.011   -8.446    0.000
##   conscient ~~                                        
##     extrov           -0.224    0.020  -11.121    0.000
##     neurot           -0.250    0.025  -10.117    0.000
##     openness          0.130    0.014    9.190    0.000
##   extrov ~~                                           
##     neurot            0.292    0.032    9.131    0.000
##     openness         -0.265    0.021  -12.347    0.000
##   neurot ~~                                           
##     openness         -0.093    0.022   -4.138    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .A1                1.745    0.052   33.725    0.000
##    .A2                0.807    0.028   28.396    0.000
##    .A3                0.754    0.032   23.339    0.000
##    .A4                1.632    0.051   31.796    0.000
##    .A5                0.852    0.032   26.800    0.000
##    .C1                1.063    0.035   30.073    0.000
##    .C2                1.130    0.039   28.890    0.000
##    .C3                1.170    0.039   30.194    0.000
##    .C4                0.960    0.040   24.016    0.000
##    .C5                1.640    0.059   27.907    0.000
##    .E1                1.814    0.058   31.047    0.000
##    .E2                1.332    0.049   26.928    0.000
##    .E3                1.108    0.038   29.522    0.000
##    .E4                1.088    0.041   26.732    0.000
##    .E5                1.251    0.040   31.258    0.000
##    .N1                0.793    0.037   21.575    0.000
##    .N2                0.836    0.036   23.458    0.000
##    .N3                1.222    0.043   28.271    0.000
##    .N4                1.654    0.052   31.977    0.000
##    .N5                1.969    0.060   32.889    0.000
##    .O1                0.865    0.032   27.216    0.000
##    .O2                1.990    0.063   31.618    0.000
##    .O3                0.691    0.039   17.717    0.000
##    .O4                1.346    0.040   34.036    0.000
##    .O5                1.380    0.045   30.662    0.000
##     agreeable         0.234    0.030    7.839    0.000
##     conscient         0.463    0.036   12.810    0.000
##     extrov            0.846    0.062   13.693    0.000
##     neurot            1.689    0.073   23.034    0.000
##     openness          0.404    0.033   12.156    0.000
## 
## R-Square:
##                    Estimate
##     A1                0.118
##     A2                0.420
##     A3                0.562
##     A4                0.260
##     A5                0.472
##     C1                0.303
##     C2                0.350
##     C3                0.298
##     C4                0.493
##     C5                0.385
##     E1                0.318
##     E2                0.488
##     E3                0.393
##     E4                0.494
##     E5                0.306
##     N1                0.680
##     N2                0.644
##     N3                0.519
##     N4                0.328
##     N5                0.253
##     O1                0.318
##     O2                0.174
##     O3                0.524
##     O4                0.054
##     O5                0.212
inspect(bf_fit, what = "std") #for standardized estimates
## $lambda
##    agrebl cnscnt extrov neurot opnnss
## A1  0.344  0.000  0.000  0.000  0.000
## A2 -0.648  0.000  0.000  0.000  0.000
## A3 -0.749  0.000  0.000  0.000  0.000
## A4 -0.510  0.000  0.000  0.000  0.000
## A5 -0.687  0.000  0.000  0.000  0.000
## C1  0.000  0.551  0.000  0.000  0.000
## C2  0.000  0.592  0.000  0.000  0.000
## C3  0.000  0.546  0.000  0.000  0.000
## C4  0.000 -0.702  0.000  0.000  0.000
## C5  0.000 -0.620  0.000  0.000  0.000
## E1  0.000  0.000  0.564  0.000  0.000
## E2  0.000  0.000  0.699  0.000  0.000
## E3  0.000  0.000 -0.627  0.000  0.000
## E4  0.000  0.000 -0.703  0.000  0.000
## E5  0.000  0.000 -0.553  0.000  0.000
## N1  0.000  0.000  0.000  0.825  0.000
## N2  0.000  0.000  0.000  0.803  0.000
## N3  0.000  0.000  0.000  0.721  0.000
## N4  0.000  0.000  0.000  0.573  0.000
## N5  0.000  0.000  0.000  0.503  0.000
## O1  0.000  0.000  0.000  0.000  0.564
## O2  0.000  0.000  0.000  0.000 -0.418
## O3  0.000  0.000  0.000  0.000  0.724
## O4  0.000  0.000  0.000  0.000  0.233
## O5  0.000  0.000  0.000  0.000 -0.461
## 
## $theta
##    A1    A2    A3    A4    A5    C1    C2    C3    C4    C5    E1    E2   
## A1 0.882                                                                  
## A2 0.000 0.580                                                            
## A3 0.000 0.000 0.438                                                      
## A4 0.000 0.000 0.000 0.740                                                
## A5 0.000 0.000 0.000 0.000 0.528                                          
## C1 0.000 0.000 0.000 0.000 0.000 0.697                                    
## C2 0.000 0.000 0.000 0.000 0.000 0.000 0.650                              
## C3 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.702                        
## C4 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.507                  
## C5 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.615            
## E1 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.682      
## E2 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.512
## E3 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## E4 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## E5 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## N1 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## N2 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## N3 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## N4 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## N5 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## O1 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## O2 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## O3 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## O4 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
## O5 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
##    E3    E4    E5    N1    N2    N3    N4    N5    O1    O2    O3    O4   
## A1                                                                        
## A2                                                                        
## A3                                                                        
## A4                                                                        
## A5                                                                        
## C1                                                                        
## C2                                                                        
## C3                                                                        
## C4                                                                        
## C5                                                                        
## E1                                                                        
## E2                                                                        
## E3 0.607                                                                  
## E4 0.000 0.506                                                            
## E5 0.000 0.000 0.694                                                      
## N1 0.000 0.000 0.000 0.320                                                
## N2 0.000 0.000 0.000 0.000 0.356                                          
## N3 0.000 0.000 0.000 0.000 0.000 0.481                                    
## N4 0.000 0.000 0.000 0.000 0.000 0.000 0.672                              
## N5 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.747                        
## O1 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.682                  
## O2 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.826            
## O3 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.476      
## O4 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.946
## O5 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
##    O5   
## A1      
## A2      
## A3      
## A4      
## A5      
## C1      
## C2      
## C3      
## C4      
## C5      
## E1      
## E2      
## E3      
## E4      
## E5      
## N1      
## N2      
## N3      
## N4      
## N5      
## O1      
## O2      
## O3      
## O4      
## O5 0.788
## 
## $psi
##           agrebl cnscnt extrov neurot opnnss
## agreeable  1.000                            
## conscient -0.334  1.000                     
## extrov     0.683 -0.357  1.000              
## neurot     0.223 -0.283  0.244  1.000       
## openness  -0.303  0.301 -0.453 -0.112  1.000

Modification Indicies

Because our model is not a great fit to our data, we might want to ask for the modification indicies with the modindices() function. lavaan will give you a set of changes you can make that will increase the fit on the model. The mi value is the amount a reduction in the chi-square statistics that each change would bring—so the higher the better because a reduction in chi-square means and increase in fit!

modindices(bf_fit) %>% 
  arrange(desc(mi)) %>%
  select(lhs, op, rhs, mi) %>%
  head(10)
##          lhs op rhs       mi
## 1         N1 ~~  N2 418.8124
## 2     extrov =~  N4 200.7898
## 3   openness =~  E3 153.7152
## 4         N3 ~~  N4 134.1036
## 5   openness =~  E4 122.5581
## 6  conscient =~  E5 121.4990
## 7     extrov =~  O3 114.2021
## 8     extrov =~  O4 113.8627
## 9     neurot =~  C5 108.7538
## 10    extrov =~  A5 108.5874

Re-specifying the Model

Maybe we want to add error covariances based on modification indices. I recommend only doing this if it makes theoretical sense. Also, what ever theoretical rule you use to justify making these error correlations, if it applies to other sets of items, then add the correlations there too. Be consistent! If you just make changes based on the modification indicies without thinking carefully about the theory behind them, then you are doing exploratory factor analysis.

bf_model_re1 <- ' agreeable =~ A1 + A2 + A3 + A4 + A5
                  conscient =~ C1 + C2 + C3 + C4 + C5
                  extrov =~ E1 + E2 + E3 + E4 + E5
                  neurot =~ N1 + N2 + N3 + N4 + N5
                  openness =~ O1 + O2 + O3 + O4 + O5 
                    
                  N1 ~~ N2
                  N3 ~~ N4'

How would you ask for a diagram of this model?

#diagram here.
bf_fit_re1 <- cfa(bf_model_re1, data = bfi)

summary(bf_fit_re1, fit.measures = TRUE, rsq=TRUE)
## lavaan (0.5-23.1097) converged normally after  57 iterations
## 
##                                                   Used       Total
##   Number of observations                          2436        2800
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic             3808.150
##   Degrees of freedom                               263
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            18222.116
##   Degrees of freedom                               300
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.802
##   Tucker-Lewis Index (TLI)                       0.774
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -99661.580
##   Loglikelihood unrestricted model (H1)     -97757.504
## 
##   Number of free parameters                         62
##   Akaike (AIC)                              199447.159
##   Bayesian (BIC)                            199806.642
##   Sample-size adjusted Bayesian (BIC)       199609.654
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.074
##   90 Percent Confidence Interval          0.072  0.076
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.073
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   agreeable =~                                        
##     A1                1.000                           
##     A2               -1.591    0.109  -14.606    0.000
##     A3               -2.046    0.136  -15.039    0.000
##     A4               -1.569    0.116  -13.566    0.000
##     A5               -1.801    0.122  -14.774    0.000
##   conscient =~                                        
##     C1                1.000                           
##     C2                1.147    0.057   19.964    0.000
##     C3                1.042    0.055   19.069    0.000
##     C4               -1.441    0.066  -21.863    0.000
##     C5               -1.512    0.073  -20.685    0.000
##   extrov =~                                           
##     E1                1.000                           
##     E2                1.234    0.051   24.092    0.000
##     E3               -0.911    0.041  -22.370    0.000
##     E4               -1.120    0.047  -24.074    0.000
##     E5               -0.805    0.039  -20.678    0.000
##   neurot =~                                           
##     N1                1.000                           
##     N2                0.937    0.025   37.799    0.000
##     N3                1.261    0.053   23.708    0.000
##     N4                1.071    0.049   21.667    0.000
##     N5                0.861    0.038   22.879    0.000
##   openness =~                                         
##     O1                1.000                           
##     O2               -1.016    0.068  -14.911    0.000
##     O3                1.377    0.073   18.930    0.000
##     O4                0.442    0.048    9.251    0.000
##     O5               -0.958    0.060  -16.032    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##  .N1 ~~                                               
##    .N2                0.735    0.046   15.889    0.000
##  .N3 ~~                                               
##    .N4               -0.134    0.052   -2.565    0.010
##   agreeable ~~                                        
##     conscient        -0.108    0.012   -9.225    0.000
##     extrov            0.302    0.025   12.257    0.000
##     neurot            0.102    0.015    6.975    0.000
##     openness         -0.093    0.011   -8.437    0.000
##   conscient ~~                                        
##     extrov           -0.222    0.020  -11.116    0.000
##     neurot           -0.220    0.021  -10.395    0.000
##     openness          0.128    0.014    9.138    0.000
##   extrov ~~                                           
##     neurot            0.298    0.028   10.596    0.000
##     openness         -0.264    0.021  -12.318    0.000
##   neurot ~~                                           
##     openness         -0.072    0.018   -3.964    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .A1                1.747    0.052   33.734    0.000
##    .A2                0.802    0.028   28.294    0.000
##    .A3                0.746    0.032   23.110    0.000
##    .A4                1.632    0.051   31.798    0.000
##    .A5                0.860    0.032   26.959    0.000
##    .C1                1.070    0.035   30.215    0.000
##    .C2                1.141    0.039   29.091    0.000
##    .C3                1.172    0.039   30.258    0.000
##    .C4                0.950    0.040   23.849    0.000
##    .C5                1.624    0.058   27.777    0.000
##    .E1                1.812    0.058   31.087    0.000
##    .E2                1.311    0.049   26.774    0.000
##    .E3                1.122    0.038   29.759    0.000
##    .E4                1.086    0.040   26.820    0.000
##    .E5                1.254    0.040   31.329    0.000
##    .N1                1.415    0.055   25.794    0.000
##    .N2                1.413    0.052   26.915    0.000
##    .N3                0.843    0.065   12.874    0.000
##    .N4                1.237    0.063   19.494    0.000
##    .N5                1.843    0.060   30.884    0.000
##    .O1                0.866    0.032   27.241    0.000
##    .O2                1.994    0.063   31.661    0.000
##    .O3                0.688    0.039   17.600    0.000
##    .O4                1.344    0.040   34.018    0.000
##    .O5                1.382    0.045   30.693    0.000
##     agreeable         0.232    0.030    7.804    0.000
##     conscient         0.455    0.036   12.704    0.000
##     extrov            0.849    0.062   13.733    0.000
##     neurot            1.068    0.069   15.442    0.000
##     openness          0.403    0.033   12.144    0.000
## 
## R-Square:
##                    Estimate
##     A1                0.117
##     A2                0.423
##     A3                0.566
##     A4                0.260
##     A5                0.467
##     C1                0.298
##     C2                0.344
##     C3                0.297
##     C4                0.499
##     C5                0.390
##     E1                0.319
##     E2                0.497
##     E3                0.386
##     E4                0.495
##     E5                0.305
##     N1                0.430
##     N2                0.399
##     N3                0.668
##     N4                0.498
##     N5                0.301
##     O1                0.318
##     O2                0.173
##     O3                0.526
##     O4                0.055
##     O5                0.211
inspect(bf_fit_re1, what = "std")
## $lambda
##    agrebl cnscnt extrov neurot opnnss
## A1  0.343  0.000  0.000  0.000  0.000
## A2 -0.650  0.000  0.000  0.000  0.000
## A3 -0.752  0.000  0.000  0.000  0.000
## A4 -0.510  0.000  0.000  0.000  0.000
## A5 -0.683  0.000  0.000  0.000  0.000
## C1  0.000  0.546  0.000  0.000  0.000
## C2  0.000  0.587  0.000  0.000  0.000
## C3  0.000  0.545  0.000  0.000  0.000
## C4  0.000 -0.706  0.000  0.000  0.000
## C5  0.000 -0.625  0.000  0.000  0.000
## E1  0.000  0.000  0.565  0.000  0.000
## E2  0.000  0.000  0.705  0.000  0.000
## E3  0.000  0.000 -0.621  0.000  0.000
## E4  0.000  0.000 -0.704  0.000  0.000
## E5  0.000  0.000 -0.552  0.000  0.000
## N1  0.000  0.000  0.000  0.656  0.000
## N2  0.000  0.000  0.000  0.631  0.000
## N3  0.000  0.000  0.000  0.818  0.000
## N4  0.000  0.000  0.000  0.705  0.000
## N5  0.000  0.000  0.000  0.548  0.000
## O1  0.000  0.000  0.000  0.000  0.564
## O2  0.000  0.000  0.000  0.000 -0.416
## O3  0.000  0.000  0.000  0.000  0.725
## O4  0.000  0.000  0.000  0.000  0.235
## O5  0.000  0.000  0.000  0.000 -0.460
## 
## $theta
##    A1     A2     A3     A4     A5     C1     C2     C3     C4     C5    
## A1  0.883                                                               
## A2  0.000  0.577                                                        
## A3  0.000  0.000  0.434                                                 
## A4  0.000  0.000  0.000  0.740                                          
## A5  0.000  0.000  0.000  0.000  0.533                                   
## C1  0.000  0.000  0.000  0.000  0.000  0.702                            
## C2  0.000  0.000  0.000  0.000  0.000  0.000  0.656                     
## C3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.703              
## C4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.501       
## C5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.610
## E1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## E2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## E3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## E4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## E5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
##    E1     E2     E3     E4     E5     N1     N2     N3     N4     N5    
## A1                                                                      
## A2                                                                      
## A3                                                                      
## A4                                                                      
## A5                                                                      
## C1                                                                      
## C2                                                                      
## C3                                                                      
## C4                                                                      
## C5                                                                      
## E1  0.681                                                               
## E2  0.000  0.503                                                        
## E3  0.000  0.000  0.614                                                 
## E4  0.000  0.000  0.000  0.505                                          
## E5  0.000  0.000  0.000  0.000  0.695                                   
## N1  0.000  0.000  0.000  0.000  0.000  0.570                            
## N2  0.000  0.000  0.000  0.000  0.000  0.520  0.601                     
## N3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.332              
## N4  0.000  0.000  0.000  0.000  0.000  0.000  0.000 -0.131  0.502       
## N5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.699
## O1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
##    O1     O2     O3     O4     O5    
## A1                                   
## A2                                   
## A3                                   
## A4                                   
## A5                                   
## C1                                   
## C2                                   
## C3                                   
## C4                                   
## C5                                   
## E1                                   
## E2                                   
## E3                                   
## E4                                   
## E5                                   
## N1                                   
## N2                                   
## N3                                   
## N4                                   
## N5                                   
## O1  0.682                            
## O2  0.000  0.827                     
## O3  0.000  0.000  0.474              
## O4  0.000  0.000  0.000  0.945       
## O5  0.000  0.000  0.000  0.000  0.789
## 
## $psi
##           agrebl cnscnt extrov neurot opnnss
## agreeable  1.000                            
## conscient -0.333  1.000                     
## extrov     0.680 -0.358  1.000              
## neurot     0.204 -0.315  0.313  1.000       
## openness  -0.304  0.299 -0.451 -0.110  1.000
modindices(bf_fit_re1) %>% 
  arrange(desc(mi)) %>%
  select(lhs, op, rhs, mi) %>%
  head(10)
##          lhs op rhs       mi
## 1   openness =~  E3 160.1243
## 2     extrov =~  N4 157.7845
## 3     neurot =~  O4 146.2368
## 4     neurot =~  C5 135.1787
## 5     neurot =~  C2 131.4783
## 6  conscient =~  E5 124.7340
## 7     extrov =~  O4 123.9378
## 8   openness =~  E4 119.2854
## 9     extrov =~  A5 117.0221
## 10        C1 ~~  C2 113.4368

We might also want to remove A1 – “Am indifferent to the feelings of others,” and O4 – “Spend time reflecting on things,” based on crappy loadings.

bf_model_re2 <- ' agreeable =~ A2 + A3 + A4 + A5
                  conscient =~ C1 + C2 + C3 + C4 + C5
                  extrov =~ E1 + E2 + E3 + E4 + E5
                  neurot =~ N1 + N2 + N3 + N4 + N5
                  openness =~ O1 + O2 + O3 + O5 
                    
                  N1 ~~ N2
                  N3 ~~ N4'

bf_fit_re2 <- cfa(bf_model_re2, data = bfi)

summary(bf_fit_re2, fit.measures = TRUE, rsq=TRUE)
## lavaan (0.5-23.1097) converged normally after  51 iterations
## 
##                                                   Used       Total
##   Number of observations                          2454        2800
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic             3145.804
##   Degrees of freedom                               218
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            17305.746
##   Degrees of freedom                               253
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.828
##   Tucker-Lewis Index (TLI)                       0.801
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -92351.755
##   Loglikelihood unrestricted model (H1)     -90778.853
## 
##   Number of free parameters                         58
##   Akaike (AIC)                              184819.510
##   Bayesian (BIC)                            185156.227
##   Sample-size adjusted Bayesian (BIC)       184971.947
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.074
##   90 Percent Confidence Interval          0.072  0.076
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.068
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   agreeable =~                                        
##     A2                1.000                           
##     A3                1.317    0.050   26.458    0.000
##     A4                1.023    0.050   20.395    0.000
##     A5                1.195    0.047   25.593    0.000
##   conscient =~                                        
##     C1                1.000                           
##     C2                1.149    0.057   20.078    0.000
##     C3                1.045    0.054   19.183    0.000
##     C4               -1.435    0.065  -21.951    0.000
##     C5               -1.506    0.073  -20.751    0.000
##   extrov =~                                           
##     E1                1.000                           
##     E2                1.239    0.051   24.081    0.000
##     E3               -0.924    0.041  -22.528    0.000
##     E4               -1.130    0.047  -24.134    0.000
##     E5               -0.815    0.039  -20.764    0.000
##   neurot =~                                           
##     N1                1.000                           
##     N2                0.944    0.025   37.718    0.000
##     N3                1.265    0.053   23.692    0.000
##     N4                1.068    0.049   21.602    0.000
##     N5                0.865    0.038   22.888    0.000
##   openness =~                                         
##     O1                1.000                           
##     O2               -1.027    0.069  -14.809    0.000
##     O3                1.389    0.075   18.478    0.000
##     O5               -0.940    0.060  -15.592    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##  .N1 ~~                                               
##    .N2                0.730    0.046   15.799    0.000
##  .N3 ~~                                               
##    .N4               -0.121    0.052   -2.333    0.020
##   agreeable ~~                                        
##     conscient         0.171    0.016   10.921    0.000
##     extrov           -0.475    0.028  -16.868    0.000
##     neurot           -0.158    0.021   -7.639    0.000
##     openness          0.144    0.015    9.584    0.000
##   conscient ~~                                        
##     extrov           -0.218    0.020  -11.040    0.000
##     neurot           -0.216    0.021  -10.317    0.000
##     openness          0.132    0.014    9.315    0.000
##   extrov ~~                                           
##     neurot            0.296    0.028   10.644    0.000
##     openness         -0.278    0.022  -12.706    0.000
##   neurot ~~                                           
##     openness         -0.090    0.018   -4.933    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .A2                0.844    0.029   28.941    0.000
##    .A3                0.767    0.033   23.287    0.000
##    .A4                1.631    0.051   31.781    0.000
##    .A5                0.831    0.032   26.084    0.000
##    .C1                1.069    0.035   30.303    0.000
##    .C2                1.139    0.039   29.150    0.000
##    .C3                1.172    0.039   30.328    0.000
##    .C4                0.950    0.040   23.977    0.000
##    .C5                1.629    0.058   27.923    0.000
##    .E1                1.816    0.058   31.341    0.000
##    .E2                1.321    0.049   27.153    0.000
##    .E3                1.106    0.037   29.828    0.000
##    .E4                1.082    0.040   27.022    0.000
##    .E5                1.254    0.040   31.486    0.000
##    .N1                1.425    0.055   25.951    0.000
##    .N2                1.407    0.052   26.838    0.000
##    .N3                0.850    0.065   13.012    0.000
##    .N4                1.251    0.063   19.798    0.000
##    .N5                1.836    0.059   30.931    0.000
##    .O1                0.876    0.032   27.275    0.000
##    .O2                1.995    0.063   31.654    0.000
##    .O3                0.698    0.040   17.329    0.000
##    .O5                1.400    0.045   30.962    0.000
##     agreeable         0.547    0.036   15.372    0.000
##     conscient         0.456    0.036   12.768    0.000
##     extrov            0.836    0.061   13.715    0.000
##     neurot            1.061    0.069   15.411    0.000
##     openness          0.396    0.033   11.949    0.000
## 
## R-Square:
##                    Estimate
##     A2                0.393
##     A3                0.553
##     A4                0.260
##     A5                0.485
##     C1                0.299
##     C2                0.346
##     C3                0.298
##     C4                0.497
##     C5                0.389
##     E1                0.315
##     E2                0.493
##     E3                0.392
##     E4                0.497
##     E5                0.307
##     N1                0.427
##     N2                0.402
##     N3                0.666
##     N4                0.492
##     N5                0.302
##     O1                0.311
##     O2                0.173
##     O3                0.523
##     O5                0.200
inspect(bf_fit_re2, what = "std")
## $lambda
##    agrebl cnscnt extrov neurot opnnss
## A2  0.627  0.000  0.000  0.000  0.000
## A3  0.744  0.000  0.000  0.000  0.000
## A4  0.510  0.000  0.000  0.000  0.000
## A5  0.696  0.000  0.000  0.000  0.000
## C1  0.000  0.547  0.000  0.000  0.000
## C2  0.000  0.588  0.000  0.000  0.000
## C3  0.000  0.546  0.000  0.000  0.000
## C4  0.000 -0.705  0.000  0.000  0.000
## C5  0.000 -0.623  0.000  0.000  0.000
## E1  0.000  0.000  0.561  0.000  0.000
## E2  0.000  0.000  0.702  0.000  0.000
## E3  0.000  0.000 -0.626  0.000  0.000
## E4  0.000  0.000 -0.705  0.000  0.000
## E5  0.000  0.000 -0.554  0.000  0.000
## N1  0.000  0.000  0.000  0.653  0.000
## N2  0.000  0.000  0.000  0.634  0.000
## N3  0.000  0.000  0.000  0.816  0.000
## N4  0.000  0.000  0.000  0.701  0.000
## N5  0.000  0.000  0.000  0.550  0.000
## O1  0.000  0.000  0.000  0.000  0.558
## O2  0.000  0.000  0.000  0.000 -0.416
## O3  0.000  0.000  0.000  0.000  0.723
## O5  0.000  0.000  0.000  0.000 -0.447
## 
## $theta
##    A2     A3     A4     A5     C1     C2     C3     C4     C5     E1    
## A2  0.607                                                               
## A3  0.000  0.447                                                        
## A4  0.000  0.000  0.740                                                 
## A5  0.000  0.000  0.000  0.515                                          
## C1  0.000  0.000  0.000  0.000  0.701                                   
## C2  0.000  0.000  0.000  0.000  0.000  0.654                            
## C3  0.000  0.000  0.000  0.000  0.000  0.000  0.702                     
## C4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.503              
## C5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.611       
## E1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.685
## E2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## E3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## E4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## E5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N4  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## N5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
##    E2     E3     E4     E5     N1     N2     N3     N4     N5     O1    
## A2                                                                      
## A3                                                                      
## A4                                                                      
## A5                                                                      
## C1                                                                      
## C2                                                                      
## C3                                                                      
## C4                                                                      
## C5                                                                      
## E1                                                                      
## E2  0.507                                                               
## E3  0.000  0.608                                                        
## E4  0.000  0.000  0.503                                                 
## E5  0.000  0.000  0.000  0.693                                          
## N1  0.000  0.000  0.000  0.000  0.573                                   
## N2  0.000  0.000  0.000  0.000  0.515  0.598                            
## N3  0.000  0.000  0.000  0.000  0.000  0.000  0.334                     
## N4  0.000  0.000  0.000  0.000  0.000  0.000 -0.118  0.508              
## N5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.698       
## O1  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.689
## O2  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O3  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
## O5  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
##    O2     O3     O5    
## A2                     
## A3                     
## A4                     
## A5                     
## C1                     
## C2                     
## C3                     
## C4                     
## C5                     
## E1                     
## E2                     
## E3                     
## E4                     
## E5                     
## N1                     
## N2                     
## N3                     
## N4                     
## N5                     
## O1                     
## O2  0.827              
## O3  0.000  0.477       
## O5  0.000  0.000  0.800
## 
## $psi
##           agrebl cnscnt extrov neurot opnnss
## agreeable  1.000                            
## conscient  0.343  1.000                     
## extrov    -0.702 -0.352  1.000              
## neurot    -0.208 -0.311  0.314  1.000       
## openness   0.310  0.309 -0.483 -0.139  1.000

It is still not a great fit to the data, but I don’t think I’d want to make any of these modifications.

modindices(bf_fit_re2) %>% 
  arrange(desc(mi)) %>%
  select(lhs, op, rhs, mi) %>%
  head(10)
##          lhs op rhs        mi
## 1     extrov =~  N4 160.70218
## 2   openness =~  E3 140.06928
## 3     neurot =~  C5 135.79120
## 4   openness =~  E4 129.60464
## 5     neurot =~  C2 128.91871
## 6  conscient =~  E5 127.34527
## 7         C1 ~~  C2 110.30471
## 8         O2 ~~  O5  98.82617
## 9     extrov =~  A5  89.36109
## 10    extrov =~  N3  87.78938

We can compare the CFIs for the 3 models with the fitmeasures() function.

fitmeasures(bf_fit)[9]
##       cfi 
## 0.7823657
fitmeasures(bf_fit_re1)[9]
##       cfi 
## 0.8021913
fitmeasures(bf_fit_re2)[9]
##       cfi 
## 0.8283089

Structural Equation Modeling

In real life you should not proceed to the structural equation modeling phase unless you have a good fitting measurement model (CFA). For demonstration purposes let’s add gender, age, and education into the model as predictors of the 5 personality factors.

bf_model_sem <- ' agreeable =~ A2 + A3 + A4 + A5
                  conscient =~ C1 + C2 + C3 + C4 + C5
                  extrov =~ E1 + E2 + E3 + E4 + E5
                  neurot =~ N1 + N2 + N3 + N4 + N5
                  openness =~ O1 + O2 + O3 + O5 
                    
                  N1 ~~ N2
                  N3 ~~ N4

                  agreeable ~ age + gender + education
                  conscient ~ age + gender + education
                  extrov ~ age + gender + education
                  neurot ~ age + gender + education
                  openness ~ age + gender + education
            
                  age ~~ gender
                  age ~~ education
                  gender ~~ education
                  '

Let’s make the graph.

semPaths(semPlotModel(bf_model_sem), rotation = 2)

Instead of the cfa() function we will use the sem() function.

bf_fit_sem <- sem(bf_model_sem, data = bfi)

summary(bf_fit_sem, fit.measures = TRUE, rsq=TRUE)
## lavaan (0.5-23.1097) converged normally after  91 iterations
## 
##                                                   Used       Total
##   Number of observations                          2253        2800
## 
##   Estimator                                         ML
##   Minimum Function Test Statistic             3288.796
##   Degrees of freedom                               272
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            16549.044
##   Degrees of freedom                               325
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.814
##   Tucker-Lewis Index (TLI)                       0.778
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -97728.434
##   Loglikelihood unrestricted model (H1)     -96084.035
## 
##   Number of free parameters                         79
##   Akaike (AIC)                              195614.867
##   Bayesian (BIC)                            196066.749
##   Sample-size adjusted Bayesian (BIC)       195815.753
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.070
##   90 Percent Confidence Interval          0.068  0.072
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.064
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   agreeable =~                                        
##     A2                1.000                           
##     A3                1.307    0.053   24.813    0.000
##     A4                1.019    0.053   19.300    0.000
##     A5                1.191    0.050   23.956    0.000
##   conscient =~                                        
##     C1                1.000                           
##     C2                1.161    0.063   18.400    0.000
##     C3                1.093    0.061   17.948    0.000
##     C4               -1.488    0.073  -20.360    0.000
##     C5               -1.588    0.082  -19.397    0.000
##   extrov =~                                           
##     E1                1.000                           
##     E2                1.234    0.054   22.996    0.000
##     E3               -0.954    0.043  -22.002    0.000
##     E4               -1.139    0.049  -23.207    0.000
##     E5               -0.826    0.041  -20.101    0.000
##   neurot =~                                           
##     N1                1.000                           
##     N2                0.952    0.027   35.750    0.000
##     N3                1.230    0.052   23.636    0.000
##     N4                0.996    0.048   20.889    0.000
##     N5                0.885    0.040   22.366    0.000
##   openness =~                                         
##     O1                1.000                           
##     O2               -1.040    0.071  -14.575    0.000
##     O3                1.364    0.074   18.319    0.000
##     O5               -0.961    0.063  -15.359    0.000
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|)
##   agreeable ~                                         
##     age               0.008    0.002    4.738    0.000
##     gender            0.343    0.038    9.110    0.000
##     education        -0.011    0.016   -0.704    0.481
##   conscient ~                                         
##     age               0.007    0.002    4.440    0.000
##     gender            0.129    0.034    3.852    0.000
##     education         0.002    0.014    0.142    0.887
##   extrov ~                                            
##     age              -0.004    0.002   -2.155    0.031
##     gender           -0.263    0.046   -5.661    0.000
##     education         0.002    0.020    0.095    0.924
##   neurot ~                                            
##     age              -0.012    0.002   -5.049    0.000
##     gender            0.286    0.052    5.480    0.000
##     education        -0.016    0.022   -0.735    0.462
##   openness ~                                          
##     age               0.003    0.002    1.850    0.064
##     gender           -0.139    0.035   -3.993    0.000
##     education         0.065    0.015    4.289    0.000
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##  .N1 ~~                                               
##    .N2                0.674    0.047   14.403    0.000
##  .N3 ~~                                               
##    .N4               -0.034    0.050   -0.679    0.497
##   age ~~                                              
##     gender            0.234    0.106    2.219    0.026
##     education         2.943    0.257   11.443    0.000
##   gender ~~                                           
##     education         0.004    0.011    0.386    0.699
##  .agreeable ~~                                        
##    .conscient         0.140    0.015    9.615    0.000
##    .extrov           -0.439    0.027  -16.045    0.000
##    .neurot           -0.156    0.021   -7.488    0.000
##    .openness          0.132    0.015    8.947    0.000
##  .conscient ~~                                        
##    .extrov           -0.195    0.019  -10.234    0.000
##    .neurot           -0.207    0.021   -9.907    0.000
##    .openness          0.120    0.014    8.691    0.000
##  .extrov ~~                                           
##    .neurot            0.291    0.028   10.240    0.000
##    .openness         -0.279    0.022  -12.501    0.000
##  .neurot ~~                                           
##    .openness         -0.084    0.019   -4.405    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)
##    .A2                0.821    0.030   27.790    0.000
##    .A3                0.776    0.034   23.026    0.000
##    .A4                1.556    0.051   30.440    0.000
##    .A5                0.840    0.033   25.484    0.000
##    .C1                1.065    0.036   29.356    0.000
##    .C2                1.162    0.041   28.345    0.000
##    .C3                1.164    0.040   28.954    0.000
##    .C4                0.932    0.041   22.805    0.000
##    .C5                1.608    0.061   26.441    0.000
##    .E1                1.791    0.059   30.139    0.000
##    .E2                1.333    0.050   26.474    0.000
##    .E3                1.050    0.037   28.208    0.000
##    .E4                1.063    0.041   25.982    0.000
##    .E5                1.216    0.040   30.125    0.000
##    .N1                1.367    0.056   24.554    0.000
##    .N2                1.376    0.054   25.388    0.000
##    .N3                0.912    0.064   14.318    0.000
##    .N4                1.358    0.063   21.647    0.000
##    .N5                1.777    0.061   29.202    0.000
##    .O1                0.859    0.033   26.292    0.000
##    .O2                1.960    0.065   30.283    0.000
##    .O3                0.693    0.040   17.468    0.000
##    .O5                1.395    0.047   29.596    0.000
##     age             113.628    3.385   33.563    0.000
##     gender            0.221    0.007   33.563    0.000
##     education         1.235    0.037   33.563    0.000
##    .agreeable         0.484    0.033   14.452    0.000
##    .conscient         0.406    0.035   11.741    0.000
##    .extrov            0.800    0.061   13.120    0.000
##    .neurot            1.050    0.069   15.153    0.000
##    .openness          0.388    0.033   11.681    0.000
## 
## R-Square:
##                    Estimate
##     A2                0.387
##     A3                0.532
##     A4                0.257
##     A5                0.466
##     C1                0.281
##     C2                0.325
##     C3                0.299
##     C4                0.497
##     C5                0.395
##     E1                0.314
##     E2                0.483
##     E3                0.415
##     E4                0.500
##     E5                0.314
##     N1                0.442
##     N2                0.417
##     N3                0.643
##     N4                0.442
##     N5                0.323
##     O1                0.317
##     O2                0.180
##     O3                0.518
##     O5                0.209
##     agreeable         0.066
##     conscient         0.023
##     extrov            0.022
##     neurot            0.031
##     openness          0.028
#standardized item loadings
inspect(bf_fit_sem, what = "std")$lambda 
##           agrebl cnscnt extrov neurot opnnss age gender eductn
## A2         0.622  0.000  0.000  0.000  0.000   0      0      0
## A3         0.730  0.000  0.000  0.000  0.000   0      0      0
## A4         0.507  0.000  0.000  0.000  0.000   0      0      0
## A5         0.683  0.000  0.000  0.000  0.000   0      0      0
## C1         0.000  0.530  0.000  0.000  0.000   0      0      0
## C2         0.000  0.570  0.000  0.000  0.000   0      0      0
## C3         0.000  0.547  0.000  0.000  0.000   0      0      0
## C4         0.000 -0.705  0.000  0.000  0.000   0      0      0
## C5         0.000 -0.628  0.000  0.000  0.000   0      0      0
## E1         0.000  0.000  0.560  0.000  0.000   0      0      0
## E2         0.000  0.000  0.695  0.000  0.000   0      0      0
## E3         0.000  0.000 -0.644  0.000  0.000   0      0      0
## E4         0.000  0.000 -0.707  0.000  0.000   0      0      0
## E5         0.000  0.000 -0.561  0.000  0.000   0      0      0
## N1         0.000  0.000  0.000  0.665  0.000   0      0      0
## N2         0.000  0.000  0.000  0.646  0.000   0      0      0
## N3         0.000  0.000  0.000  0.802  0.000   0      0      0
## N4         0.000  0.000  0.000  0.665  0.000   0      0      0
## N5         0.000  0.000  0.000  0.568  0.000   0      0      0
## O1         0.000  0.000  0.000  0.000  0.563   0      0      0
## O2         0.000  0.000  0.000  0.000 -0.425   0      0      0
## O3         0.000  0.000  0.000  0.000  0.719   0      0      0
## O5         0.000  0.000  0.000  0.000 -0.457   0      0      0
## age        0.000  0.000  0.000  0.000  0.000   1      0      0
## gender     0.000  0.000  0.000  0.000  0.000   0      1      0
## education  0.000  0.000  0.000  0.000  0.000   0      0      1
#standardized path estimates
inspect(bf_fit_sem, what = "std")$beta 
##           agrebl cnscnt extrov neurot opnnss    age gender eductn
## agreeable      0      0      0      0      0  0.117  0.224 -0.017
## conscient      0      0      0      0      0  0.113  0.094  0.004
## extrov         0      0      0      0      0 -0.053 -0.136  0.002
## neurot         0      0      0      0      0 -0.122  0.129 -0.018
## openness       0      0      0      0      0  0.049 -0.103  0.114
## age            0      0      0      0      0  0.000  0.000  0.000
## gender         0      0      0      0      0  0.000  0.000  0.000
## education      0      0      0      0      0  0.000  0.000  0.000
#correlations bewteen latent variables and exogenous variables
inspect(bf_fit_sem, what = "std")$psi 
##           agrebl cnscnt extrov neurot opnnss age    gender eductn
## agreeable  0.934                                                 
## conscient  0.316  0.977                                          
## extrov    -0.705 -0.342  0.978                                   
## neurot    -0.219 -0.317  0.317  0.969                            
## openness   0.304  0.302 -0.502 -0.131  0.972                     
## age        0.000  0.000  0.000  0.000  0.000  1.000              
## gender     0.000  0.000  0.000  0.000  0.000  0.047  1.000       
## education  0.000  0.000  0.000  0.000  0.000  0.248  0.008  1.000