Get ready by loading some packages:

library(tidyverse)
library(psych)
library(lavaan)
library(semPlot)
library(semTools)

This tutorial focuses on interpreting the results of a CFA and exploring areas of localized strain to subsequently compare alternative models.

Continuing Work with some measures of L2 morphosyntax

d <- read_csv("cfa_data.csv")

summary(d)
##      SPRt_s              WMTt               OPr              EIr       
##  Min.   :-0.60412   Min.   :-0.67012   Min.   :0.3750   Min.   :0.700  
##  1st Qu.:-0.17407   1st Qu.:-0.12850   1st Qu.:0.7265   1st Qu.:1.300  
##  Median : 0.07328   Median : 0.06882   Median :0.8400   Median :1.550  
##  Mean   : 0.05501   Mean   : 0.04815   Mean   :0.8176   Mean   :1.529  
##  3rd Qu.: 0.24032   3rd Qu.: 0.20718   3rd Qu.:0.9384   3rd Qu.:1.800  
##  Max.   : 0.92267   Max.   : 0.66606   Max.   :1.0000   Max.   :2.100  
##  NA's   :26         NA's   :31         NA's   :28       NA's   :44     
##      TAGJT            TWGJT           UAGJT_ug         UWGJT_ug     
##  Min.   :0.2083   Min.   :0.1250   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.4896   1st Qu.:0.5417   1st Qu.:0.3333   1st Qu.:0.4167  
##  Median :0.5417   Median :0.5833   Median :0.4167   Median :0.6667  
##  Mean   :0.5687   Mean   :0.6083   Mean   :0.4476   Mean   :0.6194  
##  3rd Qu.:0.6250   3rd Qu.:0.7083   3rd Qu.:0.5833   3rd Qu.:0.7708  
##  Max.   :1.0000   Max.   :0.9583   Max.   :1.0000   Max.   :1.0000  
##  NA's   :8        NA's   :36       NA's   :8        NA's   :36      
##       MKT        
##  Min.   :0.2083  
##  1st Qu.:0.5417  
##  Median :0.6667  
##  Mean   :0.6401  
##  3rd Qu.:0.7500  
##  Max.   :1.0000  
##  NA's   :21

Factorability:

KMO(d)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = d)
## Overall MSA =  0.77
## MSA for each item = 
##   SPRt_s     WMTt      OPr      EIr    TAGJT    TWGJT UAGJT_ug UWGJT_ug 
##     0.70     0.51     0.81     0.83     0.79     0.77     0.78     0.75 
##      MKT 
##     0.76
cortest.bartlett(cor(d, use = "pairwise.complete.obs"), n = 156)
## $chisq
## [1] 243.5961
## 
## $p.value
## [1] 1.183665e-32
## 
## $df
## [1] 36

CFA

Two models - copy and pasted from the last tutorial.

One <- '
# latent variable definitions
language =~ EIr + OPr + UWGJT_ug + MKT + TWGJT + MKT + SPRt_s + WMTt + TAGJT + UAGJT_ug
'

Two <- '
# latent variable definitions
implicit =~ EIr + OPr + TWGJT + TAGJT + WMTt + SPRt_s
explicit =~ UWGJT_ug + UAGJT_ug + MKT

# covariances
implicit~~explicit
'

And then fit them both:

fitOne <- cfa(One, data = d, missing = "fiml", estimator = "MLR")

fitTwo <- cfa(Two, data = d, missing = "fiml", estimator = "MLR")

And compare…

lavaan::summary(fitOne, estimates = T, standardized = T, fit.measures = T)
## lavaan 0.6-7 ended normally after 84 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of free parameters                         27
##                                                       
##   Number of observations                           156
##   Number of missing patterns                        26
##                                                       
## Model Test User Model:
##                                                Standard      Robust
##   Test Statistic                                 30.458      29.942
##   Degrees of freedom                                 27          27
##   P-value (Chi-square)                            0.294       0.317
##   Scaling correction factor                                   1.017
##        Yuan-Bentler correction (Mplus variant)                     
## 
## Model Test Baseline Model:
## 
##   Test statistic                               183.271     176.306
##   Degrees of freedom                                36          36
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.040
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.977       0.979
##   Tucker-Lewis Index (TLI)                       0.969       0.972
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.979
##   Robust Tucker-Lewis Index (TLI)                            0.973
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)                274.605     274.605
##   Scaling correction factor                                  1.010
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)        289.834     289.834
##   Scaling correction factor                                  1.014
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                -495.211    -495.211
##   Bayesian (BIC)                              -412.865    -412.865
##   Sample-size adjusted Bayesian (BIC)         -498.328    -498.328
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.029       0.026
##   90 Percent confidence interval - lower         0.000       0.000
##   90 Percent confidence interval - upper         0.071       0.070
##   P-value RMSEA <= 0.05                          0.753       0.774
##                                                                   
##   Robust RMSEA                                               0.027
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.070
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.059       0.059
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   language =~                                                           
##     EIr               1.000                               0.183    0.591
##     OPr               0.433    0.091    4.785    0.000    0.079    0.526
##     UWGJT_ug          0.723    0.167    4.325    0.000    0.132    0.556
##     MKT               0.459    0.101    4.550    0.000    0.084    0.491
##     TWGJT             0.594    0.099    6.005    0.000    0.109    0.787
##     SPRt_s            0.385    0.179    2.150    0.032    0.071    0.234
##     WMTt              0.104    0.133    0.782    0.434    0.019    0.074
##     TAGJT             0.453    0.095    4.765    0.000    0.083    0.565
##     UAGJT_ug          0.348    0.131    2.664    0.008    0.064    0.287
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EIr               1.529    0.028   54.086    0.000    1.529    4.936
##    .OPr               0.818    0.013   62.349    0.000    0.818    5.424
##    .UWGJT_ug          0.617    0.021   28.925    0.000    0.617    2.590
##    .MKT               0.640    0.015   43.732    0.000    0.640    3.738
##    .TWGJT             0.606    0.012   50.090    0.000    0.606    4.381
##    .SPRt_s            0.052    0.026    1.991    0.046    0.052    0.173
##    .WMTt              0.046    0.023    2.000    0.046    0.046    0.180
##    .TAGJT             0.567    0.012   47.599    0.000    0.567    3.861
##    .UAGJT_ug          0.446    0.018   24.347    0.000    0.446    2.008
##     language          0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EIr               0.062    0.010    6.195    0.000    0.062    0.650
##    .OPr               0.016    0.002    7.497    0.000    0.016    0.723
##    .UWGJT_ug          0.039    0.006    6.864    0.000    0.039    0.691
##    .MKT               0.022    0.003    7.190    0.000    0.022    0.759
##    .TWGJT             0.007    0.002    3.471    0.001    0.007    0.381
##    .SPRt_s            0.086    0.010    8.765    0.000    0.086    0.945
##    .WMTt              0.065    0.008    8.034    0.000    0.065    0.994
##    .TAGJT             0.015    0.003    5.669    0.000    0.015    0.681
##    .UAGJT_ug          0.045    0.006    7.231    0.000    0.045    0.918
##     language          0.034    0.010    3.385    0.001    1.000    1.000
lavaan::summary(fitTwo, estimates = T, standardized = T, fit.measures = T)
## lavaan 0.6-7 ended normally after 95 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of free parameters                         28
##                                                       
##   Number of observations                           156
##   Number of missing patterns                        26
##                                                       
## Model Test User Model:
##                                                Standard      Robust
##   Test Statistic                                 21.043      21.508
##   Degrees of freedom                                 26          26
##   P-value (Chi-square)                            0.740       0.715
##   Scaling correction factor                                   0.978
##        Yuan-Bentler correction (Mplus variant)                     
## 
## Model Test Baseline Model:
## 
##   Test statistic                               183.271     176.306
##   Degrees of freedom                                36          36
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.040
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000       1.000
##   Tucker-Lewis Index (TLI)                       1.047       1.044
##                                                                   
##   Robust Comparative Fit Index (CFI)                         1.000
##   Robust Tucker-Lewis Index (TLI)                            1.042
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)                279.313     279.313
##   Scaling correction factor                                  1.047
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)        289.834     289.834
##   Scaling correction factor                                  1.014
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                -502.625    -502.625
##   Bayesian (BIC)                              -417.229    -417.229
##   Sample-size adjusted Bayesian (BIC)         -505.858    -505.858
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000       0.000
##   90 Percent confidence interval - lower         0.000       0.000
##   90 Percent confidence interval - upper         0.047       0.049
##   P-value RMSEA <= 0.05                          0.961       0.953
##                                                                   
##   Robust RMSEA                                               0.000
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.048
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.052       0.052
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   implicit =~                                                           
##     EIr               1.000                               0.182    0.586
##     OPr               0.436    0.089    4.906    0.000    0.079    0.524
##     TWGJT             0.626    0.116    5.392    0.000    0.114    0.821
##     TAGJT             0.465    0.101    4.618    0.000    0.084    0.575
##     WMTt              0.107    0.131    0.813    0.416    0.019    0.076
##     SPRt_s            0.367    0.175    2.099    0.036    0.067    0.221
##   explicit =~                                                           
##     UWGJT_ug          1.000                               0.180    0.752
##     UAGJT_ug          0.328    0.179    1.830    0.067    0.059    0.265
##     MKT               0.607    0.123    4.944    0.000    0.109    0.636
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   implicit ~~                                                           
##     explicit          0.022    0.006    4.006    0.000    0.685    0.685
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EIr               1.530    0.028   54.065    0.000    1.530    4.935
##    .OPr               0.819    0.013   62.390    0.000    0.819    5.423
##    .TWGJT             0.607    0.012   50.156    0.000    0.607    4.384
##    .TAGJT             0.567    0.012   47.636    0.000    0.567    3.862
##    .WMTt              0.046    0.023    2.005    0.045    0.046    0.180
##    .SPRt_s            0.052    0.026    1.994    0.046    0.052    0.173
##    .UWGJT_ug          0.616    0.021   29.071    0.000    0.616    2.583
##    .UAGJT_ug          0.446    0.018   24.223    0.000    0.446    2.008
##    .MKT               0.638    0.015   43.185    0.000    0.638    3.725
##     implicit          0.000                               0.000    0.000
##     explicit          0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EIr               0.063    0.011    5.922    0.000    0.063    0.657
##    .OPr               0.017    0.002    7.407    0.000    0.017    0.725
##    .TWGJT             0.006    0.002    2.838    0.005    0.006    0.325
##    .TAGJT             0.014    0.003    5.644    0.000    0.014    0.669
##    .WMTt              0.065    0.008    8.008    0.000    0.065    0.994
##    .SPRt_s            0.086    0.010    8.767    0.000    0.086    0.951
##    .UWGJT_ug          0.025    0.007    3.355    0.001    0.025    0.434
##    .UAGJT_ug          0.046    0.007    6.657    0.000    0.046    0.930
##    .MKT               0.018    0.003    5.083    0.000    0.018    0.596
##     implicit          0.033    0.010    3.247    0.001    1.000    1.000
##     explicit          0.032    0.010    3.365    0.001    1.000    1.000

Factor Scores

Sometimes it is useful to extract factor scores for individuals associated with latent variables - these are trait/ability estimates that account for error, unlike simple composites of raw indicator scores. We can use predict() or lavPredict() to extract these:

lavPredict(fitTwo)
##        implct explct
##   [1,] -0.026 -0.074
##   [2,] -0.071 -0.037
##   [3,] -0.272 -0.326
##   [4,] -0.138 -0.150
##   [5,]  0.198  0.224
##   [6,] -0.161 -0.323
##   [7,]  0.081  0.107
##   [8,] -0.147 -0.129
##   [9,] -0.026 -0.072
##  [10,]  0.134  0.189
##  [11,]  0.036  0.156
##  [12,] -0.044 -0.011
##  [13,]  0.137  0.096
##  [14,] -0.194 -0.221
##  [15,]  0.244  0.176
##  [16,]  0.057  0.166
##  [17,] -0.079 -0.050
##  [18,] -0.123 -0.116
##  [19,]  0.023  0.077
##  [20,] -0.052 -0.044
##  [21,]  0.134  0.159
##  [22,] -0.033  0.070
##  [23,]  0.006 -0.001
##  [24,]  0.039 -0.008
##  [25,] -0.001  0.061
##  [26,] -0.146 -0.199
##  [27,]  0.044  0.139
##  [28,] -0.185 -0.124
##  [29,] -0.113 -0.001
##  [30,] -0.151  0.039
##  [31,]  0.206  0.229
##  [32,] -0.256 -0.265
##  [33,] -0.255 -0.140
##  [34,]  0.094  0.135
##  [35,] -0.270 -0.037
##  [36,] -0.124 -0.145
##  [37,]  0.021  0.016
##  [38,] -0.296 -0.050
##  [39,] -0.166 -0.059
##  [40,]  0.080  0.156
##  [41,]  0.187  0.101
##  [42,] -0.100 -0.184
##  [43,] -0.022  0.012
##  [44,] -0.125 -0.124
##  [45,] -0.171 -0.064
##  [46,] -0.071  0.046
##  [47,] -0.040 -0.039
##  [48,]  0.011 -0.006
##  [49,] -0.355 -0.208
##  [50,] -0.268 -0.228
##  [51,]  0.268  0.146
##  [52,] -0.040 -0.007
##  [53,] -0.066 -0.070
##  [54,] -0.071  0.011
##  [55,] -0.151 -0.109
##  [56,]  0.045  0.053
##  [57,] -0.111 -0.187
##  [58,] -0.115 -0.088
##  [59,] -0.080 -0.090
##  [60,]  0.056  0.072
##  [61,] -0.041 -0.060
##  [62,] -0.114 -0.077
##  [63,] -0.022  0.087
##  [64,] -0.174 -0.275
##  [65,] -0.116 -0.122
##  [66,] -0.265 -0.229
##  [67,] -0.205 -0.253
##  [68,] -0.087 -0.047
##  [69,] -0.187 -0.177
##  [70,]  0.022  0.031
##  [71,]  0.061  0.045
##  [72,]  0.001  0.067
##  [73,]  0.209  0.174
##  [74,]  0.059  0.091
##  [75,] -0.001 -0.017
##  [76,] -0.099  0.015
##  [77,] -0.104 -0.077
##  [78,] -0.092  0.041
##  [79,]  0.194  0.208
##  [80,]  0.011 -0.127
##  [81,]  0.298  0.131
##  [82,] -0.136 -0.240
##  [83,]  0.319  0.222
##  [84,] -0.151 -0.173
##  [85,]  0.146  0.080
##  [86,]  0.247  0.203
##  [87,] -0.016  0.094
##  [88,]  0.203  0.190
##  [89,]  0.278  0.226
##  [90,] -0.007  0.034
##  [91,]  0.294  0.280
##  [92,]  0.013 -0.062
##  [93,] -0.027 -0.026
##  [94,] -0.167 -0.005
##  [95,]  0.096  0.047
##  [96,] -0.196 -0.323
##  [97,] -0.032  0.005
##  [98,]  0.323  0.314
##  [99,]  0.112  0.082
## [100,] -0.019 -0.135
## [101,]  0.110  0.058
## [102,]  0.047  0.025
## [103,] -0.094  0.079
## [104,]  0.269  0.218
## [105,]  0.078 -0.150
## [106,]  0.239  0.263
## [107,] -0.013  0.109
## [108,] -0.190 -0.285
## [109,]  0.210  0.266
## [110,]  0.080  0.083
## [111,]  0.291  0.206
## [112,]  0.189  0.205
## [113,]  0.136  0.064
## [114,]  0.215  0.112
## [115,]  0.012 -0.006
## [116,]  0.190  0.127
## [117,]  0.164 -0.008
## [118,] -0.353 -0.270
## [119,]  0.281  0.282
## [120,] -0.115 -0.096
## [121,] -0.025 -0.047
## [122,]  0.074  0.075
## [123,]  0.200  0.084
## [124,]  0.157  0.052
## [125,] -0.145 -0.124
## [126,]  0.188 -0.041
## [127,] -0.040  0.103
## [128,]  0.055 -0.239
## [129,] -0.098 -0.005
## [130,]  0.120  0.049
## [131,] -0.075 -0.217
## [132,] -0.046 -0.223
## [133,] -0.257 -0.283
## [134,]  0.176  0.002
## [135,] -0.082 -0.106
## [136,]  0.231  0.122
## [137,] -0.088 -0.034
## [138,]  0.134  0.127
## [139,]  0.085 -0.074
## [140,]  0.009  0.025
## [141,] -0.178 -0.143
## [142,] -0.125 -0.063
## [143,]  0.064  0.088
## [144,]  0.001  0.111
## [145,]  0.432  0.352
## [146,]  0.129  0.186
## [147,]  0.043 -0.065
## [148,] -0.130  0.003
## [149,] -0.010 -0.010
## [150,] -0.111 -0.115
## [151,] -0.028 -0.031
## [152,]  0.069  0.089
## [153,]  0.044  0.045
## [154,]  0.057  0.053
## [155,] -0.087  0.006
## [156,] -0.095  0.075

To join these to the main dataset:

d <- bind_cols(d, as_tibble(lavPredict(fitTwo)))

Factor Reliability

Coefficient omega is a factor-analytic analogue to Cronbach’s alpha. Its formula involves a comparison of the amount of variance in the indicator variables explained by the latent variable to the total amount of variance among the indicator variables.

Let’s look at the one factor model first, using the reliability() function from semTools:

reliability(fitOne)
##         language
## alpha  0.6443558
## omega  0.6544694
## omega2 0.6544694
## omega3 0.6421481
## avevar 0.2051856

You’ll notice that the Cronbach’s alpha is nearly identical to the omega values provided. This is generally to be expected in a one factor model.

And now the 2-factor model:

reliability(fitTwo)
##         implicit  explicit
## alpha  0.5391454 0.5014376
## omega  0.5409959 0.5780287
## omega2 0.5409959 0.5780287
## omega3 0.5170551 0.5914536
## avevar 0.2028521 0.3506341

These numbers don’t necessairly look great, but there are some interesting things going on here - for one, the omega values indicate that the Explicit factor is actually a bit more reliable than a basic alpha calculation would suggest. Second, considering that the number of indicators per factor is substantially lower in the 2 factor model (6 and 3, instead of 9), the drop in reliability seems modest.

Localized Strain

resid(fitOne, type="standardized")
## $type
## [1] "standardized"
## 
## $cov
##          EIr    OPr    UWGJT_ MKT    TWGJT  SPRt_s WMTt   TAGJT  UAGJT_
## EIr       0.174                                                        
## OPr       1.278  0.311                                                 
## UWGJT_ug -1.239 -0.641  0.073                                          
## MKT       0.521 -1.328  2.339  0.122                                   
## TWGJT    -0.375  0.282 -0.122 -1.761 -0.573                            
## SPRt_s    0.226 -0.253 -0.046  0.537 -1.402 -0.046                     
## WMTt      0.016 -0.278 -1.872 -0.852 -0.470  1.888  0.055              
## TAGJT    -0.464 -0.595 -1.629 -1.230  1.443  0.186  0.155  0.000       
## UAGJT_ug -0.431  0.983  0.076 -0.218 -0.907  0.919  1.119  0.229  0.041
## 
## $mean
##      EIr      OPr UWGJT_ug      MKT    TWGJT   SPRt_s     WMTt    TAGJT 
##   -0.602   -0.194    0.927   -1.079    1.177    1.034    1.457    1.222 
## UAGJT_ug 
##   -1.097

The standardized residuals indicate that the model accounts for most of the relationships among variables - except perhaps the relationship between the MKT and untimed written GJT (UWGJT).

modindices(fitOne)
##         lhs op      rhs    mi    epc sepc.lv sepc.all sepc.nox
## 30      EIr ~~      OPr 2.053  0.005   0.005    0.164    0.164
## 31      EIr ~~ UWGJT_ug 0.969 -0.006  -0.006   -0.119   -0.119
## 32      EIr ~~      MKT 0.410  0.003   0.003    0.073    0.073
## 33      EIr ~~    TWGJT 0.115 -0.001  -0.001   -0.057   -0.057
## 34      EIr ~~   SPRt_s 0.165  0.003   0.003    0.046    0.046
## 35      EIr ~~     WMTt 0.104  0.002   0.002    0.038    0.038
## 36      EIr ~~    TAGJT 0.224 -0.002  -0.002   -0.057   -0.057
## 37      EIr ~~ UAGJT_ug 0.207 -0.003  -0.003   -0.049   -0.049
## 38      OPr ~~ UWGJT_ug 0.459 -0.002  -0.002   -0.075   -0.075
## 39      OPr ~~      MKT 1.163 -0.002  -0.002   -0.113   -0.113
## 40      OPr ~~    TWGJT 0.061  0.000   0.000    0.037    0.037
## 41      OPr ~~   SPRt_s 0.055 -0.001  -0.001   -0.024   -0.024
## 42      OPr ~~     WMTt 0.088 -0.001  -0.001   -0.032   -0.032
## 43      OPr ~~    TAGJT 0.350 -0.001  -0.001   -0.064   -0.064
## 44      OPr ~~ UAGJT_ug 1.070  0.003   0.003    0.102    0.102
## 45 UWGJT_ug ~~      MKT 9.625  0.010   0.010    0.335    0.335
## 46 UWGJT_ug ~~    TWGJT 0.011  0.000   0.000    0.017    0.017
## 47 UWGJT_ug ~~   SPRt_s 0.002  0.000   0.000    0.004    0.004
## 48 UWGJT_ug ~~     WMTt 2.122 -0.008  -0.008   -0.160   -0.160
## 49 UWGJT_ug ~~    TAGJT 1.441 -0.003  -0.003   -0.134   -0.134
## 50 UWGJT_ug ~~ UAGJT_ug 0.103  0.001   0.001    0.033    0.033
## 51      MKT ~~    TWGJT 1.632 -0.002  -0.002   -0.186   -0.186
## 52      MKT ~~   SPRt_s 0.325  0.002   0.002    0.056    0.056
## 53      MKT ~~     WMTt 0.365 -0.002  -0.002   -0.062   -0.062
## 54      MKT ~~    TAGJT 0.868 -0.002  -0.002   -0.097   -0.097
## 55      MKT ~~ UAGJT_ug 0.038 -0.001  -0.001   -0.019   -0.019
## 56    TWGJT ~~   SPRt_s 1.336 -0.004  -0.004   -0.155   -0.155
## 57    TWGJT ~~     WMTt 0.004  0.000   0.000    0.009    0.009
## 58    TWGJT ~~    TAGJT 4.417  0.003   0.003    0.331    0.331
## 59    TWGJT ~~ UAGJT_ug 0.841 -0.002  -0.002   -0.118   -0.118
## 60   SPRt_s ~~     WMTt 3.947  0.015   0.015    0.194    0.194
## 61   SPRt_s ~~    TAGJT 0.054  0.001   0.001    0.023    0.023
## 62   SPRt_s ~~ UAGJT_ug 0.857  0.005   0.005    0.084    0.084
## 63     WMTt ~~    TAGJT 0.174  0.001   0.001    0.042    0.042
## 64     WMTt ~~ UAGJT_ug 1.172  0.005   0.005    0.099    0.099
## 65    TAGJT ~~ UAGJT_ug 0.037  0.000   0.000    0.018    0.018

For this one factor model, modification indices will only be able to suggest freeing correlated error parameters. It looks like correlating the timed GJTs (written and aural), the RT measures, and the untimed written GJT and the MKT might lead to better fit.

Technically, it is probably better to try these out one by one, starting out with the largest MI and informed by the standardized residuals, and see how it then affects localized strain indices. However, we’ll just do all of them for illustration purposes.

First, we’ll need to specify a new model:

One.err <- '
# latent variable definitions
language =~ EIr + OPr + UWGJT_ug + MKT + TWGJT + MKT + SPRt_s + WMTt + TAGJT + UAGJT_ug

# correlated errors
UWGJT_ug ~~ MKT
TWGJT ~~ TAGJT
SPRt_s ~~ WMTt
'

Now fit and examine:

fitOne.err <- cfa(One.err, data = d, missing = "fiml", estimator = "MLR")

lavaan::summary(fitOne.err, estimates = T, standardized = T, fit.measures = T)
## lavaan 0.6-7 ended normally after 99 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of free parameters                         30
##                                                       
##   Number of observations                           156
##   Number of missing patterns                        26
##                                                       
## Model Test User Model:
##                                                Standard      Robust
##   Test Statistic                                 12.746      12.808
##   Degrees of freedom                                 24          24
##   P-value (Chi-square)                            0.970       0.969
##   Scaling correction factor                                   0.995
##        Yuan-Bentler correction (Mplus variant)                     
## 
## Model Test Baseline Model:
## 
##   Test statistic                               183.271     176.306
##   Degrees of freedom                                36          36
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.040
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000       1.000
##   Tucker-Lewis Index (TLI)                       1.115       1.120
##                                                                   
##   Robust Comparative Fit Index (CFI)                         1.000
##   Robust Tucker-Lewis Index (TLI)                            1.115
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)                283.461     283.461
##   Scaling correction factor                                  1.029
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)        289.834     289.834
##   Scaling correction factor                                  1.014
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                -506.923    -506.923
##   Bayesian (BIC)                              -415.427    -415.427
##   Sample-size adjusted Bayesian (BIC)         -510.387    -510.387
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.000       0.000
##   90 Percent confidence interval - lower         0.000       0.000
##   90 Percent confidence interval - upper         0.000       0.000
##   P-value RMSEA <= 0.05                          0.998       0.998
##                                                                   
##   Robust RMSEA                                               0.000
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.039       0.039
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   language =~                                                           
##     EIr               1.000                               0.193    0.623
##     OPr               0.437    0.092    4.733    0.000    0.084    0.559
##     UWGJT_ug          0.638    0.166    3.843    0.000    0.123    0.517
##     MKT               0.391    0.092    4.229    0.000    0.076    0.440
##     TWGJT             0.540    0.093    5.841    0.000    0.104    0.755
##     SPRt_s            0.364    0.172    2.112    0.035    0.070    0.234
##     WMTt              0.082    0.130    0.629    0.529    0.016    0.061
##     TAGJT             0.378    0.088    4.301    0.000    0.073    0.497
##     UAGJT_ug          0.340    0.128    2.660    0.008    0.066    0.296
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##  .UWGJT_ug ~~                                                           
##    .MKT               0.011    0.005    2.413    0.016    0.011    0.351
##  .TWGJT ~~                                                              
##    .TAGJT             0.003    0.002    1.481    0.139    0.003    0.236
##  .SPRt_s ~~                                                             
##    .WMTt              0.014    0.007    2.043    0.041    0.014    0.182
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EIr               1.530    0.028   54.011    0.000    1.530    4.928
##    .OPr               0.818    0.013   62.306    0.000    0.818    5.419
##    .UWGJT_ug          0.617    0.021   29.025    0.000    0.617    2.584
##    .MKT               0.639    0.015   43.309    0.000    0.639    3.725
##    .TWGJT             0.607    0.012   50.269    0.000    0.607    4.383
##    .SPRt_s            0.053    0.026    2.012    0.044    0.053    0.175
##    .WMTt              0.048    0.023    2.070    0.038    0.048    0.186
##    .TAGJT             0.568    0.012   47.811    0.000    0.568    3.867
##    .UAGJT_ug          0.446    0.018   24.338    0.000    0.446    2.008
##     language          0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EIr               0.059    0.010    5.732    0.000    0.059    0.612
##    .OPr               0.016    0.002    6.847    0.000    0.016    0.687
##    .UWGJT_ug          0.042    0.006    6.992    0.000    0.042    0.733
##    .MKT               0.024    0.003    7.265    0.000    0.024    0.806
##    .TWGJT             0.008    0.002    3.467    0.001    0.008    0.431
##    .SPRt_s            0.086    0.010    8.760    0.000    0.086    0.945
##    .WMTt              0.065    0.008    8.018    0.000    0.065    0.996
##    .TAGJT             0.016    0.003    5.475    0.000    0.016    0.753
##    .UAGJT_ug          0.045    0.006    7.031    0.000    0.045    0.913
##     language          0.037    0.010    3.563    0.000    1.000    1.000

Compare to the original model (the original is nested in the new model):

anova(fitOne, fitOne.err)
## Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
## 
## lavaan NOTE:
##     The "Chisq" column contains standard test statistics, not the
##     robust test that should be reported per model. A robust difference
##     test is a function of two standard (not robust) statistics.
##  
##            Df     AIC     BIC  Chisq Chisq diff Df diff Pr(>Chisq)   
## fitOne.err 24 -506.92 -415.43 12.746                                 
## fitOne     27 -495.21 -412.86 30.458     14.836       3   0.001962 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

This definitely appears to be an improvement.

Let’s check out the reliability:

reliability(fitOne.err)
##         language
## alpha  0.6443558
## omega  0.6097852
## omega2 0.6097852
## omega3 0.6133908
## avevar 0.2016788

Omega estimates drop because now some additional variance in indicators is being accounted for by the correlated errors.

Time to revisit localized strain:

resid(fitOne.err, type="standardized")
## $type
## [1] "standardized"
## 
## $cov
##          EIr    OPr    UWGJT_ MKT    TWGJT  SPRt_s WMTt   TAGJT  UAGJT_
## EIr      -0.022                                                        
## OPr       0.924  0.332                                                 
## UWGJT_ug -1.084 -0.642  0.028                                          
## MKT       0.731 -1.192  0.428  0.168                                   
## TWGJT    -0.596  0.063  1.149 -0.126 -0.696                            
## SPRt_s    0.162 -0.403  0.077  0.686 -1.247  0.012                     
## WMTt      0.076 -0.236 -1.760 -0.733 -0.272 -0.337  0.115              
## TAGJT    -0.012 -0.285 -0.261  0.122 -0.504  0.391  0.337  0.083       
## UAGJT_ug -0.716  0.799  0.159 -0.078 -0.914  0.905  1.137  0.532  0.047
## 
## $mean
##      EIr      OPr UWGJT_ug      MKT    TWGJT   SPRt_s     WMTt    TAGJT 
##   -0.687   -0.216    1.213    0.123    0.484    0.753    1.306   -0.109 
## UAGJT_ug 
##   -0.966

This all looks pretty good.

MIs:

modindices(fitOne.err)
##         lhs op      rhs    mi    epc sepc.lv sepc.all sepc.nox
## 33      EIr ~~      OPr 0.859  0.004   0.004    0.126    0.126
## 34      EIr ~~ UWGJT_ug 1.910 -0.008  -0.008   -0.162   -0.162
## 35      EIr ~~      MKT 1.578  0.005   0.005    0.138    0.138
## 36      EIr ~~    TWGJT 0.126 -0.001  -0.001   -0.064   -0.064
## 37      EIr ~~   SPRt_s 0.058  0.002   0.002    0.028    0.028
## 38      EIr ~~     WMTt 0.262  0.004   0.004    0.062    0.062
## 39      EIr ~~    TAGJT 0.001  0.000   0.000    0.004    0.004
## 40      EIr ~~ UAGJT_ug 0.431 -0.004  -0.004   -0.075   -0.075
## 41      OPr ~~ UWGJT_ug 0.150 -0.001  -0.001   -0.041   -0.041
## 42      OPr ~~      MKT 0.909 -0.002  -0.002   -0.095   -0.095
## 43      OPr ~~    TWGJT 0.026  0.000   0.000    0.025    0.025
## 44      OPr ~~   SPRt_s 0.159 -0.002  -0.002   -0.043   -0.043
## 45      OPr ~~     WMTt 0.012  0.000   0.000   -0.012   -0.012
## 46      OPr ~~    TAGJT 0.081  0.000   0.000   -0.031   -0.031
## 47      OPr ~~ UAGJT_ug 0.835  0.003   0.003    0.094    0.094
## 48 UWGJT_ug ~~    TWGJT 2.574  0.004   0.004    0.202    0.202
## 49 UWGJT_ug ~~   SPRt_s 0.015  0.001   0.001    0.012    0.012
## 50 UWGJT_ug ~~     WMTt 1.615 -0.007  -0.007   -0.126   -0.126
## 51 UWGJT_ug ~~    TAGJT 0.330 -0.001  -0.001   -0.054   -0.054
## 52 UWGJT_ug ~~ UAGJT_ug 0.115  0.001   0.001    0.032    0.032
## 53      MKT ~~    TWGJT 0.337 -0.001  -0.001   -0.069   -0.069
## 54      MKT ~~   SPRt_s 0.618  0.003   0.003    0.070    0.070
## 55      MKT ~~     WMTt 0.081 -0.001  -0.001   -0.027   -0.027
## 56      MKT ~~    TAGJT 0.079  0.000   0.000    0.025    0.025
## 57      MKT ~~ UAGJT_ug 0.051 -0.001  -0.001   -0.020   -0.020
## 58    TWGJT ~~   SPRt_s 1.244 -0.004  -0.004   -0.138   -0.138
## 59    TWGJT ~~     WMTt 0.026  0.000   0.000    0.020    0.020
## 60    TWGJT ~~ UAGJT_ug 0.824 -0.002  -0.002   -0.109   -0.109
## 61   SPRt_s ~~    TAGJT 0.295  0.002   0.002    0.049    0.049
## 62   SPRt_s ~~ UAGJT_ug 0.634  0.004   0.004    0.071    0.071
## 63     WMTt ~~    TAGJT 0.119  0.001   0.001    0.031    0.031
## 64     WMTt ~~ UAGJT_ug 0.700  0.004   0.004    0.076    0.076
## 65    TAGJT ~~ UAGJT_ug 0.307  0.001   0.001    0.048    0.048

Again, looking good - nothing over 3.84 or 4.0. And at least two of the method effects make sense from a test-task specification perspective: RTs tend to be correlated within individuals (faster people are faster across tasks) and timed GJTs both have time pressure.

Bonus: Exploring an IFA with non-continous indicator responses

e <- read_csv("EIT_learner_single_scores.csv")
eit <- 'OP =~ I01+I02+I03+I04+I05+I06+I07+I08+I09+I10+
I11+I12+I13+I14+I15+I16+I17+I18+I19+I20+I21+
I22+I23+I24+I25+I26+I27+I28+I29+I30'
eitFit <- cfa(eit, data = e, ordered = TRUE)

lavaan::summary(eitFit, estimates = T, standardized = T, fit.measures = T)
## lavaan 0.6-7 ended normally after 69 iterations
## 
##   Estimator                                       DWLS
##   Optimization method                           NLMINB
##   Number of free parameters                        150
##                                                       
##                                                   Used       Total
##   Number of observations                           317         318
##                                                                   
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                               437.022     754.276
##   Degrees of freedom                               405         405
##   P-value (Chi-square)                           0.131       0.000
##   Scaling correction factor                                  0.757
##   Shift parameter                                          177.158
##        simple second-order correction                             
## 
## Model Test Baseline Model:
## 
##   Test statistic                            156352.395   31511.507
##   Degrees of freedom                               435         435
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  5.017
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    1.000       0.989
##   Tucker-Lewis Index (TLI)                       1.000       0.988
##                                                                   
##   Robust Comparative Fit Index (CFI)                            NA
##   Robust Tucker-Lewis Index (TLI)                               NA
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.016       0.052
##   90 Percent confidence interval - lower         0.000       0.046
##   90 Percent confidence interval - upper         0.026       0.058
##   P-value RMSEA <= 0.05                          1.000       0.257
##                                                                   
##   Robust RMSEA                                                  NA
##   90 Percent confidence interval - lower                        NA
##   90 Percent confidence interval - upper                        NA
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.041       0.041
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model        Unstructured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   OP =~                                                                 
##     I01               1.000                               0.534    0.534
##     I02               1.204    0.126    9.548    0.000    0.643    0.643
##     I03               1.354    0.137    9.896    0.000    0.723    0.723
##     I04               1.314    0.138    9.516    0.000    0.701    0.701
##     I05               1.492    0.138   10.806    0.000    0.797    0.797
##     I06               1.535    0.144   10.691    0.000    0.820    0.820
##     I07               1.448    0.141   10.243    0.000    0.773    0.773
##     I08               1.569    0.149   10.560    0.000    0.838    0.838
##     I09               1.566    0.146   10.700    0.000    0.836    0.836
##     I10               1.501    0.144   10.442    0.000    0.801    0.801
##     I11               1.473    0.139   10.623    0.000    0.787    0.787
##     I12               1.522    0.142   10.698    0.000    0.813    0.813
##     I13               1.473    0.146   10.075    0.000    0.786    0.786
##     I14               1.510    0.144   10.503    0.000    0.806    0.806
##     I15               1.522    0.147   10.384    0.000    0.812    0.812
##     I16               1.631    0.155   10.557    0.000    0.871    0.871
##     I17               1.601    0.153   10.487    0.000    0.855    0.855
##     I18               1.654    0.154   10.719    0.000    0.883    0.883
##     I19               1.466    0.145   10.079    0.000    0.783    0.783
##     I20               1.644    0.151   10.897    0.000    0.878    0.878
##     I21               1.673    0.155   10.769    0.000    0.893    0.893
##     I22               1.555    0.146   10.625    0.000    0.830    0.830
##     I23               1.713    0.158   10.808    0.000    0.915    0.915
##     I24               1.666    0.153   10.895    0.000    0.890    0.890
##     I25               1.634    0.152   10.769    0.000    0.872    0.872
##     I26               1.631    0.148   11.020    0.000    0.871    0.871
##     I27               1.577    0.146   10.775    0.000    0.842    0.842
##     I28               1.592    0.147   10.801    0.000    0.850    0.850
##     I29               1.551    0.147   10.534    0.000    0.828    0.828
##     I30               1.504    0.145   10.379    0.000    0.803    0.803
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .I01               0.000                               0.000    0.000
##    .I02               0.000                               0.000    0.000
##    .I03               0.000                               0.000    0.000
##    .I04               0.000                               0.000    0.000
##    .I05               0.000                               0.000    0.000
##    .I06               0.000                               0.000    0.000
##    .I07               0.000                               0.000    0.000
##    .I08               0.000                               0.000    0.000
##    .I09               0.000                               0.000    0.000
##    .I10               0.000                               0.000    0.000
##    .I11               0.000                               0.000    0.000
##    .I12               0.000                               0.000    0.000
##    .I13               0.000                               0.000    0.000
##    .I14               0.000                               0.000    0.000
##    .I15               0.000                               0.000    0.000
##    .I16               0.000                               0.000    0.000
##    .I17               0.000                               0.000    0.000
##    .I18               0.000                               0.000    0.000
##    .I19               0.000                               0.000    0.000
##    .I20               0.000                               0.000    0.000
##    .I21               0.000                               0.000    0.000
##    .I22               0.000                               0.000    0.000
##    .I23               0.000                               0.000    0.000
##    .I24               0.000                               0.000    0.000
##    .I25               0.000                               0.000    0.000
##    .I26               0.000                               0.000    0.000
##    .I27               0.000                               0.000    0.000
##    .I28               0.000                               0.000    0.000
##    .I29               0.000                               0.000    0.000
##    .I30               0.000                               0.000    0.000
##     OP                0.000                               0.000    0.000
## 
## Thresholds:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     I01|t1           -1.529    0.110  -13.853    0.000   -1.529   -1.529
##     I01|t2           -1.480    0.107  -13.811    0.000   -1.480   -1.480
##     I01|t3           -0.647    0.076   -8.502    0.000   -0.647   -0.647
##     I01|t4           -0.252    0.071   -3.529    0.000   -0.252   -0.252
##     I02|t1           -1.371    0.101  -13.608    0.000   -1.371   -1.371
##     I02|t2           -1.030    0.086  -11.989    0.000   -1.030   -1.030
##     I02|t3           -0.553    0.075   -7.413    0.000   -0.553   -0.553
##     I02|t4           -0.107    0.071   -1.514    0.130   -0.107   -0.107
##     I03|t1           -1.504    0.109  -13.835    0.000   -1.504   -1.504
##     I03|t2           -1.176    0.091  -12.861    0.000   -1.176   -1.176
##     I03|t3           -0.155    0.071   -2.186    0.029   -0.155   -0.155
##     I03|t4            0.326    0.072    4.534    0.000    0.326    0.326
##     I04|t1           -1.776    0.130  -13.631    0.000   -1.776   -1.776
##     I04|t2           -1.504    0.109  -13.835    0.000   -1.504   -1.504
##     I04|t3           -0.991    0.085  -11.706    0.000   -0.991   -0.991
##     I04|t4           -0.376    0.072   -5.202    0.000   -0.376   -0.376
##     I05|t1           -1.457    0.106  -13.780    0.000   -1.457   -1.457
##     I05|t2           -1.058    0.087  -12.173    0.000   -1.058   -1.058
##     I05|t3           -0.428    0.073   -5.869    0.000   -0.428   -0.428
##     I05|t4           -0.012    0.071   -0.168    0.866   -0.012   -0.012
##     I06|t1           -0.813    0.080  -10.203    0.000   -0.813   -0.813
##     I06|t2           -0.507    0.074   -6.864    0.000   -0.507   -0.507
##     I06|t3           -0.091    0.071   -1.290    0.197   -0.091   -0.091
##     I06|t4            0.480    0.074    6.533    0.000    0.480    0.480
##     I07|t1           -1.145    0.090  -12.697    0.000   -1.145   -1.145
##     I07|t2           -0.824    0.080  -10.306    0.000   -0.824   -0.824
##     I07|t3           -0.293    0.072   -4.088    0.000   -0.293   -0.293
##     I07|t4            0.235    0.071    3.306    0.001    0.235    0.235
##     I08|t1           -1.259    0.095  -13.238    0.000   -1.259   -1.259
##     I08|t2           -0.697    0.077   -9.041    0.000   -0.697   -0.697
##     I08|t3           -0.260    0.071   -3.641    0.000   -0.260   -0.260
##     I08|t4            0.599    0.075    7.960    0.000    0.599    0.599
##     I09|t1           -1.044    0.086  -12.081    0.000   -1.044   -1.044
##     I09|t2           -0.657    0.076   -8.611    0.000   -0.657   -0.657
##     I09|t3           -0.260    0.071   -3.641    0.000   -0.260   -0.260
##     I09|t4            0.428    0.073    5.869    0.000    0.428    0.428
##     I10|t1           -1.192    0.092  -12.940    0.000   -1.192   -1.192
##     I10|t2           -0.759    0.078   -9.679    0.000   -0.759   -0.759
##     I10|t3           -0.351    0.072   -4.868    0.000   -0.351   -0.351
##     I10|t4            0.260    0.071    3.641    0.000    0.260    0.260
##     I11|t1           -0.525    0.074   -7.084    0.000   -0.525   -0.525
##     I11|t2            0.099    0.071    1.402    0.161    0.099    0.099
##     I11|t3            0.717    0.078    9.254    0.000    0.717    0.717
##     I11|t4            1.208    0.093   13.018    0.000    1.208    1.208
##     I12|t1           -1.192    0.092  -12.940    0.000   -1.192   -1.192
##     I12|t2           -0.697    0.077   -9.041    0.000   -0.697   -0.697
##     I12|t3            0.004    0.071    0.056    0.955    0.004    0.004
##     I12|t4            0.571    0.075    7.632    0.000    0.571    0.571
##     I13|t1           -0.059    0.071   -0.841    0.400   -0.059   -0.059
##     I13|t2            0.507    0.074    6.864    0.000    0.507    0.507
##     I13|t3            1.176    0.091   12.861    0.000    1.176    1.176
##     I13|t4            1.582    0.114   13.865    0.000    1.582    1.582
##     I14|t1           -0.738    0.078   -9.467    0.000   -0.738   -0.738
##     I14|t2           -0.187    0.071   -2.634    0.008   -0.187   -0.187
##     I14|t3            0.334    0.072    4.646    0.000    0.334    0.334
##     I14|t4            1.176    0.091   12.861    0.000    1.176    1.176
##     I15|t1           -0.195    0.071   -2.746    0.006   -0.195   -0.195
##     I15|t2            0.402    0.073    5.536    0.000    0.402    0.402
##     I15|t3            0.916    0.082   11.120    0.000    0.916    0.916
##     I15|t4            1.371    0.101   13.608    0.000    1.371    1.371
##     I16|t1           -0.075    0.071   -1.065    0.287   -0.075   -0.075
##     I16|t2            0.376    0.072    5.202    0.000    0.376    0.376
##     I16|t3            0.813    0.080   10.203    0.000    0.813    0.813
##     I16|t4            1.192    0.092   12.940    0.000    1.192    1.192
##     I17|t1           -0.044    0.071   -0.617    0.537   -0.044   -0.044
##     I17|t2            0.437    0.073    5.980    0.000    0.437    0.437
##     I17|t3            0.802    0.079   10.098    0.000    0.802    0.802
##     I17|t4            1.582    0.114   13.865    0.000    1.582    1.582
##     I18|t1           -0.437    0.073   -5.980    0.000   -0.437   -0.437
##     I18|t2           -0.012    0.071   -0.168    0.866   -0.012   -0.012
##     I18|t3            0.480    0.074    6.533    0.000    0.480    0.480
##     I18|t4            1.259    0.095   13.238    0.000    1.259    1.259
##     I19|t1           -0.260    0.071   -3.641    0.000   -0.260   -0.260
##     I19|t2            0.562    0.075    7.523    0.000    0.562    0.562
##     I19|t3            1.086    0.088   12.352    0.000    1.086    1.086
##     I19|t4            1.457    0.106   13.780    0.000    1.457    1.457
##     I20|t1           -0.628    0.076   -8.286    0.000   -0.628   -0.628
##     I20|t2           -0.028    0.071   -0.393    0.695   -0.028   -0.028
##     I20|t3            0.489    0.074    6.643    0.000    0.489    0.489
##     I20|t4            0.991    0.085   11.706    0.000    0.991    0.991
##     I21|t1           -0.824    0.080  -10.306    0.000   -0.824   -0.824
##     I21|t2           -0.376    0.072   -5.202    0.000   -0.376   -0.376
##     I21|t3            0.099    0.071    1.402    0.161    0.099    0.099
##     I21|t4            0.791    0.079    9.994    0.000    0.791    0.791
##     I22|t1           -0.147    0.071   -2.074    0.038   -0.147   -0.147
##     I22|t2            0.553    0.075    7.413    0.000    0.553    0.553
##     I22|t3            0.978    0.084   11.610    0.000    0.978    0.978
##     I22|t4            1.480    0.107   13.811    0.000    1.480    1.480
##     I23|t1           -0.657    0.076   -8.611    0.000   -0.657   -0.657
##     I23|t2           -0.171    0.071   -2.410    0.016   -0.171   -0.171
##     I23|t3            0.368    0.072    5.091    0.000    0.368    0.368
##     I23|t4            0.813    0.080   10.203    0.000    0.813    0.813
##     I24|t1           -0.553    0.075   -7.413    0.000   -0.553   -0.553
##     I24|t2           -0.203    0.071   -2.858    0.004   -0.203   -0.203
##     I24|t3            0.326    0.072    4.534    0.000    0.326    0.326
##     I24|t4            1.224    0.094   13.093    0.000    1.224    1.224
##     I25|t1           -0.445    0.073   -6.090    0.000   -0.445   -0.445
##     I25|t2            0.075    0.071    1.065    0.287    0.075    0.075
##     I25|t3            0.562    0.075    7.523    0.000    0.562    0.562
##     I25|t4            1.100    0.088   12.441    0.000    1.100    1.100
##     I26|t1           -0.916    0.082  -11.120    0.000   -0.916   -0.916
##     I26|t2           -0.235    0.071   -3.306    0.001   -0.235   -0.235
##     I26|t3            0.211    0.071    2.970    0.003    0.211    0.211
##     I26|t4            1.058    0.087   12.173    0.000    1.058    1.058
##     I27|t1           -1.004    0.085  -11.801    0.000   -1.004   -1.004
##     I27|t2           -0.203    0.071   -2.858    0.004   -0.203   -0.203
##     I27|t3            0.301    0.072    4.200    0.000    0.301    0.301
##     I27|t4            0.869    0.081   10.717    0.000    0.869    0.869
##     I28|t1           -0.571    0.075   -7.632    0.000   -0.571   -0.571
##     I28|t2           -0.123    0.071   -1.738    0.082   -0.123   -0.123
##     I28|t3            0.544    0.074    7.304    0.000    0.544    0.544
##     I28|t4            1.671    0.121   13.811    0.000    1.671    1.671
##     I29|t1           -0.953    0.083  -11.416    0.000   -0.953   -0.953
##     I29|t2           -0.351    0.072   -4.868    0.000   -0.351   -0.351
##     I29|t3            0.235    0.071    3.306    0.001    0.235    0.235
##     I29|t4            1.332    0.099   13.497    0.000    1.332    1.332
##     I30|t1           -1.130    0.090  -12.613    0.000   -1.130   -1.130
##     I30|t2           -0.813    0.080  -10.203    0.000   -0.813   -0.813
##     I30|t3           -0.227    0.071   -3.194    0.001   -0.227   -0.227
##     I30|t4            0.869    0.081   10.717    0.000    0.869    0.869
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .I01               0.715                               0.715    0.715
##    .I02               0.587                               0.587    0.587
##    .I03               0.477                               0.477    0.477
##    .I04               0.508                               0.508    0.508
##    .I05               0.365                               0.365    0.365
##    .I06               0.328                               0.328    0.328
##    .I07               0.402                               0.402    0.402
##    .I08               0.298                               0.298    0.298
##    .I09               0.301                               0.301    0.301
##    .I10               0.358                               0.358    0.358
##    .I11               0.381                               0.381    0.381
##    .I12               0.339                               0.339    0.339
##    .I13               0.382                               0.382    0.382
##    .I14               0.350                               0.350    0.350
##    .I15               0.340                               0.340    0.340
##    .I16               0.242                               0.242    0.242
##    .I17               0.270                               0.270    0.270
##    .I18               0.220                               0.220    0.220
##    .I19               0.387                               0.387    0.387
##    .I20               0.230                               0.230    0.230
##    .I21               0.203                               0.203    0.203
##    .I22               0.311                               0.311    0.311
##    .I23               0.164                               0.164    0.164
##    .I24               0.209                               0.209    0.209
##    .I25               0.239                               0.239    0.239
##    .I26               0.242                               0.242    0.242
##    .I27               0.291                               0.291    0.291
##    .I28               0.277                               0.277    0.277
##    .I29               0.314                               0.314    0.314
##    .I30               0.356                               0.356    0.356
##     OP                0.285    0.053    5.423    0.000    1.000    1.000
## 
## Scales y*:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##     I01               1.000                               1.000    1.000
##     I02               1.000                               1.000    1.000
##     I03               1.000                               1.000    1.000
##     I04               1.000                               1.000    1.000
##     I05               1.000                               1.000    1.000
##     I06               1.000                               1.000    1.000
##     I07               1.000                               1.000    1.000
##     I08               1.000                               1.000    1.000
##     I09               1.000                               1.000    1.000
##     I10               1.000                               1.000    1.000
##     I11               1.000                               1.000    1.000
##     I12               1.000                               1.000    1.000
##     I13               1.000                               1.000    1.000
##     I14               1.000                               1.000    1.000
##     I15               1.000                               1.000    1.000
##     I16               1.000                               1.000    1.000
##     I17               1.000                               1.000    1.000
##     I18               1.000                               1.000    1.000
##     I19               1.000                               1.000    1.000
##     I20               1.000                               1.000    1.000
##     I21               1.000                               1.000    1.000
##     I22               1.000                               1.000    1.000
##     I23               1.000                               1.000    1.000
##     I24               1.000                               1.000    1.000
##     I25               1.000                               1.000    1.000
##     I26               1.000                               1.000    1.000
##     I27               1.000                               1.000    1.000
##     I28               1.000                               1.000    1.000
##     I29               1.000                               1.000    1.000
##     I30               1.000                               1.000    1.000
reliability(eitFit)
## For constructs with categorical indicators, the alpha and the average variance extracted are calculated from polychoric (polyserial) correlations, not from Pearson correlations.
##               OP
## alpha  0.9824348
## omega  0.9775452
## omega2 0.9775452
## omega3 0.9842079
## avevar 0.6638463