Department of Industrial Psychology

Stellenbosch University

South Africa

The data

We employ five items of the General Work Stress Scale, namely items 1, 4, 5, 8 and 9. Persons (n = 1377) responded to the items on a five-point rating scale.

mydata <- read.csv("~/GWScountry.csv")
names(mydata)
##  [1] "Country" "i1"      "i2"      "i3"      "i4"      "i5"      "i6"     
##  [8] "i7"      "i8"      "i9"      "GWS"

Congeneric model

The congeneric model is characterized by a single common factor and uncorrelated unique variances. The variance of the latent variable is fixed to unity to identify the model.

Specifying the model

model1 <- '
Factor =~ i1 + i4 + i5 + i8 + i9
'

Fitting the data to the model

The variance of the latent variable is fixed to unity and the estimator is specified as robust maximum likelihood (MLM).

library(lavaan)
## Warning: package 'lavaan' was built under R version 4.2.1
## This is lavaan 0.6-12
## lavaan is FREE software! Please report any bugs.
fit.model1 <- cfa(model1, 
                  data = mydata, 
                  std.lv = TRUE, 
                  estimator = "MLM")

Inspect a summary of the results

summary(fit.model1, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-12 ended normally after 13 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        10
## 
##   Number of observations                          1377
## 
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                                16.513      12.494
##   Degrees of freedom                                 5           5
##   P-value (Chi-square)                           0.006       0.029
##   Scaling correction factor                                  1.322
##     Satorra-Bentler correction                                    
## 
## Model Test Baseline Model:
## 
##   Test statistic                              2070.746    1337.548
##   Degrees of freedom                                10          10
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.548
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.994       0.994
##   Tucker-Lewis Index (TLI)                       0.989       0.989
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.995
##   Robust Tucker-Lewis Index (TLI)                            0.990
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -8691.016   -8691.016
##   Loglikelihood unrestricted model (H1)      -8682.760   -8682.760
##                                                                   
##   Akaike (AIC)                               17402.033   17402.033
##   Bayesian (BIC)                             17454.310   17454.310
##   Sample-size adjusted Bayesian (BIC)        17422.544   17422.544
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.041       0.033
##   90 Percent confidence interval - lower         0.020       0.013
##   90 Percent confidence interval - upper         0.064       0.053
##   P-value RMSEA <= 0.05                          0.718       0.911
##                                                                   
##   Robust RMSEA                                               0.038
##   90 Percent confidence interval - lower                     0.011
##   90 Percent confidence interval - upper                     0.065
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.015       0.015
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Factor =~                                                             
##     i1                0.718    0.028   25.306    0.000    0.718    0.675
##     i4                0.716    0.033   21.882    0.000    0.716    0.660
##     i5                0.615    0.028   21.681    0.000    0.615    0.662
##     i8                0.702    0.027   25.706    0.000    0.702    0.748
##     i9                0.653    0.028   23.179    0.000    0.653    0.681
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .i1                0.615    0.030   20.243    0.000    0.615    0.544
##    .i4                0.664    0.036   18.369    0.000    0.664    0.564
##    .i5                0.485    0.027   17.810    0.000    0.485    0.562
##    .i8                0.387    0.026   14.631    0.000    0.387    0.440
##    .i9                0.494    0.029   17.322    0.000    0.494    0.537
##     Factor            1.000                               1.000    1.000

Essentially tau-equivalence model

The essentially tau-equivalence model is characterised by a single common factor, uncorrelated unique variances, and equivalent unstandardized factor loadings. The variance of the factor is fixed to unity to identify the model.

The difference between the congeneric model and the tau-equivalence model is that the latter estimates a single factor loading across the items whereas the former estimates a factor loading for each item. In the present example the congeneric model estimates four parameters more than the tau-equivalence model.

We constrain the factor loadings to equality by giving each of them the same label (here the label is ā€œaā€).

Specifying the model

model2 <- '
Factor =~ a*i1 + a*i4 + a*i5 + a*i8 + a*i9
'

Fitting the data to the model

The variance of the latent variable is fixed to unity and the estimator is specified as robust maximum likelihood (MLM).

library(lavaan)

fit.model2 <- cfa(model2, 
                  data = mydata, 
                  std.lv = TRUE, 
                  estimator = "MLM")

Inspect a summary of the results

summary(fit.model2, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-12 ended normally after 9 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        10
##   Number of equality constraints                     4
## 
##   Number of observations                          1377
## 
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                                32.222      25.102
##   Degrees of freedom                                 9           9
##   P-value (Chi-square)                           0.000       0.003
##   Scaling correction factor                                  1.284
##     Satorra-Bentler correction                                    
## 
## Model Test Baseline Model:
## 
##   Test statistic                              2070.746    1337.548
##   Degrees of freedom                                10          10
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.548
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.989       0.988
##   Tucker-Lewis Index (TLI)                       0.987       0.987
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.990
##   Robust Tucker-Lewis Index (TLI)                            0.989
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -8698.871   -8698.871
##   Loglikelihood unrestricted model (H1)      -8682.760   -8682.760
##                                                                   
##   Akaike (AIC)                               17409.741   17409.741
##   Bayesian (BIC)                             17441.107   17441.107
##   Sample-size adjusted Bayesian (BIC)        17422.048   17422.048
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.043       0.036
##   90 Percent confidence interval - lower         0.028       0.022
##   90 Percent confidence interval - upper         0.060       0.051
##   P-value RMSEA <= 0.05                          0.727       0.935
##                                                                   
##   Robust RMSEA                                               0.041
##   90 Percent confidence interval - lower                     0.022
##   90 Percent confidence interval - upper                     0.060
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.039       0.039
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Factor =~                                                             
##     i1         (a)    0.677    0.018   37.540    0.000    0.677    0.649
##     i4         (a)    0.677    0.018   37.540    0.000    0.677    0.635
##     i5         (a)    0.677    0.018   37.540    0.000    0.677    0.704
##     i8         (a)    0.677    0.018   37.540    0.000    0.677    0.731
##     i9         (a)    0.677    0.018   37.540    0.000    0.677    0.698
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .i1                0.631    0.027   23.083    0.000    0.631    0.579
##    .i4                0.679    0.029   23.330    0.000    0.679    0.597
##    .i5                0.465    0.025   18.360    0.000    0.465    0.504
##    .i8                0.400    0.024   16.916    0.000    0.400    0.466
##    .i9                0.483    0.027   17.903    0.000    0.483    0.513
##     Factor            1.000                               1.000    1.000

Compare the fit of the two models by means of a chi-square difference test

anova(fit.model1, fit.model2)
## 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)  
## fit.model1  5 17402 17454 16.513                                
## fit.model2  9 17410 17441 32.222     12.709       4    0.01279 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Parallel items model

The parallel items model is characterised by a single common factor, uncorrelated unique variances, equivalent unstandardized factor loadings, and equivalent unique variances. The variance of the factor is fixed to unity to identify the model.

The difference between the tau-equivalence model model and the parallel items model is that the latter estimates a single unique variance across the items whereas the former estimates a unique variance for each item. In the present example the essentially tau-equivalence model estimates four parameters more than the parallel items model.

We constrain the unique variances to equality by giving each of them the same label (here the label is ā€œjā€).

Specifying the model

model3 <- '
Factor =~ a*i1 + a*i4 + a*i5 + a*i8 + a*i9

i1 ~~ j*i1
i4 ~~ j*i4
i5 ~~ j*i5
i8 ~~ j*i8
i9 ~~ j*i9
'

Fitting the data to the model

The variance of the latent variable is fixed to unity and the estimator is specified as robust maximum likelihood (MLM).

library(lavaan)

fit.model3 <- cfa(model3, 
                  data = mydata, 
                  std.lv = TRUE, 
                  estimator = "MLM")

Inspect a summary of the results

summary(fit.model3, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-12 ended normally after 6 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        10
##   Number of equality constraints                     8
## 
##   Number of observations                          1377
## 
## Model Test User Model:
##                                               Standard      Robust
##   Test Statistic                               126.146     104.849
##   Degrees of freedom                                13          13
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.203
##     Satorra-Bentler correction                                    
## 
## Model Test Baseline Model:
## 
##   Test statistic                              2070.746    1337.548
##   Degrees of freedom                                10          10
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.548
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.945       0.931
##   Tucker-Lewis Index (TLI)                       0.958       0.947
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.946
##   Robust Tucker-Lewis Index (TLI)                            0.959
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -8745.833   -8745.833
##   Loglikelihood unrestricted model (H1)      -8682.760   -8682.760
##                                                                   
##   Akaike (AIC)                               17495.666   17495.666
##   Bayesian (BIC)                             17506.121   17506.121
##   Sample-size adjusted Bayesian (BIC)        17499.768   17499.768
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.080       0.072
##   90 Percent confidence interval - lower         0.067       0.060
##   90 Percent confidence interval - upper         0.092       0.083
##   P-value RMSEA <= 0.05                          0.000       0.001
##                                                                   
##   Robust RMSEA                                               0.079
##   90 Percent confidence interval - lower                     0.065
##   90 Percent confidence interval - upper                     0.093
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.082       0.082
## 
## Parameter Estimates:
## 
##   Standard errors                           Robust.sem
##   Information                                 Expected
##   Information saturated (h1) model          Structured
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Factor =~                                                             
##     i1         (a)    0.680    0.018   38.051    0.000    0.680    0.682
##     i4         (a)    0.680    0.018   38.051    0.000    0.680    0.682
##     i5         (a)    0.680    0.018   38.051    0.000    0.680    0.682
##     i8         (a)    0.680    0.018   38.051    0.000    0.680    0.682
##     i9         (a)    0.680    0.018   38.051    0.000    0.680    0.682
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .i1         (j)    0.531    0.014   38.193    0.000    0.531    0.534
##    .i4         (j)    0.531    0.014   38.193    0.000    0.531    0.534
##    .i5         (j)    0.531    0.014   38.193    0.000    0.531    0.534
##    .i8         (j)    0.531    0.014   38.193    0.000    0.531    0.534
##    .i9         (j)    0.531    0.014   38.193    0.000    0.531    0.534
##     Factor            1.000                               1.000    1.000

Compare the fit of the models by means of a chi-square difference test

anova(fit.model1, fit.model2, fit.model3)
## 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)    
## fit.model1  5 17402 17454  16.513                                  
## fit.model2  9 17410 17441  32.222     12.709       4    0.01279 *  
## fit.model3 13 17496 17506 126.146     91.900       4    < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1