1 Load Libraries

# library(psych)
# library(kableExtra)
# library(ggplot2)
# library(tidyr)
# library(dplyr)
# library(gtools)
# library(nFactors)
# library(corrplot)
# library(sjPlot)
# library(afex)
# library(naniar)
# library(stringr)
# library(emmeans)
library(lavaan)
## This is lavaan 0.6-19
## lavaan is FREE software! Please report any bugs.
library(semPlot)
# library(sjPlot)

2 Load Data

df <- read.csv(file="data_study2_clean.csv", header=T)

2.1 Expectation of Rejection

2.1.1 Confirmatory Factor Analysis v1

df$Q8_1 <- as.numeric(df$Q8_1)
df$Q8_2 <- as.numeric(df$Q8_2)
df$Q8_3 <- as.numeric(df$Q8_3)
df$Q8_4 <- as.numeric(df$Q8_4)
df$Q8_5 <- as.numeric(df$Q8_5)
df$Q8_6 <- as.numeric(df$Q8_6)

d <- na.omit(subset(df, select=c(grep("Q8_",colnames(df)))))

# specify model: latent variables =~ observed indicators
model <- '
  exp_rej =~ Q8_1 + Q8_2 + Q8_3 + Q8_4 + Q8_5 + Q8_6
'

# fit CFA
fit <- cfa(model, data = d, std.lv = TRUE)

# summary with fit indices and standardized loadings
summary(fit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 22 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        12
## 
##   Number of observations                           184
## 
## Model Test User Model:
##                                                       
##   Test statistic                               118.123
##   Degrees of freedom                                 9
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                               907.183
##   Degrees of freedom                                15
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.878
##   Tucker-Lewis Index (TLI)                       0.796
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -1055.530
##   Loglikelihood unrestricted model (H1)       -996.468
##                                                       
##   Akaike (AIC)                                2135.059
##   Bayesian (BIC)                              2173.638
##   Sample-size adjusted Bayesian (SABIC)       2135.631
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.257
##   90 Percent confidence interval - lower         0.217
##   90 Percent confidence interval - upper         0.299
##   P-value H_0: RMSEA <= 0.050                    0.000
##   P-value H_0: RMSEA >= 0.080                    1.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.074
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   exp_rej =~                                                            
##     Q8_1              0.662    0.061   10.813    0.000    0.662    0.705
##     Q8_2              0.549    0.050   11.068    0.000    0.549    0.717
##     Q8_3              0.565    0.052   10.851    0.000    0.565    0.707
##     Q8_4              0.902    0.054   16.658    0.000    0.902    0.935
##     Q8_5              0.899    0.055   16.306    0.000    0.899    0.924
##     Q8_6              0.810    0.060   13.474    0.000    0.810    0.822
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .Q8_1              0.444    0.049    9.056    0.000    0.444    0.503
##    .Q8_2              0.284    0.031    9.017    0.000    0.284    0.485
##    .Q8_3              0.319    0.035    9.051    0.000    0.319    0.500
##    .Q8_4              0.116    0.021    5.553    0.000    0.116    0.125
##    .Q8_5              0.138    0.022    6.152    0.000    0.138    0.146
##    .Q8_6              0.315    0.037    8.444    0.000    0.315    0.324
##     exp_rej           1.000                               1.000    1.000
# modindices(fit, sort. = T)

# basic path diagram
semPaths(
  fit,
  what = "std",              # show standardized loadings
  layout = "tree",           # neat hierarchical layout
  rotation = 2,
  style = "lisrel",          # clean style
  residuals = FALSE,         # hide residual arrows (optional)
  intercepts = FALSE,
  sizeMan = 6,               # size of observed variables
  sizeLat = 8,               # size of latent variables
  edge.label.cex = 0.9,      # path label size
  label.cex = 1.1,           # node label size
  nCharNodes = 0,            # keep full variable names
  mar = c(6, 6, 6, 6)
)

2.1.2 Confirmatory Factor Analysis v2

# specify model: latent variables =~ observed indicators
model <- '
  act =~ Q8_1 + Q8_2 + Q8_3
  look =~ Q8_4 + Q8_5 + Q8_6
  Q8_2 ~~ Q8_3
'

# fit CFA
fit <- cfa(model, data = d, std.lv = TRUE)

# summary with fit indices and standardized loadings
summary(fit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 34 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        14
## 
##   Number of observations                           184
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 6.205
##   Degrees of freedom                                 7
##   P-value (Chi-square)                           0.516
## 
## Model Test Baseline Model:
## 
##   Test statistic                               907.183
##   Degrees of freedom                                15
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000
##   Tucker-Lewis Index (TLI)                       1.002
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)               -999.571
##   Loglikelihood unrestricted model (H1)       -996.468
##                                                       
##   Akaike (AIC)                                2027.141
##   Bayesian (BIC)                              2072.151
##   Sample-size adjusted Bayesian (SABIC)       2027.809
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.084
##   P-value H_0: RMSEA <= 0.050                    0.766
##   P-value H_0: RMSEA >= 0.080                    0.064
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.012
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   act =~                                                                
##     Q8_1              0.702    0.064   10.980    0.000    0.702    0.747
##     Q8_2              0.562    0.053   10.698    0.000    0.562    0.734
##     Q8_3              0.568    0.055   10.248    0.000    0.568    0.711
##   look =~                                                               
##     Q8_4              0.909    0.054   16.845    0.000    0.909    0.943
##     Q8_5              0.905    0.055   16.460    0.000    0.905    0.930
##     Q8_6              0.811    0.060   13.489    0.000    0.811    0.823
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .Q8_2 ~~                                                               
##    .Q8_3              0.186    0.034    5.448    0.000    0.186    0.640
##   act ~~                                                                
##     look              0.930    0.036   26.177    0.000    0.930    0.930
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .Q8_1              0.390    0.054    7.255    0.000    0.390    0.442
##    .Q8_2              0.269    0.037    7.365    0.000    0.269    0.461
##    .Q8_3              0.315    0.041    7.637    0.000    0.315    0.494
##    .Q8_4              0.104    0.021    4.835    0.000    0.104    0.111
##    .Q8_5              0.128    0.023    5.595    0.000    0.128    0.135
##    .Q8_6              0.314    0.037    8.438    0.000    0.314    0.323
##     act               1.000                               1.000    1.000
##     look              1.000                               1.000    1.000
modindices(fit, sort. = T)
##     lhs op  rhs    mi    epc sepc.lv sepc.all sepc.nox
## 21 look =~ Q8_2 2.677 -0.382  -0.382   -0.499   -0.499
## 23 Q8_1 ~~ Q8_2 2.677  0.039   0.039    0.120    0.120
## 24 Q8_1 ~~ Q8_3 2.677 -0.039  -0.039   -0.113   -0.113
## 22 look =~ Q8_3 2.677  0.386   0.386    0.483    0.483
## 25 Q8_1 ~~ Q8_4 2.380  0.037   0.037    0.186    0.186
## 27 Q8_1 ~~ Q8_6 1.347 -0.035  -0.035   -0.101   -0.101
## 17  act =~ Q8_4 1.021  0.233   0.233    0.242    0.242
## 36 Q8_5 ~~ Q8_6 1.021  0.027   0.027    0.137    0.137
## 28 Q8_2 ~~ Q8_4 0.772 -0.012  -0.012   -0.070   -0.070
## 35 Q8_4 ~~ Q8_6 0.633 -0.022  -0.022   -0.121   -0.121
## 18  act =~ Q8_5 0.633 -0.184  -0.184   -0.189   -0.189
## 26 Q8_1 ~~ Q8_5 0.534 -0.018  -0.018   -0.081   -0.081
## 31 Q8_3 ~~ Q8_4 0.378  0.009   0.009    0.048    0.048
## 30 Q8_2 ~~ Q8_6 0.240  0.009   0.009    0.030    0.030
## 19  act =~ Q8_6 0.072 -0.068  -0.068   -0.069   -0.069
## 34 Q8_4 ~~ Q8_5 0.072 -0.010  -0.010   -0.088   -0.088
## 29 Q8_2 ~~ Q8_5 0.044 -0.003  -0.003   -0.015   -0.015
## 33 Q8_3 ~~ Q8_6 0.015  0.002   0.002    0.008    0.008
## 32 Q8_3 ~~ Q8_5 0.010  0.001   0.001    0.007    0.007
# basic path diagram
semPaths(
  fit,
  what = "std",              # show standardized loadings
  layout = "tree",           # neat hierarchical layout
  rotation = 2,
  style = "lisrel",          # clean style
  residuals = FALSE,         # hide residual arrows (optional)
  intercepts = FALSE,
  sizeMan = 6,               # size of observed variables
  sizeLat = 8,               # size of latent variables
  edge.label.cex = 0.9,      # path label size
  label.cex = 1.1,           # node label size
  nCharNodes = 0,            # keep full variable names
  mar = c(6, 6, 6, 6)
)

2.1.3 Confirmatory Factor Analysis v3

This model fits very well but we have to drop _2 and _3 which are very interesting items. We’ll proceed without them, future work might look at breaking them out and expanding upon them to create their own factor, or perhaps using a different scale/measure that is a bit more robust/versatile.

# specify model: latent variables =~ observed indicators
model <- '
  exp_rej =~ Q8_1 + Q8_4 + Q8_5 + Q8_6
'

# fit CFA
fit <- cfa(model, data = d, std.lv = TRUE)

# summary with fit indices and standardized loadings
summary(fit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 22 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                         8
## 
##   Number of observations                           184
## 
## Model Test User Model:
##                                                       
##   Test statistic                                 2.491
##   Degrees of freedom                                 2
##   P-value (Chi-square)                           0.288
## 
## Model Test Baseline Model:
## 
##   Test statistic                               567.985
##   Degrees of freedom                                 6
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.999
##   Tucker-Lewis Index (TLI)                       0.997
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)               -735.843
##   Loglikelihood unrestricted model (H1)       -734.598
##                                                       
##   Akaike (AIC)                                1487.686
##   Bayesian (BIC)                              1513.406
##   Sample-size adjusted Bayesian (SABIC)       1488.068
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.037
##   90 Percent confidence interval - lower         0.000
##   90 Percent confidence interval - upper         0.156
##   P-value H_0: RMSEA <= 0.050                    0.439
##   P-value H_0: RMSEA >= 0.080                    0.379
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.011
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   exp_rej =~                                                            
##     Q8_1              0.653    0.062   10.594    0.000    0.653    0.695
##     Q8_4              0.910    0.054   16.831    0.000    0.910    0.944
##     Q8_5              0.905    0.055   16.393    0.000    0.905    0.930
##     Q8_6              0.809    0.060   13.419    0.000    0.809    0.820
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .Q8_1              0.457    0.050    9.071    0.000    0.457    0.517
##    .Q8_4              0.101    0.023    4.409    0.000    0.101    0.109
##    .Q8_5              0.128    0.024    5.292    0.000    0.128    0.135
##    .Q8_6              0.318    0.038    8.411    0.000    0.318    0.327
##     exp_rej           1.000                               1.000    1.000
modindices(fit, sort. = T)
##     lhs op  rhs    mi    epc sepc.lv sepc.all sepc.nox
## 15 Q8_5 ~~ Q8_6 2.398  0.051   0.051    0.250    0.250
## 10 Q8_1 ~~ Q8_4 2.398  0.041   0.041    0.191    0.191
## 13 Q8_4 ~~ Q8_5 1.008 -0.049  -0.049   -0.431   -0.431
## 12 Q8_1 ~~ Q8_6 1.008 -0.031  -0.031   -0.083   -0.083
## 14 Q8_4 ~~ Q8_6 0.647 -0.027  -0.027   -0.149   -0.149
## 11 Q8_1 ~~ Q8_5 0.647 -0.021  -0.021   -0.089   -0.089
# basic path diagram
semPaths(
  fit,
  what = "std",              # show standardized loadings
  layout = "tree",           # neat hierarchical layout
  rotation = 2,
  style = "lisrel",          # clean style
  residuals = FALSE,         # hide residual arrows (optional)
  intercepts = FALSE,
  sizeMan = 6,               # size of observed variables
  sizeLat = 8,               # size of latent variables
  edge.label.cex = 0.9,      # path label size
  label.cex = 1.1,           # node label size
  nCharNodes = 0,            # keep full variable names
  mar = c(6, 6, 6, 6)
)

2.2 Anomie

2.2.1 Confirmatory Factor Analysis v1

Dropped some items with low factor loadings: Q30_3

Dropped Q30_11 and Q30_12 due to low factor loadings from potential language issues – communal may be unfamiliar term, use of idioms in 12

Moved Q30_5 from Breakdown to Disintegration from recommendations from MI

Dropped Q30_7 and Q30_9 – lower factor loadings, were correlated with other items

df$Q30_1 <- as.numeric(df$Q30_1)
df$Q30_2 <- as.numeric(df$Q30_2)
df$Q30_3 <- as.numeric(df$Q30_3)
df$Q30_4 <- as.numeric(df$Q30_4)
df$Q30_5 <- as.numeric(df$Q30_5)
df$Q30_6 <- as.numeric(df$Q30_6)
df$Q30_7 <- as.numeric(df$Q30_7)
df$Q30_8 <- as.numeric(df$Q30_8)
df$Q30_9 <- as.numeric(df$Q30_9)
df$Q30_10 <- as.numeric(df$Q30_10)
df$Q30_11 <- as.numeric(df$Q30_11)
df$Q30_12 <- as.numeric(df$Q30_12)
df$Q30_13 <- as.numeric(df$Q30_13)
df$Q30_14 <- as.numeric(df$Q30_14)
df$Q30_15 <- as.numeric(df$Q30_15)

d <- na.omit(subset(df, select=c(grep("Q30_",colnames(df)))))

# specify model: latent variables =~ observed indicators
model <- '
  bd =~ Q30_1 + Q30_2 + Q30_4
  dis =~ Q30_6 + Q30_8 +  Q30_10 + Q30_13 + Q30_14 + Q30_15 + Q30_5
'

# fit CFA
fit <- cfa(model, data = d, std.lv = TRUE)

# summary with fit indices and standardized loadings
summary(fit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 23 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           184
## 
## Model Test User Model:
##                                                       
##   Test statistic                                92.135
##   Degrees of freedom                                34
##   P-value (Chi-square)                           0.000
## 
## Model Test Baseline Model:
## 
##   Test statistic                              1093.481
##   Degrees of freedom                                45
##   P-value                                        0.000
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.945
##   Tucker-Lewis Index (TLI)                       0.927
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -1958.648
##   Loglikelihood unrestricted model (H1)      -1912.580
##                                                       
##   Akaike (AIC)                                3959.295
##   Bayesian (BIC)                              4026.809
##   Sample-size adjusted Bayesian (SABIC)       3960.297
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.096
##   90 Percent confidence interval - lower         0.073
##   90 Percent confidence interval - upper         0.120
##   P-value H_0: RMSEA <= 0.050                    0.001
##   P-value H_0: RMSEA >= 0.080                    0.881
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.050
## 
## Parameter Estimates:
## 
##   Standard errors                             Standard
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   bd =~                                                                 
##     Q30_1             0.642    0.062   10.324    0.000    0.642    0.704
##     Q30_2             0.795    0.060   13.249    0.000    0.795    0.844
##     Q30_4             0.754    0.065   11.588    0.000    0.754    0.767
##   dis =~                                                                
##     Q30_6             0.691    0.059   11.742    0.000    0.691    0.755
##     Q30_8             0.579    0.052   11.122    0.000    0.579    0.727
##     Q30_10            0.645    0.063   10.156    0.000    0.645    0.680
##     Q30_13            0.697    0.058   12.106    0.000    0.697    0.772
##     Q30_14            0.809    0.059   13.669    0.000    0.809    0.837
##     Q30_15            0.716    0.059   12.148    0.000    0.716    0.774
##     Q30_5             0.693    0.060   11.535    0.000    0.693    0.746
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   bd ~~                                                                 
##     dis               0.829    0.036   22.786    0.000    0.829    0.829
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .Q30_1             0.419    0.052    8.097    0.000    0.419    0.504
##    .Q30_2             0.254    0.044    5.733    0.000    0.254    0.287
##    .Q30_4             0.398    0.054    7.377    0.000    0.398    0.412
##    .Q30_6             0.359    0.043    8.440    0.000    0.359    0.429
##    .Q30_8             0.300    0.035    8.623    0.000    0.300    0.472
##    .Q30_10            0.484    0.055    8.851    0.000    0.484    0.538
##    .Q30_13            0.330    0.040    8.315    0.000    0.330    0.404
##    .Q30_14            0.281    0.037    7.564    0.000    0.281    0.300
##    .Q30_15            0.344    0.041    8.300    0.000    0.344    0.402
##    .Q30_5             0.383    0.045    8.505    0.000    0.383    0.443
##     bd                1.000                               1.000    1.000
##     dis               1.000                               1.000    1.000
modindices(fit, sort. = T)
##       lhs op    rhs     mi    epc sepc.lv sepc.all sepc.nox
## 34  Q30_1 ~~  Q30_2 19.735  0.190   0.190    0.582    0.582
## 33    dis =~  Q30_4 19.735  0.745   0.745    0.758    0.758
## 27     bd =~ Q30_13 11.021  0.383   0.383    0.424    0.424
## 68  Q30_8 ~~  Q30_5 10.540  0.093   0.093    0.274    0.274
## 64  Q30_8 ~~ Q30_10  8.954  0.094   0.094    0.246    0.246
## 32    dis =~  Q30_2  7.310 -0.495  -0.495   -0.526   -0.526
## 35  Q30_1 ~~  Q30_4  7.310 -0.114  -0.114   -0.278   -0.278
## 78 Q30_15 ~~  Q30_5  6.481 -0.080  -0.080   -0.221   -0.221
## 42  Q30_1 ~~  Q30_5  5.648  0.080   0.080    0.200    0.200
## 66  Q30_8 ~~ Q30_14  5.353 -0.062  -0.062   -0.212   -0.212
## 54  Q30_4 ~~ Q30_13  4.932  0.071   0.071    0.196    0.196
## 76 Q30_14 ~~ Q30_15  4.722  0.064   0.064    0.207    0.207
## 30     bd =~  Q30_5  4.385  0.256   0.256    0.275    0.275
## 53  Q30_4 ~~ Q30_10  4.346 -0.078  -0.078   -0.178   -0.178
## 26     bd =~ Q30_10  3.949 -0.265  -0.265   -0.280   -0.280
## 36  Q30_1 ~~  Q30_6  3.947 -0.065  -0.065   -0.168   -0.168
## 43  Q30_2 ~~  Q30_4  3.471 -0.095  -0.095   -0.299   -0.299
## 31    dis =~  Q30_1  3.470 -0.271  -0.271   -0.297   -0.297
## 69 Q30_10 ~~ Q30_13  3.449 -0.062  -0.062   -0.156   -0.156
## 40  Q30_1 ~~ Q30_14  2.618 -0.049  -0.049   -0.144   -0.144
## 25     bd =~  Q30_8  2.555 -0.171  -0.171   -0.215   -0.215
## 57  Q30_4 ~~  Q30_5  2.377  0.053   0.053    0.135    0.135
## 49  Q30_2 ~~ Q30_15  2.238 -0.043  -0.043   -0.146   -0.146
## 61  Q30_6 ~~ Q30_14  2.044  0.043   0.043    0.134    0.134
## 63  Q30_6 ~~  Q30_5  2.024 -0.045  -0.045   -0.122   -0.122
## 75 Q30_13 ~~  Q30_5  2.023 -0.044  -0.044   -0.123   -0.123
## 29     bd =~ Q30_15  1.910 -0.163  -0.163   -0.176   -0.176
## 47  Q30_2 ~~ Q30_13  1.784  0.038   0.038    0.131    0.131
## 41  Q30_1 ~~ Q30_15  1.287 -0.037  -0.037   -0.096   -0.096
## 56  Q30_4 ~~ Q30_15  1.287  0.037   0.037    0.100    0.100
## 52  Q30_4 ~~  Q30_8  1.252 -0.034  -0.034   -0.097   -0.097
## 45  Q30_2 ~~  Q30_8  0.975 -0.026  -0.026   -0.095   -0.095
## 51  Q30_4 ~~  Q30_6  0.955  0.032   0.032    0.086    0.086
## 74 Q30_13 ~~ Q30_15  0.952  0.029   0.029    0.086    0.086
## 50  Q30_2 ~~  Q30_5  0.869 -0.028  -0.028   -0.090   -0.090
## 73 Q30_13 ~~ Q30_14  0.788 -0.026  -0.026   -0.084   -0.084
## 28     bd =~ Q30_14  0.573 -0.087  -0.087   -0.090   -0.090
## 55  Q30_4 ~~ Q30_14  0.441  0.021   0.021    0.062    0.062
## 72 Q30_10 ~~  Q30_5  0.418  0.023   0.023    0.054    0.054
## 44  Q30_2 ~~  Q30_6  0.396  0.018   0.018    0.061    0.061
## 46  Q30_2 ~~ Q30_10  0.349 -0.020  -0.020   -0.056   -0.056
## 38  Q30_1 ~~ Q30_10  0.235  0.018   0.018    0.040    0.040
## 37  Q30_1 ~~  Q30_8  0.215  0.014   0.014    0.039    0.039
## 67  Q30_8 ~~ Q30_15  0.187 -0.012  -0.012   -0.037   -0.037
## 58  Q30_6 ~~  Q30_8  0.183 -0.012  -0.012   -0.036   -0.036
## 71 Q30_10 ~~ Q30_15  0.180  0.015   0.015    0.036    0.036
## 65  Q30_8 ~~ Q30_13  0.108 -0.009  -0.009   -0.028   -0.028
## 59  Q30_6 ~~ Q30_10  0.075 -0.010  -0.010   -0.023   -0.023
## 70 Q30_10 ~~ Q30_14  0.075  0.009   0.009    0.024    0.024
## 62  Q30_6 ~~ Q30_15  0.071  0.008   0.008    0.023    0.023
## 48  Q30_2 ~~ Q30_14  0.013 -0.003  -0.003   -0.012   -0.012
## 39  Q30_1 ~~ Q30_13  0.013  0.004   0.004    0.010    0.010
## 77 Q30_14 ~~  Q30_5  0.006 -0.002  -0.002   -0.007   -0.007
## 60  Q30_6 ~~ Q30_13  0.000  0.000   0.000   -0.001   -0.001
## 24     bd =~  Q30_6  0.000  0.001   0.001    0.002    0.002
# basic path diagram
semPaths(
  fit,
  what = "std",              # show standardized loadings
  layout = "tree",           # neat hierarchical layout
  rotation = 2,
  style = "lisrel",          # clean style
  residuals = FALSE,         # hide residual arrows (optional)
  intercepts = FALSE,
  sizeMan = 6,               # size of observed variables
  sizeLat = 8,               # size of latent variables
  edge.label.cex = 0.9,      # path label size
  label.cex = 1.1,           # node label size
  nCharNodes = 0,            # keep full variable names
  mar = c(6, 6, 6, 6)
)