Intro

The following analysis is a draft version of an attempt to replicate the CFA model measuring pupils’ attitudes towards science, that was produced in Ji Yoon Jung’s “A COMPARISON OF CFA AND ESEM APPROACHES USING TIMSS SCIENCE ATTITUDES ITEMS: EVIDENCE FROM FACTOR STRUCTURE AND MEASUREMENT INVARIANCE”, on the TIMSS 2015 data (8th grade). And then test the possible factorial invariance of the scales.

So, first of all, let’s load the data and see how many observations we have in each category of each question (scale).

library(dplyr)
library(foreign)
require(ggplot2)

timss_2015 = read.spss("BSGNO8M6.sav", to.data.frame=TRUE)
timss_NOR <- timss_2015 %>% dplyr::select(BSBS21A, BSBS21B, BSBS21C, BSBS21D, BSBS21E, BSBS21F, BSBS21G, BSBS21H, BSBS21I, BSBS23A, BSBS23B, BSBS23C, BSBS23D, BSBS23E, BSBS23F, BSBS23G, BSBS23H, BSBS24A, BSBS24B, BSBS24C, BSBS24D, BSBS24E, BSBS24F, BSBS24G, BSBS24H, BSBS24I)

colnames(timss_NOR) <- c("enjoy", "wishnotstudy", "boring", "learnthings", "like", "lookfrwrdtolearn", "howworks", "likeexperiments", "favorite", "dowell", "moredifficult", "notstrength", "learnquickly", "goodatsolveproblems", "goodatsci", "isharder", "makesconfusd", "willhelp", "needforother", "gettouni", "togetjob", "jobinvolves", "getahead", "jobopportunit", "parentsthinkimportnt", "importnttodowell")
summary(timss_NOR)
##                enjoy                 wishnotstudy 
##  Agree a lot      :1822   Agree a lot      : 425  
##  Agree a little   :2017   Agree a little   : 885  
##  Disagree a little: 589   Disagree a little:1434  
##  Disagree a lot   : 277   Disagree a lot   :1939  
##  NA's             :  90   NA's             : 112  
##                boring                learnthings  
##  Agree a lot      : 497   Agree a lot      :2315  
##  Agree a little   :1191   Agree a little   :1702  
##  Disagree a little:1383   Disagree a little: 485  
##  Disagree a lot   :1569   Disagree a lot   : 176  
##  NA's             : 155   NA's             : 117  
##                 like               lookfrwrdtolearn
##  Agree a lot      :1789   Agree a lot      :1346   
##  Agree a little   :1715   Agree a little   :1637   
##  Disagree a little: 826   Disagree a little:1267   
##  Disagree a lot   : 343   Disagree a lot   : 437   
##  NA's             : 122   NA's             : 108   
##               howworks             likeexperiments
##  Agree a lot      :2480   Agree a lot      :3695  
##  Agree a little   :1787   Agree a little   : 768  
##  Disagree a little: 324   Disagree a little: 157  
##  Disagree a lot   : 101   Disagree a lot   :  73  
##  NA's             : 103   NA's             : 102  
##               favorite                  dowell    
##  Agree a lot      :1272   Agree a lot      :1765  
##  Agree a little   :1413   Agree a little   :2202  
##  Disagree a little:1290   Disagree a little: 582  
##  Disagree a lot   : 713   Disagree a lot   : 140  
##  NA's             : 107   NA's             : 106  
##            moredifficult             notstrength  
##  Agree a lot      : 189   Agree a lot      : 283  
##  Agree a little   : 721   Agree a little   : 719  
##  Disagree a little:1501   Disagree a little:1472  
##  Disagree a lot   :2272   Disagree a lot   :2195  
##  NA's             : 112   NA's             : 126  
##             learnquickly         goodatsolveproblems
##  Agree a lot      :1244   Agree a lot      : 829    
##  Agree a little   :2161   Agree a little   :2002    
##  Disagree a little:1027   Disagree a little:1456    
##  Disagree a lot   : 241   Disagree a lot   : 403    
##  NA's             : 122   NA's             : 105    
##              goodatsci                 isharder   
##  Agree a lot      :1031   Agree a lot      : 196  
##  Agree a little   :2062   Agree a little   : 647  
##  Disagree a little:1167   Disagree a little:1406  
##  Disagree a lot   : 366   Disagree a lot   :2440  
##  NA's             : 169   NA's             : 106  
##             makesconfusd               willhelp   
##  Agree a lot      : 312   Agree a lot      :1528  
##  Agree a little   :1003   Agree a little   :2172  
##  Disagree a little:1343   Disagree a little: 778  
##  Disagree a lot   :2014   Disagree a lot   : 219  
##  NA's             : 123   NA's             :  98  
##             needforother               gettouni   
##  Agree a lot      :1133   Agree a lot      :1359  
##  Agree a little   :1922   Agree a little   :1643  
##  Disagree a little:1324   Disagree a little:1277  
##  Disagree a lot   : 311   Disagree a lot   : 387  
##  NA's             : 105   NA's             : 129  
##               togetjob               jobinvolves  
##  Agree a lot      :1260   Agree a lot      : 944  
##  Agree a little   :1517   Agree a little   :1258  
##  Disagree a little:1404   Disagree a little:1629  
##  Disagree a lot   : 470   Disagree a lot   : 827  
##  NA's             : 144   NA's             : 137  
##               getahead              jobopportunit 
##  Agree a lot      :1479   Agree a lot      :1695  
##  Agree a little   :2009   Agree a little   :1868  
##  Disagree a little: 934   Disagree a little: 884  
##  Disagree a lot   : 253   Disagree a lot   : 232  
##  NA's             : 120   NA's             : 116  
##         parentsthinkimportnt          importnttodowell
##  Agree a lot      :1816      Agree a lot      :1800   
##  Agree a little   :2028      Agree a little   :2022   
##  Disagree a little: 700      Disagree a little: 707   
##  Disagree a lot   : 128      Disagree a lot   : 152   
##  NA's             : 123      NA's             : 114

Now, as we need numeric data to conduct factor analysis, let’s change the data format and add gender variable. By the latter th einvariance will be assessed.

timss_NOR[sapply(timss_NOR, is.factor)] <- lapply(timss_NOR[sapply(timss_NOR, is.factor)], as.numeric)

timss_NOR <- timss_NOR %>% cbind(timss_2015$BSBG01) %>% rename(gender = `timss_2015$BSBG01`)
str(timss_NOR)
## 'data.frame':    4795 obs. of  27 variables:
##  $ enjoy               : num  3 1 1 2 1 2 2 3 NA 4 ...
##  $ wishnotstudy        : num  2 4 4 4 4 4 3 1 NA 2 ...
##  $ boring              : num  2 4 3 4 4 4 3 1 3 2 ...
##  $ learnthings         : num  3 1 1 2 1 1 2 4 NA 3 ...
##  $ like                : num  4 1 1 2 1 2 2 2 NA 4 ...
##  $ lookfrwrdtolearn    : num  3 1 2 2 1 2 2 3 NA 4 ...
##  $ howworks            : num  2 1 1 2 2 1 3 2 3 3 ...
##  $ likeexperiments     : num  3 2 1 1 1 1 1 1 NA 1 ...
##  $ favorite            : num  4 1 1 2 1 2 3 3 NA 3 ...
##  $ dowell              : num  3 1 2 2 1 2 3 3 2 4 ...
##  $ moredifficult       : num  2 4 4 4 4 3 3 2 3 2 ...
##  $ notstrength         : num  3 NA 4 4 4 2 3 2 3 2 ...
##  $ learnquickly        : num  3 1 1 2 2 2 4 3 2 4 ...
##  $ goodatsolveproblems : num  3 2 2 2 2 3 3 4 2 4 ...
##  $ goodatsci           : num  4 2 2 2 2 2 3 3 2 4 ...
##  $ isharder            : num  3 4 4 4 4 3 3 2 3 2 ...
##  $ makesconfusd        : num  3 4 4 3 4 2 3 2 2 2 ...
##  $ willhelp            : num  2 1 1 2 3 2 2 3 2 3 ...
##  $ needforother        : num  3 1 3 2 4 2 3 3 2 3 ...
##  $ gettouni            : num  2 1 1 1 4 3 2 3 3 3 ...
##  $ togetjob            : num  3 1 1 1 4 3 3 3 3 3 ...
##  $ jobinvolves         : num  3 1 1 2 4 2 2 3 3 4 ...
##  $ getahead            : num  2 1 2 1 3 2 2 3 2 NA ...
##  $ jobopportunit       : num  2 1 1 1 2 2 2 3 2 NA ...
##  $ parentsthinkimportnt: num  1 1 NA 1 4 3 1 2 3 NA ...
##  $ importnttodowell    : num  2 1 1 2 4 3 3 1 3 NA ...
##  $ gender              : Factor w/ 2 levels "Girl","Boy": 2 1 2 1 2 1 1 2 2 1 ...
table(timss_NOR$gender)
## 
## Girl  Boy 
## 2379 2378

We also can see that the distribution of observations in each gender category is pretty much equal. Now, to the CFA model.

Starter CFA

The scales for each of the latent factors and full names of the latter ones are described below:

The model’s summary is the following

require(lavaan)
cfaConfigure <- 'SLS =~ enjoy + wishnotstudy + boring + learnthings + like + lookfrwrdtolearn + howworks + likeexperiments + favorite
                 SCS =~ dowell + moredifficult + notstrength + learnquickly + goodatsolveproblems + goodatsci + isharder + makesconfusd
                 SVS =~ willhelp + needforother + gettouni + togetjob + jobinvolves + getahead + jobopportunit + parentsthinkimportnt + importnttodowell'

cfaOutput_1 <- cfa(model = cfaConfigure, data = timss_NOR)
summary(cfaOutput_1, standardized = T, fit.measures = T)
## lavaan 0.6-4 ended normally after 49 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                         55
## 
##                                                   Used       Total
##   Number of observations                          4055        4795
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                    9239.767
##   Degrees of freedom                               296
##   P-value (Chi-square)                           0.000
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            75644.159
##   Degrees of freedom                               325
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.881
##   Tucker-Lewis Index (TLI)                       0.870
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -100857.058
##   Loglikelihood unrestricted model (H1)     -96237.174
## 
##   Number of free parameters                         55
##   Akaike (AIC)                              201824.115
##   Bayesian (BIC)                            202171.039
##   Sample-size adjusted Bayesian (BIC)       201996.273
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.086
##   90 Percent Confidence Interval          0.085  0.088
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.060
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.751    0.887
##     wishnotstudy     -0.935    0.017  -56.557    0.000   -0.702   -0.720
##     boring           -1.016    0.016  -61.971    0.000   -0.764   -0.761
##     learnthings       0.846    0.013   67.268    0.000    0.636    0.797
##     like              1.132    0.012   92.513    0.000    0.851    0.925
##     lookfrwrdtolrn    1.110    0.013   82.699    0.000    0.834    0.883
##     howworks          0.581    0.013   44.542    0.000    0.436    0.612
##     likeexperimnts    0.335    0.012   28.319    0.000    0.252    0.424
##     favorite          1.150    0.016   73.766    0.000    0.864    0.836
##   SCS =~                                                                
##     dowell            1.000                               0.605    0.797
##     moredifficult    -0.942    0.021  -44.687    0.000   -0.571   -0.668
##     notstrength      -1.102    0.022  -50.441    0.000   -0.667   -0.737
##     learnquickly      1.118    0.019   57.572    0.000    0.677    0.817
##     goodtslvprblms    1.109    0.020   54.437    0.000    0.672    0.783
##     goodatsci         0.921    0.022   42.695    0.000    0.558    0.643
##     isharder         -0.895    0.021  -42.052    0.000   -0.542   -0.635
##     makesconfusd     -1.012    0.024  -42.951    0.000   -0.613   -0.646
##   SVS =~                                                                
##     willhelp          1.000                               0.625    0.765
##     needforother      1.014    0.021   48.392    0.000    0.634    0.730
##     gettouni          1.265    0.022   57.810    0.000    0.791    0.847
##     togetjob          1.286    0.023   56.997    0.000    0.804    0.838
##     jobinvolves       1.187    0.024   48.884    0.000    0.742    0.736
##     getahead          1.062    0.020   52.188    0.000    0.664    0.778
##     jobopportunit     1.068    0.020   52.165    0.000    0.668    0.778
##     prntsthnkmprtn    0.731    0.019   37.681    0.000    0.457    0.584
##     importnttodwll    0.914    0.019   47.541    0.000    0.572    0.718
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.349    0.011   32.949    0.000    0.768    0.768
##     SVS               0.270    0.010   27.545    0.000    0.575    0.575
##   SCS ~~                                                                
##     SVS               0.183    0.008   23.530    0.000    0.483    0.483
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             0.153    0.004   37.340    0.000    0.153    0.213
##    .wishnotstudy      0.459    0.011   42.817    0.000    0.459    0.482
##    .boring            0.425    0.010   42.197    0.000    0.425    0.421
##    .learnthings       0.233    0.006   41.437    0.000    0.233    0.365
##    .like              0.121    0.004   32.578    0.000    0.121    0.144
##    .lookfrwrdtolrn    0.198    0.005   37.687    0.000    0.198    0.221
##    .howworks          0.319    0.007   43.801    0.000    0.319    0.626
##    .likeexperimnts    0.289    0.006   44.578    0.000    0.289    0.820
##    .favorite          0.322    0.008   40.215    0.000    0.322    0.301
##    .dowell            0.210    0.006   37.613    0.000    0.210    0.364
##    .moredifficult     0.405    0.010   41.632    0.000    0.405    0.554
##    .notstrength       0.374    0.009   39.998    0.000    0.374    0.457
##    .learnquickly      0.228    0.006   36.488    0.000    0.228    0.332
##    .goodtslvprblms    0.286    0.007   38.326    0.000    0.286    0.388
##    .goodatsci         0.442    0.011   42.059    0.000    0.442    0.587
##    .isharder          0.436    0.010   42.186    0.000    0.436    0.597
##    .makesconfusd      0.525    0.012   42.008    0.000    0.525    0.583
##    .willhelp          0.278    0.007   40.386    0.000    0.278    0.416
##    .needforother      0.353    0.009   41.279    0.000    0.353    0.468
##    .gettouni          0.245    0.007   36.581    0.000    0.245    0.282
##    .togetjob          0.275    0.007   37.241    0.000    0.275    0.298
##    .jobinvolves       0.466    0.011   41.135    0.000    0.466    0.458
##    .getahead          0.287    0.007   39.962    0.000    0.287    0.395
##    .jobopportunit     0.291    0.007   39.972    0.000    0.291    0.395
##    .prntsthnkmprtn    0.402    0.009   43.325    0.000    0.402    0.659
##    .importnttodwll    0.306    0.007   41.514    0.000    0.306    0.484
##     SLS               0.565    0.016   35.865    0.000    1.000    1.000
##     SCS               0.367    0.012   29.772    0.000    1.000    1.000
##     SVS               0.391    0.014   28.226    0.000    1.000    1.000

Model’s loadings for each factor

inspect(cfaOutput_1, "std")$lambda
##                         SLS    SCS   SVS
## enjoy                 0.887  0.000 0.000
## wishnotstudy         -0.720  0.000 0.000
## boring               -0.761  0.000 0.000
## learnthings           0.797  0.000 0.000
## like                  0.925  0.000 0.000
## lookfrwrdtolearn      0.883  0.000 0.000
## howworks              0.612  0.000 0.000
## likeexperiments       0.424  0.000 0.000
## favorite              0.836  0.000 0.000
## dowell                0.000  0.797 0.000
## moredifficult         0.000 -0.668 0.000
## notstrength           0.000 -0.737 0.000
## learnquickly          0.000  0.817 0.000
## goodatsolveproblems   0.000  0.783 0.000
## goodatsci             0.000  0.643 0.000
## isharder              0.000 -0.635 0.000
## makesconfusd          0.000 -0.646 0.000
## willhelp              0.000  0.000 0.765
## needforother          0.000  0.000 0.730
## gettouni              0.000  0.000 0.847
## togetjob              0.000  0.000 0.838
## jobinvolves           0.000  0.000 0.736
## getahead              0.000  0.000 0.778
## jobopportunit         0.000  0.000 0.778
## parentsthinkimportnt  0.000  0.000 0.584
## importnttodowell      0.000  0.000 0.718

Model’s diagram (I have no cracking idea why it displays two identical pictures - and it seems there is no way to fix it, I tried :c)

library(semPlot)
semPaths(cfaOutput_1)

Configural Factorial Invariance

Now let’s create a CFA model with gender variable added, controlling for configural factorial invariance.

  • average factor values are fixed, factor loadings, item intercepts, items’ residuals, and factors’ variance are checked.
configOutput <- cfa(model = cfaConfigure, data = timss_NOR, group = "gender")
summary(configOutput, standardized = T, fit.measures = T)
## lavaan 0.6-4 ended normally after 57 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                        162
## 
##                                                   Used       Total
##   Number of observations per group         
##   Boy                                             1994        2378
##   Girl                                            2061        2379
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                    9661.841
##   Degrees of freedom                               592
##   P-value (Chi-square)                           0.000
## 
## Chi-square for each group:
## 
##   Boy                                         4881.806
##   Girl                                        4780.035
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            75524.783
##   Degrees of freedom                               650
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.879
##   Tucker-Lewis Index (TLI)                       0.867
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -100568.838
##   Loglikelihood unrestricted model (H1)     -95737.917
## 
##   Number of free parameters                        162
##   Akaike (AIC)                              201461.676
##   Bayesian (BIC)                            202483.524
##   Sample-size adjusted Bayesian (BIC)       201968.759
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.087
##   90 Percent Confidence Interval          0.085  0.088
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.059
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## 
## Group 1 [Boy]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.724    0.887
##     wishnotstudy     -0.989    0.025  -39.748    0.000   -0.716   -0.720
##     boring           -1.070    0.025  -43.555    0.000   -0.775   -0.761
##     learnthings       0.869    0.018   47.929    0.000    0.629    0.803
##     like              1.151    0.017   66.312    0.000    0.833    0.933
##     lookfrwrdtolrn    1.119    0.020   56.937    0.000    0.810    0.875
##     howworks          0.645    0.019   34.539    0.000    0.467    0.657
##     likeexperimnts    0.350    0.017   21.233    0.000    0.254    0.449
##     favorite          1.152    0.022   51.656    0.000    0.834    0.835
##   SCS =~                                                                
##     dowell            1.000                               0.591    0.799
##     moredifficult    -0.928    0.031  -30.371    0.000   -0.548   -0.652
##     notstrength      -1.075    0.031  -34.541    0.000   -0.635   -0.724
##     learnquickly      1.081    0.027   39.408    0.000    0.638    0.804
##     goodtslvprblms    1.101    0.029   37.870    0.000    0.650    0.779
##     goodatsci         0.950    0.032   29.904    0.000    0.561    0.643
##     isharder         -0.866    0.031  -27.589    0.000   -0.512   -0.601
##     makesconfusd     -0.967    0.034  -28.573    0.000   -0.571   -0.619
##   SVS =~                                                                
##     willhelp          1.000                               0.643    0.789
##     needforother      0.994    0.028   35.382    0.000    0.639    0.734
##     gettouni          1.201    0.029   41.840    0.000    0.772    0.837
##     togetjob          1.226    0.030   41.341    0.000    0.788    0.829
##     jobinvolves       1.153    0.033   35.285    0.000    0.741    0.733
##     getahead          1.069    0.027   39.007    0.000    0.687    0.793
##     jobopportunit     1.026    0.027   37.850    0.000    0.659    0.775
##     prntsthnkmprtn    0.732    0.026   28.452    0.000    0.471    0.612
##     importnttodwll    0.910    0.026   35.383    0.000    0.585    0.734
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.325    0.014   22.965    0.000    0.759    0.759
##     SVS               0.274    0.014   19.857    0.000    0.590    0.590
##   SCS ~~                                                                
##     SVS               0.186    0.011   16.779    0.000    0.490    0.490
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             1.722    0.018   94.116    0.000    1.722    2.108
##    .wishnotstudy      3.111    0.022  139.667    0.000    3.111    3.128
##    .boring            2.991    0.023  131.217    0.000    2.991    2.939
##    .learnthings       1.581    0.018   90.147    0.000    1.581    2.019
##    .like              1.802    0.020   90.128    0.000    1.802    2.018
##    .lookfrwrdtolrn    2.018    0.021   97.275    0.000    2.018    2.178
##    .howworks          1.544    0.016   96.818    0.000    1.544    2.168
##    .likeexperimnts    1.239    0.013   97.913    0.000    1.239    2.193
##    .favorite          2.107    0.022   94.218    0.000    2.107    2.110
##    .dowell            1.716    0.017  103.630    0.000    1.716    2.321
##    .moredifficult     3.302    0.019  175.324    0.000    3.302    3.926
##    .notstrength       3.314    0.020  168.856    0.000    3.314    3.781
##    .learnquickly      1.905    0.018  107.086    0.000    1.905    2.398
##    .goodtslvprblms    2.121    0.019  113.513    0.000    2.121    2.542
##    .goodatsci         2.089    0.020  106.993    0.000    2.089    2.396
##    .isharder          3.356    0.019  175.902    0.000    3.356    3.939
##    .makesconfusd      3.183    0.021  153.933    0.000    3.183    3.447
##    .willhelp          1.910    0.018  104.663    0.000    1.910    2.344
##    .needforother      2.120    0.019  108.836    0.000    2.120    2.437
##    .gettouni          2.109    0.021  102.126    0.000    2.109    2.287
##    .togetjob          2.202    0.021  103.452    0.000    2.202    2.317
##    .jobinvolves       2.447    0.023  108.019    0.000    2.447    2.419
##    .getahead          1.989    0.019  102.538    0.000    1.989    2.296
##    .jobopportunit     1.868    0.019   98.016    0.000    1.868    2.195
##    .prntsthnkmprtn    1.783    0.017  103.589    0.000    1.783    2.320
##    .importnttodwll    1.777    0.018   99.667    0.000    1.777    2.232
##     SLS               0.000                               0.000    0.000
##     SCS               0.000                               0.000    0.000
##     SVS               0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             0.143    0.005   26.363    0.000    0.143    0.214
##    .wishnotstudy      0.476    0.016   30.069    0.000    0.476    0.481
##    .boring            0.435    0.015   29.645    0.000    0.435    0.420
##    .learnthings       0.218    0.007   29.022    0.000    0.218    0.355
##    .like              0.103    0.005   22.035    0.000    0.103    0.129
##    .lookfrwrdtolrn    0.201    0.007   26.958    0.000    0.201    0.235
##    .howworks          0.288    0.009   30.519    0.000    0.288    0.569
##    .likeexperimnts    0.255    0.008   31.224    0.000    0.255    0.798
##    .favorite          0.302    0.011   28.330    0.000    0.302    0.302
##    .dowell            0.198    0.008   25.997    0.000    0.198    0.361
##    .moredifficult     0.407    0.014   29.258    0.000    0.407    0.575
##    .notstrength       0.365    0.013   28.100    0.000    0.365    0.475
##    .learnquickly      0.223    0.009   25.804    0.000    0.223    0.354
##    .goodtslvprblms    0.273    0.010   26.695    0.000    0.273    0.393
##    .goodatsci         0.446    0.015   29.361    0.000    0.446    0.586
##    .isharder          0.464    0.016   29.807    0.000    0.464    0.639
##    .makesconfusd      0.526    0.018   29.629    0.000    0.526    0.617
##    .willhelp          0.251    0.009   27.828    0.000    0.251    0.378
##    .needforother      0.349    0.012   28.918    0.000    0.349    0.461
##    .gettouni          0.255    0.010   26.251    0.000    0.255    0.300
##    .togetjob          0.282    0.011   26.560    0.000    0.282    0.313
##    .jobinvolves       0.474    0.016   28.943    0.000    0.474    0.463
##    .getahead          0.279    0.010   27.717    0.000    0.279    0.371
##    .jobopportunit     0.290    0.010   28.163    0.000    0.290    0.400
##    .prntsthnkmprtn    0.369    0.012   30.218    0.000    0.369    0.625
##    .importnttodwll    0.292    0.010   28.918    0.000    0.292    0.461
##     SLS               0.525    0.021   25.150    0.000    1.000    1.000
##     SCS               0.349    0.017   20.890    0.000    1.000    1.000
##     SVS               0.413    0.020   20.724    0.000    1.000    1.000
## 
## 
## Group 2 [Girl]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.757    0.882
##     wishnotstudy     -0.907    0.023  -40.087    0.000   -0.687   -0.720
##     boring           -0.972    0.023  -43.044    0.000   -0.736   -0.753
##     learnthings       0.834    0.018   46.388    0.000    0.632    0.786
##     like              1.120    0.018   63.171    0.000    0.848    0.916
##     lookfrwrdtolrn    1.100    0.019   58.284    0.000    0.833    0.884
##     howworks          0.539    0.019   28.872    0.000    0.408    0.571
##     likeexperimnts    0.327    0.017   18.818    0.000    0.247    0.400
##     favorite          1.131    0.022   51.119    0.000    0.857    0.829
##   SCS =~                                                                
##     dowell            1.000                               0.611    0.793
##     moredifficult    -0.978    0.030  -33.004    0.000   -0.597   -0.690
##     notstrength      -1.118    0.031  -36.033    0.000   -0.683   -0.741
##     learnquickly      1.122    0.027   40.885    0.000    0.686    0.819
##     goodtslvprblms    1.074    0.028   38.060    0.000    0.656    0.774
##     goodatsci         0.887    0.030   29.848    0.000    0.542    0.634
##     isharder         -0.936    0.029  -31.857    0.000   -0.572   -0.670
##     makesconfusd     -1.047    0.033  -31.465    0.000   -0.640   -0.663
##   SVS =~                                                                
##     willhelp          1.000                               0.606    0.739
##     needforother      1.031    0.031   32.873    0.000    0.625    0.721
##     gettouni          1.336    0.034   39.778    0.000    0.809    0.859
##     togetjob          1.357    0.035   39.233    0.000    0.822    0.849
##     jobinvolves       1.224    0.036   33.737    0.000    0.741    0.739
##     getahead          1.059    0.030   34.985    0.000    0.642    0.764
##     jobopportunit     1.110    0.031   35.725    0.000    0.672    0.779
##     prntsthnkmprtn    0.727    0.029   24.910    0.000    0.440    0.555
##     importnttodwll    0.916    0.029   31.861    0.000    0.555    0.701
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.353    0.015   23.297    0.000    0.762    0.762
##     SVS               0.257    0.014   19.069    0.000    0.561    0.561
##   SCS ~~                                                                
##     SVS               0.175    0.011   16.401    0.000    0.474    0.474
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             1.970    0.019  104.200    0.000    1.970    2.295
##    .wishnotstudy      2.991    0.021  142.358    0.000    2.991    3.136
##    .boring            2.761    0.022  128.228    0.000    2.761    2.825
##    .learnthings       1.752    0.018   99.004    0.000    1.752    2.181
##    .like              2.061    0.020  101.020    0.000    2.061    2.225
##    .lookfrwrdtolrn    2.305    0.021  111.029    0.000    2.305    2.446
##    .howworks          1.610    0.016  102.378    0.000    1.610    2.255
##    .likeexperimnts    1.303    0.014   95.584    0.000    1.303    2.105
##    .favorite          2.481    0.023  108.948    0.000    2.481    2.400
##    .dowell            1.869    0.017  110.136    0.000    1.869    2.426
##    .moredifficult     3.237    0.019  169.638    0.000    3.237    3.737
##    .notstrength       3.115    0.020  153.401    0.000    3.115    3.379
##    .learnquickly      2.180    0.018  118.146    0.000    2.180    2.602
##    .goodtslvprblms    2.461    0.019  131.769    0.000    2.461    2.903
##    .goodatsci         2.262    0.019  120.025    0.000    2.262    2.644
##    .isharder          3.270    0.019  173.883    0.000    3.270    3.830
##    .makesconfusd      3.008    0.021  141.463    0.000    3.008    3.116
##    .willhelp          1.952    0.018  108.113    0.000    1.952    2.381
##    .needforother      2.212    0.019  115.936    0.000    2.212    2.554
##    .gettouni          2.172    0.021  104.717    0.000    2.172    2.307
##    .togetjob          2.247    0.021  105.324    0.000    2.247    2.320
##    .jobinvolves       2.535    0.022  114.688    0.000    2.535    2.526
##    .getahead          1.983    0.019  107.167    0.000    1.983    2.361
##    .jobopportunit     1.963    0.019  103.206    0.000    1.963    2.273
##    .prntsthnkmprtn    1.844    0.017  105.568    0.000    1.844    2.325
##    .importnttodwll    1.873    0.017  107.335    0.000    1.873    2.364
##     SLS               0.000                               0.000    0.000
##     SCS               0.000                               0.000    0.000
##     SVS               0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             0.163    0.006   26.516    0.000    0.163    0.221
##    .wishnotstudy      0.438    0.014   30.410    0.000    0.438    0.481
##    .boring            0.414    0.014   30.048    0.000    0.414    0.433
##    .learnthings       0.246    0.008   29.553    0.000    0.246    0.382
##    .like              0.139    0.006   23.853    0.000    0.139    0.162
##    .lookfrwrdtolrn    0.195    0.007   26.445    0.000    0.195    0.219
##    .howworks          0.343    0.011   31.343    0.000    0.343    0.673
##    .likeexperimnts    0.322    0.010   31.804    0.000    0.322    0.840
##    .favorite          0.334    0.012   28.638    0.000    0.334    0.313
##    .dowell            0.220    0.008   27.043    0.000    0.220    0.371
##    .moredifficult     0.393    0.013   29.406    0.000    0.393    0.524
##    .notstrength       0.383    0.013   28.478    0.000    0.383    0.451
##    .learnquickly      0.232    0.009   26.031    0.000    0.232    0.330
##    .goodtslvprblms    0.288    0.010   27.646    0.000    0.288    0.401
##    .goodatsci         0.438    0.015   30.110    0.000    0.438    0.598
##    .isharder          0.402    0.014   29.687    0.000    0.402    0.551
##    .makesconfusd      0.523    0.018   29.776    0.000    0.523    0.561
##    .willhelp          0.305    0.010   29.259    0.000    0.305    0.454
##    .needforother      0.360    0.012   29.540    0.000    0.360    0.480
##    .gettouni          0.232    0.009   25.382    0.000    0.232    0.261
##    .togetjob          0.263    0.010   25.983    0.000    0.263    0.280
##    .jobinvolves       0.457    0.016   29.261    0.000    0.457    0.454
##    .getahead          0.294    0.010   28.784    0.000    0.294    0.416
##    .jobopportunit     0.293    0.010   28.450    0.000    0.293    0.393
##    .prntsthnkmprtn    0.435    0.014   31.052    0.000    0.435    0.691
##    .importnttodwll    0.320    0.011   29.826    0.000    0.320    0.509
##     SLS               0.574    0.023   25.331    0.000    1.000    1.000
##     SCS               0.373    0.018   21.065    0.000    1.000    1.000
##     SVS               0.367    0.019   19.172    0.000    1.000    1.000

Weak Factorial Invariance

A CFA model with gender variable added, controlling for weak/metric factorial invariance.

  • average factor values and factor loadings are fixed, item intercepts, items’ residuals, and factors’ variance are checked.
weakInOutput <- cfa(model = cfaConfigure, data = timss_NOR,
                    group = "gender", group.equal = "loadings")
summary(weakInOutput, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-4 ended normally after 50 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                        162
##   Number of equality constraints                    23
##   Row rank of the constraints matrix                23
## 
##                                                   Used       Total
##   Number of observations per group         
##   Boy                                             1994        2378
##   Girl                                            2061        2379
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                    9721.612
##   Degrees of freedom                               615
##   P-value (Chi-square)                           0.000
## 
## Chi-square for each group:
## 
##   Boy                                         4911.625
##   Girl                                        4809.987
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            75524.783
##   Degrees of freedom                               650
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.878
##   Tucker-Lewis Index (TLI)                       0.871
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -100598.724
##   Loglikelihood unrestricted model (H1)     -95737.917
## 
##   Number of free parameters                        139
##   Akaike (AIC)                              201475.447
##   Bayesian (BIC)                            202352.218
##   Sample-size adjusted Bayesian (BIC)       201910.537
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.085
##   90 Percent Confidence Interval          0.084  0.087
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.060
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## 
## Group 1 [Boy]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.736    0.890
##     wshntst (.p2.)   -0.947    0.017  -56.396    0.000   -0.697   -0.710
##     boring  (.p3.)   -1.019    0.017  -61.142    0.000   -0.750   -0.750
##     lrnthng (.p4.)    0.852    0.013   66.682    0.000    0.627    0.802
##     like    (.p5.)    1.136    0.012   91.609    0.000    0.836    0.934
##     lkfrwrd (.p6.)    1.110    0.014   81.418    0.000    0.817    0.877
##     howwrks (.p7.)    0.594    0.013   44.944    0.000    0.437    0.630
##     lkxprmn (.p8.)    0.339    0.012   28.374    0.000    0.250    0.443
##     favorit (.p9.)    1.142    0.016   72.635    0.000    0.841    0.837
##   SCS =~                                                                
##     dowell            1.000                               0.584    0.794
##     mrdffcl (.11.)   -0.956    0.021  -44.943    0.000   -0.559   -0.661
##     ntstrng (.12.)   -1.100    0.022  -49.979    0.000   -0.642   -0.731
##     lrnqckl (.13.)    1.103    0.019   56.685    0.000    0.644    0.805
##     gdtslvp (.14.)    1.086    0.020   53.533    0.000    0.635    0.769
##     goodtsc (.15.)    0.915    0.022   42.104    0.000    0.535    0.622
##     ishardr (.16.)   -0.906    0.021  -42.287    0.000   -0.530   -0.616
##     mkscnfs (.17.)   -1.012    0.024  -42.582    0.000   -0.591   -0.634
##   SVS =~                                                                
##     willhlp           1.000                               0.628    0.779
##     ndfrthr (.19.)    1.010    0.021   48.443    0.000    0.634    0.731
##     gettoun (.20.)    1.261    0.022   57.966    0.000    0.792    0.847
##     togetjb (.21.)    1.284    0.022   57.182    0.000    0.806    0.838
##     jbnvlvs (.22.)    1.183    0.024   48.953    0.000    0.743    0.734
##     getahed (.23.)    1.063    0.020   52.459    0.000    0.667    0.781
##     jbpprtn (.24.)    1.064    0.020   52.270    0.000    0.668    0.778
##     prntsth (.25.)    0.729    0.019   37.812    0.000    0.458    0.600
##     imprtnt (.26.)    0.911    0.019   47.644    0.000    0.572    0.724
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.326    0.013   24.179    0.000    0.758    0.758
##     SVS               0.271    0.013   20.568    0.000    0.587    0.587
##   SCS ~~                                                                
##     SVS               0.178    0.010   17.275    0.000    0.485    0.485
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             1.722    0.019   92.986    0.000    1.722    2.082
##    .wishnotstudy      3.111    0.022  141.496    0.000    3.111    3.169
##    .boring            2.991    0.022  133.501    0.000    2.991    2.990
##    .learnthings       1.581    0.018   90.300    0.000    1.581    2.022
##    .like              1.802    0.020   89.937    0.000    1.802    2.014
##    .lookfrwrdtolrn    2.018    0.021   96.664    0.000    2.018    2.165
##    .howworks          1.544    0.016   99.302    0.000    1.544    2.224
##    .likeexperimnts    1.239    0.013   98.202    0.000    1.239    2.199
##    .favorite          2.107    0.022   93.737    0.000    2.107    2.099
##    .dowell            1.716    0.016  104.114    0.000    1.716    2.332
##    .moredifficult     3.302    0.019  174.527    0.000    3.302    3.908
##    .notstrength       3.314    0.020  168.432    0.000    3.314    3.772
##    .learnquickly      1.905    0.018  106.295    0.000    1.905    2.380
##    .goodtslvprblms    2.121    0.018  114.738    0.000    2.121    2.569
##    .goodatsci         2.089    0.019  108.627    0.000    2.089    2.433
##    .isharder          3.356    0.019  174.384    0.000    3.356    3.905
##    .makesconfusd      3.183    0.021  152.444    0.000    3.183    3.414
##    .willhelp          1.910    0.018  105.886    0.000    1.910    2.371
##    .needforother      2.120    0.019  109.101    0.000    2.120    2.443
##    .gettouni          2.109    0.021  100.722    0.000    2.109    2.256
##    .togetjob          2.202    0.022  102.304    0.000    2.202    2.291
##    .jobinvolves       2.447    0.023  108.074    0.000    2.447    2.420
##    .getahead          1.989    0.019  104.109    0.000    1.989    2.331
##    .jobopportunit     1.868    0.019   97.175    0.000    1.868    2.176
##    .prntsthnkmprtn    1.783    0.017  104.448    0.000    1.783    2.339
##    .importnttodwll    1.777    0.018  100.518    0.000    1.777    2.251
##     SLS               0.000                               0.000    0.000
##     SCS               0.000                               0.000    0.000
##     SVS               0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             0.142    0.005   26.279    0.000    0.142    0.208
##    .wishnotstudy      0.478    0.016   30.193    0.000    0.478    0.496
##    .boring            0.438    0.015   29.823    0.000    0.438    0.438
##    .learnthings       0.218    0.007   29.102    0.000    0.218    0.357
##    .like              0.102    0.005   22.101    0.000    0.102    0.128
##    .lookfrwrdtolrn    0.201    0.007   26.977    0.000    0.201    0.231
##    .howworks          0.291    0.009   30.678    0.000    0.291    0.603
##    .likeexperimnts    0.255    0.008   31.243    0.000    0.255    0.804
##    .favorite          0.301    0.011   28.345    0.000    0.301    0.299
##    .dowell            0.200    0.008   26.412    0.000    0.200    0.370
##    .moredifficult     0.401    0.014   29.241    0.000    0.401    0.562
##    .notstrength       0.359    0.013   28.111    0.000    0.359    0.465
##    .learnquickly      0.225    0.009   26.004    0.000    0.225    0.352
##    .goodtslvprblms    0.279    0.010   27.214    0.000    0.279    0.409
##    .goodatsci         0.452    0.015   29.680    0.000    0.452    0.613
##    .isharder          0.458    0.015   29.744    0.000    0.458    0.620
##    .makesconfusd      0.520    0.018   29.559    0.000    0.520    0.598
##    .willhelp          0.255    0.009   28.179    0.000    0.255    0.393
##    .needforother      0.351    0.012   29.070    0.000    0.351    0.466
##    .gettouni          0.248    0.010   26.013    0.000    0.248    0.283
##    .togetjob          0.275    0.010   26.377    0.000    0.275    0.297
##    .jobinvolves       0.471    0.016   29.015    0.000    0.471    0.461
##    .getahead          0.284    0.010   28.137    0.000    0.284    0.389
##    .jobopportunit     0.291    0.010   28.211    0.000    0.291    0.394
##    .prntsthnkmprtn    0.372    0.012   30.343    0.000    0.372    0.640
##    .importnttodwll    0.296    0.010   29.157    0.000    0.296    0.475
##     SLS               0.542    0.020   27.306    0.000    1.000    1.000
##     SCS               0.341    0.014   23.771    0.000    1.000    1.000
##     SVS               0.394    0.017   23.420    0.000    1.000    1.000
## 
## 
## Group 2 [Girl]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.744    0.878
##     wshntst (.p2.)   -0.947    0.017  -56.396    0.000   -0.704   -0.730
##     boring  (.p3.)   -1.019    0.017  -61.142    0.000   -0.758   -0.763
##     lrnthng (.p4.)    0.852    0.013   66.682    0.000    0.634    0.788
##     like    (.p5.)    1.136    0.012   91.609    0.000    0.845    0.915
##     lkfrwrd (.p6.)    1.110    0.014   81.418    0.000    0.826    0.882
##     howwrks (.p7.)    0.594    0.013   44.944    0.000    0.442    0.603
##     lkxprmn (.p8.)    0.339    0.012   28.374    0.000    0.252    0.407
##     favorit (.p9.)    1.142    0.016   72.635    0.000    0.850    0.826
##   SCS =~                                                                
##     dowell            1.000                               0.617    0.796
##     mrdffcl (.11.)   -0.956    0.021  -44.943    0.000   -0.590   -0.684
##     ntstrng (.12.)   -1.100    0.022  -49.979    0.000   -0.678   -0.737
##     lrnqckl (.13.)    1.103    0.019   56.685    0.000    0.680    0.817
##     gdtslvp (.14.)    1.086    0.020   53.533    0.000    0.670    0.782
##     goodtsc (.15.)    0.915    0.022   42.104    0.000    0.564    0.650
##     ishardr (.16.)   -0.906    0.021  -42.287    0.000   -0.559   -0.659
##     mkscnfs (.17.)   -1.012    0.024  -42.582    0.000   -0.624   -0.652
##   SVS =~                                                                
##     willhlp           1.000                               0.625    0.752
##     ndfrthr (.19.)    1.010    0.021   48.443    0.000    0.631    0.727
##     gettoun (.20.)    1.261    0.022   57.966    0.000    0.788    0.848
##     togetjb (.21.)    1.284    0.022   57.182    0.000    0.802    0.837
##     jbnvlvs (.22.)    1.183    0.024   48.953    0.000    0.739    0.736
##     getahed (.23.)    1.063    0.020   52.459    0.000    0.664    0.778
##     jbpprtn (.24.)    1.064    0.020   52.270    0.000    0.665    0.776
##     prntsth (.25.)    0.729    0.019   37.812    0.000    0.456    0.570
##     imprtnt (.26.)    0.911    0.019   47.644    0.000    0.569    0.712
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.350    0.014   24.636    0.000    0.764    0.764
##     SVS               0.263    0.013   20.255    0.000    0.565    0.565
##   SCS ~~                                                                
##     SVS               0.184    0.011   17.392    0.000    0.479    0.479
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             1.970    0.019  105.521    0.000    1.970    2.324
##    .wishnotstudy      2.991    0.021  140.636    0.000    2.991    3.098
##    .boring            2.761    0.022  126.133    0.000    2.761    2.778
##    .learnthings       1.752    0.018   98.830    0.000    1.752    2.177
##    .like              2.061    0.020  101.284    0.000    2.061    2.231
##    .lookfrwrdtolrn    2.305    0.021  111.676    0.000    2.305    2.460
##    .howworks          1.610    0.016   99.624    0.000    1.610    2.194
##    .likeexperimnts    1.303    0.014   95.300    0.000    1.303    2.099
##    .favorite          2.481    0.023  109.516    0.000    2.481    2.412
##    .dowell            1.869    0.017  109.641    0.000    1.869    2.415
##    .moredifficult     3.237    0.019  170.341    0.000    3.237    3.752
##    .notstrength       3.115    0.020  153.765    0.000    3.115    3.387
##    .learnquickly      2.180    0.018  118.940    0.000    2.180    2.620
##    .goodtslvprblms    2.461    0.019  130.449    0.000    2.461    2.873
##    .goodatsci         2.262    0.019  118.329    0.000    2.262    2.606
##    .isharder          3.270    0.019  175.195    0.000    3.270    3.859
##    .makesconfusd      3.008    0.021  142.725    0.000    3.008    3.144
##    .willhelp          1.952    0.018  106.746    0.000    1.952    2.351
##    .needforother      2.212    0.019  115.659    0.000    2.212    2.548
##    .gettouni          2.172    0.020  106.083    0.000    2.172    2.337
##    .togetjob          2.247    0.021  106.451    0.000    2.247    2.345
##    .jobinvolves       2.535    0.022  114.632    0.000    2.535    2.525
##    .getahead          1.983    0.019  105.531    0.000    1.983    2.325
##    .jobopportunit     1.963    0.019  104.061    0.000    1.963    2.292
##    .prntsthnkmprtn    1.844    0.018  104.666    0.000    1.844    2.305
##    .importnttodwll    1.873    0.018  106.407    0.000    1.873    2.344
##     SLS               0.000                               0.000    0.000
##     SCS               0.000                               0.000    0.000
##     SVS               0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             0.165    0.006   26.886    0.000    0.165    0.229
##    .wishnotstudy      0.436    0.014   30.349    0.000    0.436    0.468
##    .boring            0.412    0.014   29.953    0.000    0.412    0.418
##    .learnthings       0.246    0.008   29.582    0.000    0.246    0.379
##    .like              0.140    0.006   24.160    0.000    0.140    0.164
##    .lookfrwrdtolrn    0.196    0.007   26.673    0.000    0.196    0.223
##    .howworks          0.343    0.011   31.228    0.000    0.343    0.637
##    .likeexperimnts    0.321    0.010   31.799    0.000    0.321    0.835
##    .favorite          0.335    0.012   28.775    0.000    0.335    0.317
##    .dowell            0.219    0.008   27.135    0.000    0.219    0.366
##    .moredifficult     0.396    0.013   29.600    0.000    0.396    0.533
##    .notstrength       0.386    0.013   28.704    0.000    0.386    0.457
##    .learnquickly      0.231    0.009   26.354    0.000    0.231    0.333
##    .goodtslvprblms    0.285    0.010   27.599    0.000    0.285    0.389
##    .goodatsci         0.435    0.014   30.014    0.000    0.435    0.577
##    .isharder          0.406    0.014   29.905    0.000    0.406    0.565
##    .makesconfusd      0.527    0.018   29.999    0.000    0.527    0.575
##    .willhelp          0.299    0.010   29.097    0.000    0.299    0.434
##    .needforother      0.356    0.012   29.516    0.000    0.356    0.472
##    .gettouni          0.243    0.009   26.176    0.000    0.243    0.282
##    .togetjob          0.275    0.010   26.676    0.000    0.275    0.300
##    .jobinvolves       0.461    0.016   29.366    0.000    0.461    0.458
##    .getahead          0.287    0.010   28.555    0.000    0.287    0.395
##    .jobopportunit     0.291    0.010   28.588    0.000    0.291    0.397
##    .prntsthnkmprtn    0.432    0.014   30.999    0.000    0.432    0.675
##    .importnttodwll    0.315    0.011   29.730    0.000    0.315    0.493
##     SLS               0.554    0.020   27.539    0.000    1.000    1.000
##     SCS               0.380    0.016   24.077    0.000    1.000    1.000
##     SVS               0.390    0.017   23.486    0.000    1.000    1.000

Strong Factorial Invariance

A CFA model with gender variable added, controlling for strong/scalar factorial invariance.

  • factor loadings and item intercepts are fixed, average factor values, items’ residuals, and factors’ variance are checked.
strongInOutput <- cfa(model = cfaConfigure, data = timss_NOR,
                    group = "gender",
                    group.equal = c("loadings", "intercepts"))
summary(strongInOutput, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-4 ended normally after 84 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                        165
##   Number of equality constraints                    49
##   Row rank of the constraints matrix                49
## 
##                                                   Used       Total
##   Number of observations per group         
##   Boy                                             1994        2378
##   Girl                                            2061        2379
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                    9977.707
##   Degrees of freedom                               638
##   P-value (Chi-square)                           0.000
## 
## Chi-square for each group:
## 
##   Boy                                         5042.550
##   Girl                                        4935.157
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            75524.783
##   Degrees of freedom                               650
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.875
##   Tucker-Lewis Index (TLI)                       0.873
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -100726.771
##   Loglikelihood unrestricted model (H1)     -95737.917
## 
##   Number of free parameters                        116
##   Akaike (AIC)                              201685.542
##   Bayesian (BIC)                            202417.236
##   Sample-size adjusted Bayesian (BIC)       202048.639
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.085
##   90 Percent Confidence Interval          0.084  0.086
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.060
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## 
## Group 1 [Boy]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.737    0.890
##     wshntst (.p2.)   -0.934    0.017  -56.456    0.000   -0.688   -0.704
##     boring  (.p3.)   -1.016    0.016  -61.903    0.000   -0.749   -0.749
##     lrnthng (.p4.)    0.847    0.013   67.374    0.000    0.625    0.801
##     like    (.p5.)    1.133    0.012   92.929    0.000    0.835    0.934
##     lkfrwrd (.p6.)    1.112    0.013   82.715    0.000    0.819    0.877
##     howwrks (.p7.)    0.585    0.013   44.904    0.000    0.431    0.623
##     lkxprmn (.p8.)    0.337    0.012   28.597    0.000    0.248    0.441
##     favorit (.p9.)    1.152    0.016   73.936    0.000    0.849    0.839
##   SCS =~                                                                
##     dowell            1.000                               0.581    0.792
##     mrdffcl (.11.)   -0.940    0.021  -44.547    0.000   -0.546   -0.649
##     ntstrng (.12.)   -1.100    0.022  -50.305    0.000   -0.639   -0.728
##     lrnqckl (.13.)    1.120    0.019   57.647    0.000    0.650    0.809
##     gdtslvp (.14.)    1.112    0.020   54.558    0.000    0.646    0.774
##     goodtsc (.15.)    0.921    0.022   42.710    0.000    0.535    0.624
##     ishardr (.16.)   -0.895    0.021  -42.078    0.000   -0.520   -0.607
##     mkscnfs (.17.)   -1.012    0.024  -42.881    0.000   -0.588   -0.631
##   SVS =~                                                                
##     willhlp           1.000                               0.627    0.779
##     ndfrthr (.19.)    1.012    0.021   48.496    0.000    0.635    0.731
##     gettoun (.20.)    1.262    0.022   58.000    0.000    0.792    0.847
##     togetjb (.21.)    1.284    0.022   57.196    0.000    0.805    0.838
##     jbnvlvs (.22.)    1.185    0.024   49.009    0.000    0.743    0.735
##     getahed (.23.)    1.060    0.020   52.358    0.000    0.665    0.780
##     jbpprtn (.24.)    1.066    0.020   52.312    0.000    0.669    0.778
##     prntsth (.25.)    0.731    0.019   37.870    0.000    0.458    0.601
##     imprtnt (.26.)    0.913    0.019   47.700    0.000    0.573    0.725
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.325    0.013   24.227    0.000    0.759    0.759
##     SVS               0.271    0.013   20.576    0.000    0.587    0.587
##   SCS ~~                                                                
##     SVS               0.177    0.010   17.335    0.000    0.487    0.487
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy   (.59.)    1.727    0.018   97.049    0.000    1.727    2.087
##    .wshntst (.60.)    3.164    0.019  166.661    0.000    3.164    3.237
##    .boring  (.61.)    2.996    0.020  150.457    0.000    2.996    2.997
##    .lrnthng (.62.)    1.567    0.016   97.466    0.000    1.567    2.009
##    .like    (.63.)    1.798    0.020   91.563    0.000    1.798    2.011
##    .lkfrwrd (.64.)    2.030    0.020  102.086    0.000    2.030    2.174
##    .howwrks (.65.)    1.510    0.013  114.111    0.000    1.510    2.183
##    .lkxprmn (.66.)    1.232    0.010  121.183    0.000    1.232    2.189
##    .favorit (.67.)    2.156    0.021  101.603    0.000    2.156    2.131
##    .dowell  (.68.)    1.695    0.015  111.521    0.000    1.695    2.312
##    .mrdffcl (.69.)    3.363    0.016  207.965    0.000    3.363    3.998
##    .ntstrng (.70.)    3.322    0.018  188.414    0.000    3.322    3.783
##    .lrnqckl (.71.)    1.933    0.017  115.239    0.000    1.933    2.404
##    .gdtslvp (.72.)    2.183    0.017  127.532    0.000    2.183    2.614
##    .goodtsc (.73.)    2.085    0.016  128.244    0.000    2.085    2.429
##    .ishardr (.74.)    3.404    0.016  213.176    0.000    3.404    3.974
##    .mkscnfs (.75.)    3.194    0.018  179.634    0.000    3.194    3.430
##    .willhlp (.76.)    1.904    0.016  115.467    0.000    1.904    2.364
##    .ndfrthr (.77.)    2.138    0.017  124.039    0.000    2.138    2.462
##    .gettoun (.78.)    2.105    0.020  107.016    0.000    2.105    2.252
##    .togetjb (.79.)    2.188    0.020  108.682    0.000    2.188    2.278
##    .jbnvlvs (.80.)    2.458    0.020  122.463    0.000    2.458    2.430
##    .getahed (.81.)    1.956    0.017  112.757    0.000    1.956    2.294
##    .jbpprtn (.82.)    1.886    0.017  108.023    0.000    1.886    2.195
##    .prntsth (.83.)    1.793    0.014  124.409    0.000    1.793    2.350
##    .imprtnt (.84.)    1.799    0.016  114.707    0.000    1.799    2.276
##     SLS               0.000                               0.000    0.000
##     SCS               0.000                               0.000    0.000
##     SVS               0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             0.142    0.005   26.258    0.000    0.142    0.207
##    .wishnotstudy      0.483    0.016   30.238    0.000    0.483    0.505
##    .boring            0.439    0.015   29.830    0.000    0.439    0.439
##    .learnthings       0.219    0.008   29.127    0.000    0.219    0.359
##    .like              0.102    0.005   22.105    0.000    0.102    0.128
##    .lookfrwrdtolrn    0.201    0.007   26.948    0.000    0.201    0.230
##    .howworks          0.292    0.010   30.708    0.000    0.292    0.611
##    .likeexperimnts    0.255    0.008   31.246    0.000    0.255    0.805
##    .favorite          0.303    0.011   28.304    0.000    0.303    0.296
##    .dowell            0.200    0.008   26.474    0.000    0.200    0.373
##    .moredifficult     0.409    0.014   29.384    0.000    0.409    0.578
##    .notstrength       0.363    0.013   28.175    0.000    0.363    0.470
##    .learnquickly      0.224    0.009   25.849    0.000    0.224    0.346
##    .goodtslvprblms    0.280    0.010   27.069    0.000    0.280    0.402
##    .goodatsci         0.450    0.015   29.667    0.000    0.450    0.611
##    .isharder          0.463    0.016   29.831    0.000    0.463    0.632
##    .makesconfusd      0.522    0.018   29.590    0.000    0.522    0.602
##    .willhelp          0.255    0.009   28.181    0.000    0.255    0.393
##    .needforother      0.351    0.012   29.064    0.000    0.351    0.466
##    .gettouni          0.248    0.010   26.006    0.000    0.248    0.283
##    .togetjob          0.275    0.010   26.381    0.000    0.275    0.298
##    .jobinvolves       0.471    0.016   29.009    0.000    0.471    0.460
##    .getahead          0.285    0.010   28.173    0.000    0.285    0.392
##    .jobopportunit     0.291    0.010   28.205    0.000    0.291    0.394
##    .prntsthnkmprtn    0.372    0.012   30.339    0.000    0.372    0.639
##    .importnttodwll    0.297    0.010   29.151    0.000    0.297    0.475
##     SLS               0.543    0.020   27.381    0.000    1.000    1.000
##     SCS               0.337    0.014   23.812    0.000    1.000    1.000
##     SVS               0.393    0.017   23.420    0.000    1.000    1.000
## 
## 
## Group 2 [Girl]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.745    0.878
##     wshntst (.p2.)   -0.934    0.017  -56.456    0.000   -0.696   -0.724
##     boring  (.p3.)   -1.016    0.016  -61.903    0.000   -0.757   -0.763
##     lrnthng (.p4.)    0.847    0.013   67.374    0.000    0.631    0.786
##     like    (.p5.)    1.133    0.012   92.929    0.000    0.844    0.914
##     lkfrwrd (.p6.)    1.112    0.013   82.715    0.000    0.828    0.882
##     howwrks (.p7.)    0.585    0.013   44.904    0.000    0.436    0.596
##     lkxprmn (.p8.)    0.337    0.012   28.597    0.000    0.251    0.405
##     favorit (.p9.)    1.152    0.016   73.936    0.000    0.858    0.828
##   SCS =~                                                                
##     dowell            1.000                               0.613    0.794
##     mrdffcl (.11.)   -0.940    0.021  -44.547    0.000   -0.576   -0.672
##     ntstrng (.12.)   -1.100    0.022  -50.305    0.000   -0.674   -0.734
##     lrnqckl (.13.)    1.120    0.019   57.647    0.000    0.686    0.820
##     gdtslvp (.14.)    1.112    0.020   54.558    0.000    0.682    0.786
##     goodtsc (.15.)    0.921    0.022   42.710    0.000    0.565    0.651
##     ishardr (.16.)   -0.895    0.021  -42.078    0.000   -0.548   -0.650
##     mkscnfs (.17.)   -1.012    0.024  -42.881    0.000   -0.620   -0.649
##   SVS =~                                                                
##     willhlp           1.000                               0.624    0.752
##     ndfrthr (.19.)    1.012    0.021   48.496    0.000    0.632    0.727
##     gettoun (.20.)    1.262    0.022   58.000    0.000    0.788    0.848
##     togetjb (.21.)    1.284    0.022   57.196    0.000    0.801    0.837
##     jbnvlvs (.22.)    1.185    0.024   49.009    0.000    0.740    0.737
##     getahed (.23.)    1.060    0.020   52.358    0.000    0.662    0.776
##     jbpprtn (.24.)    1.066    0.020   52.312    0.000    0.666    0.777
##     prntsth (.25.)    0.731    0.019   37.870    0.000    0.456    0.570
##     imprtnt (.26.)    0.913    0.019   47.700    0.000    0.570    0.712
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.349    0.014   24.683    0.000    0.765    0.765
##     SVS               0.263    0.013   20.259    0.000    0.565    0.565
##   SCS ~~                                                                
##     SVS               0.184    0.011   17.433    0.000    0.480    0.480
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy   (.59.)    1.727    0.018   97.049    0.000    1.727    2.036
##    .wshntst (.60.)    3.164    0.019  166.661    0.000    3.164    3.294
##    .boring  (.61.)    2.996    0.020  150.457    0.000    2.996    3.017
##    .lrnthng (.62.)    1.567    0.016   97.466    0.000    1.567    1.951
##    .like    (.63.)    1.798    0.020   91.563    0.000    1.798    1.948
##    .lkfrwrd (.64.)    2.030    0.020  102.086    0.000    2.030    2.162
##    .howwrks (.65.)    1.510    0.013  114.111    0.000    1.510    2.066
##    .lkxprmn (.66.)    1.232    0.010  121.183    0.000    1.232    1.986
##    .favorit (.67.)    2.156    0.021  101.603    0.000    2.156    2.080
##    .dowell  (.68.)    1.695    0.015  111.521    0.000    1.695    2.197
##    .mrdffcl (.69.)    3.363    0.016  207.965    0.000    3.363    3.920
##    .ntstrng (.70.)    3.322    0.018  188.414    0.000    3.322    3.617
##    .lrnqckl (.71.)    1.933    0.017  115.239    0.000    1.933    2.311
##    .gdtslvp (.72.)    2.183    0.017  127.532    0.000    2.183    2.517
##    .goodtsc (.73.)    2.085    0.016  128.244    0.000    2.085    2.404
##    .ishardr (.74.)    3.404    0.016  213.176    0.000    3.404    4.035
##    .mkscnfs (.75.)    3.194    0.018  179.634    0.000    3.194    3.343
##    .willhlp (.76.)    1.904    0.016  115.467    0.000    1.904    2.293
##    .ndfrthr (.77.)    2.138    0.017  124.039    0.000    2.138    2.460
##    .gettoun (.78.)    2.105    0.020  107.016    0.000    2.105    2.265
##    .togetjb (.79.)    2.188    0.020  108.682    0.000    2.188    2.285
##    .jbnvlvs (.80.)    2.458    0.020  122.463    0.000    2.458    2.448
##    .getahed (.81.)    1.956    0.017  112.757    0.000    1.956    2.295
##    .jbpprtn (.82.)    1.886    0.017  108.023    0.000    1.886    2.201
##    .prntsth (.83.)    1.793    0.014  124.409    0.000    1.793    2.241
##    .imprtnt (.84.)    1.799    0.016  114.707    0.000    1.799    2.248
##     SLS               0.237    0.024    9.893    0.000    0.318    0.318
##     SCS               0.195    0.020    9.836    0.000    0.319    0.319
##     SVS               0.056    0.020    2.738    0.006    0.089    0.089
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy             0.165    0.006   26.864    0.000    0.165    0.229
##    .wishnotstudy      0.439    0.014   30.404    0.000    0.439    0.476
##    .boring            0.413    0.014   29.960    0.000    0.413    0.419
##    .learnthings       0.246    0.008   29.608    0.000    0.246    0.382
##    .like              0.140    0.006   24.168    0.000    0.140    0.164
##    .lookfrwrdtolrn    0.195    0.007   26.634    0.000    0.195    0.221
##    .howworks          0.344    0.011   31.256    0.000    0.344    0.644
##    .likeexperimnts    0.322    0.010   31.802    0.000    0.322    0.836
##    .favorite          0.338    0.012   28.731    0.000    0.338    0.314
##    .dowell            0.220    0.008   27.203    0.000    0.220    0.369
##    .moredifficult     0.404    0.014   29.751    0.000    0.404    0.549
##    .notstrength       0.389    0.014   28.757    0.000    0.389    0.461
##    .learnquickly      0.229    0.009   26.187    0.000    0.229    0.327
##    .goodtslvprblms    0.287    0.010   27.455    0.000    0.287    0.382
##    .goodatsci         0.433    0.014   30.000    0.000    0.433    0.576
##    .isharder          0.411    0.014   30.008    0.000    0.411    0.577
##    .makesconfusd      0.529    0.018   30.027    0.000    0.529    0.579
##    .willhelp          0.300    0.010   29.099    0.000    0.300    0.435
##    .needforother      0.356    0.012   29.510    0.000    0.356    0.471
##    .gettouni          0.243    0.009   26.169    0.000    0.243    0.282
##    .togetjob          0.275    0.010   26.679    0.000    0.275    0.300
##    .jobinvolves       0.461    0.016   29.359    0.000    0.461    0.458
##    .getahead          0.289    0.010   28.589    0.000    0.289    0.397
##    .jobopportunit     0.292    0.010   28.582    0.000    0.292    0.397
##    .prntsthnkmprtn    0.432    0.014   30.996    0.000    0.432    0.675
##    .importnttodwll    0.316    0.011   29.724    0.000    0.316    0.493
##     SLS               0.555    0.020   27.617    0.000    1.000    1.000
##     SCS               0.376    0.016   24.119    0.000    1.000    1.000
##     SVS               0.390    0.017   23.487    0.000    1.000    1.000

Strict Factorial Invariance

A CFA model with gender variable added, controlling for strict factorial invariance.

  • factor loadings,items’ residuals, and item intercepts are fixed, average factor values, and factors’ variance are checked.
strictInOutput <- cfa(model = cfaConfigure, data = timss_NOR,
                    group = "gender",
                    group.equal = c("loadings", "intercepts", "residuals"))
summary(strictInOutput, standardized = TRUE, fit.measures = TRUE)
## lavaan 0.6-4 ended normally after 86 iterations
## 
##   Optimization method                           NLMINB
##   Number of free parameters                        165
##   Number of equality constraints                    75
##   Row rank of the constraints matrix                75
## 
##                                                   Used       Total
##   Number of observations per group         
##   Boy                                             1994        2378
##   Girl                                            2061        2379
## 
##   Estimator                                         ML
##   Model Fit Test Statistic                   10104.734
##   Degrees of freedom                               664
##   P-value (Chi-square)                           0.000
## 
## Chi-square for each group:
## 
##   Boy                                         5115.071
##   Girl                                        4989.662
## 
## Model test baseline model:
## 
##   Minimum Function Test Statistic            75524.783
##   Degrees of freedom                               650
##   P-value                                        0.000
## 
## User model versus baseline model:
## 
##   Comparative Fit Index (CFI)                    0.874
##   Tucker-Lewis Index (TLI)                       0.877
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)             -100790.284
##   Loglikelihood unrestricted model (H1)     -95737.917
## 
##   Number of free parameters                         90
##   Akaike (AIC)                              201760.569
##   Bayesian (BIC)                            202328.262
##   Sample-size adjusted Bayesian (BIC)       202042.282
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.084
##   90 Percent Confidence Interval          0.082  0.085
##   P-value RMSEA <= 0.05                          0.000
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.061
## 
## Parameter Estimates:
## 
##   Information                                 Expected
##   Information saturated (h1) model          Structured
##   Standard Errors                             Standard
## 
## 
## Group 1 [Boy]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.737    0.883
##     wshntst (.p2.)   -0.934    0.017  -56.506    0.000   -0.688   -0.712
##     boring  (.p3.)   -1.016    0.016  -61.965    0.000   -0.749   -0.754
##     lrnthng (.p4.)    0.846    0.013   67.256    0.000    0.623    0.791
##     like    (.p5.)    1.132    0.012   92.531    0.000    0.834    0.923
##     lkfrwrd (.p6.)    1.111    0.013   82.754    0.000    0.818    0.879
##     howwrks (.p7.)    0.580    0.013   44.509    0.000    0.428    0.604
##     lkxprmn (.p8.)    0.335    0.012   28.311    0.000    0.247    0.417
##     favorit (.p9.)    1.151    0.016   73.849    0.000    0.848    0.831
##   SCS =~                                                                
##     dowell            1.000                               0.580    0.785
##     mrdffcl (.11.)   -0.941    0.021  -44.570    0.000   -0.546   -0.651
##     ntstrng (.12.)   -1.101    0.022  -50.373    0.000   -0.639   -0.722
##     lrnqckl (.13.)    1.120    0.019   57.645    0.000    0.650    0.807
##     gdtslvp (.14.)    1.112    0.020   54.534    0.000    0.645    0.771
##     goodtsc (.15.)    0.922    0.022   42.689    0.000    0.535    0.627
##     ishardr (.16.)   -0.894    0.021  -41.952    0.000   -0.519   -0.617
##     mkscnfs (.17.)   -1.012    0.024  -42.899    0.000   -0.587   -0.630
##   SVS =~                                                                
##     willhlp           1.000                               0.626    0.765
##     ndfrthr (.19.)    1.014    0.021   48.406    0.000    0.635    0.730
##     gettoun (.20.)    1.264    0.022   57.828    0.000    0.791    0.848
##     togetjb (.21.)    1.286    0.023   57.016    0.000    0.805    0.838
##     jbnvlvs (.22.)    1.187    0.024   48.901    0.000    0.743    0.736
##     getahed (.23.)    1.062    0.020   52.226    0.000    0.665    0.779
##     jbpprtn (.24.)    1.068    0.020   52.178    0.000    0.668    0.778
##     prntsth (.25.)    0.731    0.019   37.689    0.000    0.457    0.585
##     imprtnt (.26.)    0.914    0.019   47.559    0.000    0.572    0.719
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.326    0.013   24.221    0.000    0.762    0.762
##     SVS               0.271    0.013   20.531    0.000    0.588    0.588
##   SCS ~~                                                                
##     SVS               0.176    0.010   17.250    0.000    0.485    0.485
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy   (.59.)    1.727    0.018   96.905    0.000    1.727    2.071
##    .wshntst (.60.)    3.162    0.019  166.721    0.000    3.162    3.274
##    .boring  (.61.)    2.996    0.020  150.620    0.000    2.996    3.018
##    .lrnthng (.62.)    1.566    0.016   97.385    0.000    1.566    1.987
##    .like    (.63.)    1.798    0.020   91.239    0.000    1.798    1.989
##    .lkfrwrd (.64.)    2.030    0.020  102.260    0.000    2.030    2.181
##    .howwrks (.65.)    1.507    0.013  114.015    0.000    1.507    2.128
##    .lkxprmn (.66.)    1.231    0.010  120.385    0.000    1.231    2.080
##    .favorit (.67.)    2.159    0.021  101.692    0.000    2.159    2.117
##    .dowell  (.68.)    1.695    0.015  111.261    0.000    1.695    2.291
##    .mrdffcl (.69.)    3.362    0.016  208.041    0.000    3.362    4.007
##    .ntstrng (.70.)    3.322    0.018  188.100    0.000    3.322    3.752
##    .lrnqckl (.71.)    1.934    0.017  115.245    0.000    1.934    2.400
##    .gdtslvp (.72.)    2.184    0.017  127.597    0.000    2.184    2.609
##    .goodtsc (.73.)    2.085    0.016  128.351    0.000    2.085    2.444
##    .ishardr (.74.)    3.401    0.016  213.605    0.000    3.401    4.048
##    .mkscnfs (.75.)    3.194    0.018  179.621    0.000    3.194    3.424
##    .willhlp (.76.)    1.903    0.017  115.273    0.000    1.903    2.326
##    .ndfrthr (.77.)    2.138    0.017  124.045    0.000    2.138    2.459
##    .gettoun (.78.)    2.105    0.020  107.094    0.000    2.105    2.256
##    .togetjb (.79.)    2.188    0.020  108.719    0.000    2.188    2.278
##    .jbnvlvs (.80.)    2.458    0.020  122.524    0.000    2.458    2.436
##    .getahed (.81.)    1.956    0.017  112.767    0.000    1.956    2.292
##    .jbpprtn (.82.)    1.886    0.017  108.056    0.000    1.886    2.195
##    .prntsth (.83.)    1.793    0.014  124.256    0.000    1.793    2.293
##    .imprtnt (.84.)    1.800    0.016  114.724    0.000    1.800    2.261
##     SLS               0.000                               0.000    0.000
##     SCS               0.000                               0.000    0.000
##     SVS               0.000                               0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy   (.27.)    0.153    0.004   37.344    0.000    0.153    0.220
##    .wshntst (.28.)    0.460    0.011   42.825    0.000    0.460    0.493
##    .boring  (.29.)    0.425    0.010   42.202    0.000    0.425    0.431
##    .lrnthng (.30.)    0.233    0.006   41.445    0.000    0.233    0.375
##    .like    (.31.)    0.121    0.004   32.601    0.000    0.121    0.149
##    .lkfrwrd (.32.)    0.197    0.005   37.684    0.000    0.197    0.228
##    .howwrks (.33.)    0.319    0.007   43.805    0.000    0.319    0.636
##    .lkxprmn (.34.)    0.289    0.006   44.579    0.000    0.289    0.826
##    .favorit (.35.)    0.321    0.008   40.206    0.000    0.321    0.309
##    .dowell  (.36.)    0.210    0.006   37.654    0.000    0.210    0.384
##    .mrdffcl (.37.)    0.406    0.010   41.666    0.000    0.406    0.576
##    .ntstrng (.38.)    0.375    0.009   40.030    0.000    0.375    0.479
##    .lrnqckl (.39.)    0.227    0.006   36.444    0.000    0.227    0.349
##    .gdtslvp (.40.)    0.284    0.007   38.285    0.000    0.284    0.406
##    .goodtsc (.41.)    0.442    0.011   42.067    0.000    0.442    0.607
##    .ishardr (.42.)    0.437    0.010   42.212    0.000    0.437    0.619
##    .mkscnfs (.43.)    0.525    0.013   42.025    0.000    0.525    0.604
##    .willhlp (.44.)    0.278    0.007   40.381    0.000    0.278    0.415
##    .ndfrthr (.45.)    0.354    0.009   41.281    0.000    0.354    0.467
##    .gettoun (.46.)    0.245    0.007   36.594    0.000    0.245    0.282
##    .togetjb (.47.)    0.275    0.007   37.250    0.000    0.275    0.298
##    .jbnvlvs (.48.)    0.466    0.011   41.136    0.000    0.466    0.458
##    .getahed (.49.)    0.287    0.007   39.957    0.000    0.287    0.394
##    .jbpprtn (.50.)    0.291    0.007   39.977    0.000    0.291    0.395
##    .prntsth (.51.)    0.402    0.009   43.325    0.000    0.402    0.658
##    .imprtnt (.52.)    0.306    0.007   41.515    0.000    0.306    0.483
##     SLS               0.543    0.020   27.297    0.000    1.000    1.000
##     SCS               0.337    0.014   23.742    0.000    1.000    1.000
##     SVS               0.392    0.017   23.293    0.000    1.000    1.000
## 
## 
## Group 2 [Girl]:
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS =~                                                                
##     enjoy             1.000                               0.747    0.886
##     wshntst (.p2.)   -0.934    0.017  -56.506    0.000   -0.698   -0.717
##     boring  (.p3.)   -1.016    0.016  -61.965    0.000   -0.760   -0.759
##     lrnthng (.p4.)    0.846    0.013   67.256    0.000    0.632    0.795
##     like    (.p5.)    1.132    0.012   92.531    0.000    0.846    0.925
##     lkfrwrd (.p6.)    1.111    0.013   82.754    0.000    0.830    0.882
##     howwrks (.p7.)    0.580    0.013   44.509    0.000    0.434    0.609
##     lkxprmn (.p8.)    0.335    0.012   28.311    0.000    0.250    0.422
##     favorit (.p9.)    1.151    0.016   73.849    0.000    0.860    0.835
##   SCS =~                                                                
##     dowell            1.000                               0.613    0.801
##     mrdffcl (.11.)   -0.941    0.021  -44.570    0.000   -0.577   -0.671
##     ntstrng (.12.)   -1.101    0.022  -50.373    0.000   -0.675   -0.741
##     lrnqckl (.13.)    1.120    0.019   57.645    0.000    0.687    0.822
##     gdtslvp (.14.)    1.112    0.020   54.534    0.000    0.682    0.788
##     goodtsc (.15.)    0.922    0.022   42.689    0.000    0.565    0.648
##     ishardr (.16.)   -0.894    0.021  -41.952    0.000   -0.548   -0.638
##     mkscnfs (.17.)   -1.012    0.024  -42.899    0.000   -0.620   -0.650
##   SVS =~                                                                
##     willhlp           1.000                               0.623    0.764
##     ndfrthr (.19.)    1.014    0.021   48.406    0.000    0.632    0.728
##     gettoun (.20.)    1.264    0.022   57.828    0.000    0.788    0.847
##     togetjb (.21.)    1.286    0.023   57.016    0.000    0.802    0.837
##     jbnvlvs (.22.)    1.187    0.024   48.901    0.000    0.740    0.735
##     getahed (.23.)    1.062    0.020   52.226    0.000    0.662    0.777
##     jbpprtn (.24.)    1.068    0.020   52.178    0.000    0.666    0.777
##     prntsth (.25.)    0.731    0.019   37.689    0.000    0.455    0.583
##     imprtnt (.26.)    0.914    0.019   47.559    0.000    0.570    0.717
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   SLS ~~                                                                
##     SCS               0.350    0.014   24.692    0.000    0.763    0.763
##     SVS               0.263    0.013   20.269    0.000    0.564    0.564
##   SCS ~~                                                                
##     SVS               0.184    0.011   17.483    0.000    0.481    0.481
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy   (.59.)    1.727    0.018   96.905    0.000    1.727    2.048
##    .wshntst (.60.)    3.162    0.019  166.721    0.000    3.162    3.250
##    .boring  (.61.)    2.996    0.020  150.620    0.000    2.996    2.993
##    .lrnthng (.62.)    1.566    0.016   97.385    0.000    1.566    1.969
##    .like    (.63.)    1.798    0.020   91.239    0.000    1.798    1.965
##    .lkfrwrd (.64.)    2.030    0.020  102.260    0.000    2.030    2.156
##    .howwrks (.65.)    1.507    0.013  114.015    0.000    1.507    2.116
##    .lkxprmn (.66.)    1.231    0.010  120.385    0.000    1.231    2.075
##    .favorit (.67.)    2.159    0.021  101.692    0.000    2.159    2.096
##    .dowell  (.68.)    1.695    0.015  111.261    0.000    1.695    2.213
##    .mrdffcl (.69.)    3.362    0.016  208.041    0.000    3.362    3.912
##    .ntstrng (.70.)    3.322    0.018  188.100    0.000    3.322    3.644
##    .lrnqckl (.71.)    1.934    0.017  115.245    0.000    1.934    2.314
##    .gdtslvp (.72.)    2.184    0.017  127.597    0.000    2.184    2.524
##    .goodtsc (.73.)    2.085    0.016  128.351    0.000    2.085    2.390
##    .ishardr (.74.)    3.401    0.016  213.605    0.000    3.401    3.962
##    .mkscnfs (.75.)    3.194    0.018  179.621    0.000    3.194    3.348
##    .willhlp (.76.)    1.903    0.017  115.273    0.000    1.903    2.332
##    .ndfrthr (.77.)    2.138    0.017  124.045    0.000    2.138    2.464
##    .gettoun (.78.)    2.105    0.020  107.094    0.000    2.105    2.262
##    .togetjb (.79.)    2.188    0.020  108.719    0.000    2.188    2.284
##    .jbnvlvs (.80.)    2.458    0.020  122.524    0.000    2.458    2.441
##    .getahed (.81.)    1.956    0.017  112.767    0.000    1.956    2.297
##    .jbpprtn (.82.)    1.886    0.017  108.056    0.000    1.886    2.200
##    .prntsth (.83.)    1.793    0.014  124.256    0.000    1.793    2.296
##    .imprtnt (.84.)    1.800    0.016  114.724    0.000    1.800    2.266
##     SLS               0.237    0.024    9.892    0.000    0.317    0.317
##     SCS               0.195    0.020    9.833    0.000    0.319    0.319
##     SVS               0.056    0.020    2.739    0.006    0.089    0.089
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .enjoy   (.27.)    0.153    0.004   37.344    0.000    0.153    0.215
##    .wshntst (.28.)    0.460    0.011   42.825    0.000    0.460    0.486
##    .boring  (.29.)    0.425    0.010   42.202    0.000    0.425    0.424
##    .lrnthng (.30.)    0.233    0.006   41.445    0.000    0.233    0.368
##    .like    (.31.)    0.121    0.004   32.601    0.000    0.121    0.145
##    .lkfrwrd (.32.)    0.197    0.005   37.684    0.000    0.197    0.223
##    .howwrks (.33.)    0.319    0.007   43.805    0.000    0.319    0.629
##    .lkxprmn (.34.)    0.289    0.006   44.579    0.000    0.289    0.822
##    .favorit (.35.)    0.321    0.008   40.206    0.000    0.321    0.303
##    .dowell  (.36.)    0.210    0.006   37.654    0.000    0.210    0.359
##    .mrdffcl (.37.)    0.406    0.010   41.666    0.000    0.406    0.550
##    .ntstrng (.38.)    0.375    0.009   40.030    0.000    0.375    0.451
##    .lrnqckl (.39.)    0.227    0.006   36.444    0.000    0.227    0.325
##    .gdtslvp (.40.)    0.284    0.007   38.285    0.000    0.284    0.379
##    .goodtsc (.41.)    0.442    0.011   42.067    0.000    0.442    0.581
##    .ishardr (.42.)    0.437    0.010   42.212    0.000    0.437    0.593
##    .mkscnfs (.43.)    0.525    0.013   42.025    0.000    0.525    0.577
##    .willhlp (.44.)    0.278    0.007   40.381    0.000    0.278    0.417
##    .ndfrthr (.45.)    0.354    0.009   41.281    0.000    0.354    0.469
##    .gettoun (.46.)    0.245    0.007   36.594    0.000    0.245    0.283
##    .togetjb (.47.)    0.275    0.007   37.250    0.000    0.275    0.300
##    .jbnvlvs (.48.)    0.466    0.011   41.136    0.000    0.466    0.460
##    .getahed (.49.)    0.287    0.007   39.957    0.000    0.287    0.396
##    .jbpprtn (.50.)    0.291    0.007   39.977    0.000    0.291    0.397
##    .prntsth (.51.)    0.402    0.009   43.325    0.000    0.402    0.660
##    .imprtnt (.52.)    0.306    0.007   41.515    0.000    0.306    0.485
##     SLS               0.559    0.020   27.702    0.000    1.000    1.000
##     SCS               0.376    0.016   24.201    0.000    1.000    1.000
##     SVS               0.389    0.017   23.527    0.000    1.000    1.000

Visuals

semPaths(configOutput)

semPaths(weakInOutput)

semPaths(strongInOutput)

semPaths(strictInOutput)

Measures of Fit

library(semTools)
measurementInvariance(model = cfaConfigure, data=timss_NOR, group = "gender")
## 
## Measurement invariance models:
## 
## Model 1 : fit.configural
## Model 2 : fit.loadings
## Model 3 : fit.intercepts
## Model 4 : fit.means
## 
## Chi Square Difference Test
## 
##                 Df    AIC    BIC   Chisq Chisq diff Df diff Pr(>Chisq)    
## fit.configural 592 201462 202484  9661.8                                  
## fit.loadings   615 201475 202352  9721.6     59.771      23  4.122e-05 ***
## fit.intercepts 638 201686 202417  9977.7    256.095      23  < 2.2e-16 ***
## fit.means      641 201805 202518 10103.5    125.807       3  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Fit measures:
## 
##                  cfi rmsea cfi.delta rmsea.delta
## fit.configural 0.879 0.087        NA          NA
## fit.loadings   0.878 0.085     0.000       0.001
## fit.intercepts 0.875 0.085     0.003       0.000
## fit.means      0.874 0.085     0.002       0.000

Judging by the fit measures, it is diffucult to say which model is of the best fit. If we look at the comparative fit index (CFI), we could say that the best model is the first one (fit.configural) with configural invariance, as it has the largest CFI. However, it certainly loses when RMSEA across models are compared - the first model has the largest from the zero value, while model 2 (fit.loadings - weak/metric invariance), model 3 (fit.intercepts - strong/scalar invariance), and model 4 (fit.means - strict invariance) are the same compared by this measure. So it is not clear which model should be prefered, i.e., which type of the variance is present. Yet, both indeces indicate bad fit - CFI should be higher than 0.9 at least, while RMSEA should be below or equal to 0.08 for the model to demonstrate a good fit.