Three-factor Model

In the previous presentation “Factor Analysis (FA) III: Structural Equation Modeling (SEM)”, the three-factor model with the added correlated error term fitted significantly better than the original four-factor model.

Path Diagram of the Three-Factor Model

Fit Statistics

lavaan 0.6-12 ended normally after 114 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        28

  Number of observations                           300

Model Test User Model:
                                                      
  Test statistic                               212.813
  Degrees of freedom                                50
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              1042.916
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.833
  Tucker-Lewis Index (TLI)                       0.780

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -9929.572
  Loglikelihood unrestricted model (H1)      -9823.166
                                                      
  Akaike (AIC)                               19915.144
  Bayesian (BIC)                             20018.850
  Sample-size adjusted Bayesian (BIC)        19930.051

Root Mean Square Error of Approximation:

  RMSEA                                          0.104
  90 Percent confidence interval - lower         0.090
  90 Percent confidence interval - upper         0.119
  P-value RMSEA <= 0.05                          0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.071

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Expected
  Information saturated (h1) model          Structured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  verbalcomp =~                                       
    vocab             1.000                           
    simil             0.361    0.035   10.184    0.000
    inform            0.525    0.048   10.857    0.000
    compreh           0.334    0.036    9.349    0.000
  workingmemory =~                                    
    arith             1.000                           
    digspan           0.857    0.149    5.768    0.000
    lnseq             0.193    0.104    1.850    0.064
  performance =~                                      
    piccomp           1.000                           
    block             3.737    0.390    9.581    0.000
    matrixreason      0.843    0.118    7.176    0.000
    digsym            1.615    0.508    3.181    0.001
    symbolsearch      1.875    0.203    9.218    0.000
   Std.lv  Std.all
                  
    5.888    0.824
    2.125    0.664
    3.090    0.706
    1.965    0.547
                  
    2.565    0.857
    2.199    0.558
    0.495    0.123
                  
    1.515    0.650
    5.662    0.734
    1.278    0.499
    2.446    0.208
    2.841    0.688

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)
 .simil ~~                                            
   .inform           -3.738    0.606   -6.169    0.000
  verbalcomp ~~                                       
    workingmemory     6.278    1.181    5.315    0.000
    performance       5.654    0.859    6.583    0.000
  workingmemory ~~                                    
    performance       2.237    0.363    6.172    0.000
   Std.lv  Std.all
                  
   -3.738   -0.503
                  
    0.416    0.416
    0.634    0.634
                  
    0.576    0.576

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .vocab            16.365    2.375    6.892    0.000
   .simil             5.734    0.610    9.399    0.000
   .inform            9.635    1.095    8.801    0.000
   .compreh           9.026    0.791   11.413    0.000
   .arith             2.380    1.037    2.294    0.022
   .digspan          10.715    1.154    9.282    0.000
   .lnseq            15.830    1.298   12.193    0.000
   .piccomp           3.143    0.316    9.937    0.000
   .block            27.457    3.220    8.527    0.000
   .matrixreason      4.921    0.439   11.216    0.000
   .digsym          132.218   10.920   12.108    0.000
   .symbolsearch      8.996    0.958    9.393    0.000
    verbalcomp       34.667    4.408    7.865    0.000
    workingmemory     6.579    1.239    5.309    0.000
    performance       2.296    0.407    5.643    0.000
   Std.lv  Std.all
   16.365    0.321
    5.734    0.560
    9.635    0.502
    9.026    0.700
    2.380    0.266
   10.715    0.689
   15.830    0.985
    3.143    0.578
   27.457    0.461
    4.921    0.751
  132.218    0.957
    8.996    0.527
    1.000    1.000
    1.000    1.000
    1.000    1.000

R-Square:
                   Estimate
    vocab             0.679
    simil             0.440
    inform            0.498
    compreh           0.300
    arith             0.734
    digspan           0.311
    lnseq             0.015
    piccomp           0.422
    block             0.539
    matrixreason      0.249
    digsym            0.043
    symbolsearch      0.473

Hierarchical / Multilevel SEM

The second layer or level of a model is sometimes called the structural model, which is the relationship between the latent variables. So there is an overall IQ factor predicting the latent scores on verbal comprehension, working memory, and perceptual organization.

By using a hierarchical analysis, you are suggesting that the correlations between these (latent) variables existed because they are all related to a separate underlying construct (at a higher level). Therefore, general IQ is the reason for the subscores on the WAIS-III IQ Scale (Wechsler Adult Intelligence Scale version III).

wais.model.h <- "verbalcomp =~ vocab + simil + inform + compreh
              workingmemory =~ arith + digspan + lnseq
              performance =~ piccomp + block + matrixreason + digsym + symbolsearch
              simil ~~ inform
              generalIQ =~ verbalcomp + workingmemory + performance"

wais.fit.h <- cfa(wais.model.h, data = IQdata)

Usually, a change in model specification results in a change in fit indices. In this example, adding the second level of latent variables does not change the fit indices because your are simply shifting the parameters from covariances to loadings.

summary(wais.fit.h, standardized = TRUE, fit.measures = TRUE, rsquare = TRUE)
lavaan 0.6-12 ended normally after 115 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        28

  Number of observations                           300

Model Test User Model:
                                                      
  Test statistic                               212.813
  Degrees of freedom                                50
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                              1042.916
  Degrees of freedom                                66
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.833
  Tucker-Lewis Index (TLI)                       0.780

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -9929.572
  Loglikelihood unrestricted model (H1)      -9823.166
                                                      
  Akaike (AIC)                               19915.144
  Bayesian (BIC)                             20018.850
  Sample-size adjusted Bayesian (BIC)        19930.051

Root Mean Square Error of Approximation:

  RMSEA                                          0.104
  90 Percent confidence interval - lower         0.090
  90 Percent confidence interval - upper         0.119
  P-value RMSEA <= 0.05                          0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.071

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Expected
  Information saturated (h1) model          Structured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  verbalcomp =~                                       
    vocab             1.000                           
    simil             0.361    0.035   10.184    0.000
    inform            0.525    0.048   10.857    0.000
    compreh           0.334    0.036    9.349    0.000
  workingmemory =~                                    
    arith             1.000                           
    digspan           0.857    0.149    5.768    0.000
    lnseq             0.193    0.104    1.850    0.064
  performance =~                                      
    piccomp           1.000                           
    block             3.737    0.390    9.581    0.000
    matrixreason      0.843    0.118    7.176    0.000
    digsym            1.615    0.508    3.181    0.001
    symbolsearch      1.875    0.203    9.218    0.000
  generalIQ =~                                        
    verbalcomp        1.000                           
    workingmemory     0.396    0.060    6.635    0.000
    performance       0.356    0.062    5.713    0.000
   Std.lv  Std.all
                  
    5.888    0.824
    2.125    0.664
    3.090    0.706
    1.965    0.547
                  
    2.565    0.857
    2.199    0.558
    0.495    0.123
                  
    1.515    0.650
    5.662    0.734
    1.278    0.499
    2.446    0.208
    2.841    0.688
                  
    0.676    0.676
    0.615    0.615
    0.937    0.937

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)
 .simil ~~                                            
   .inform           -3.738    0.606   -6.169    0.000
   Std.lv  Std.all
                  
   -3.738   -0.503

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .vocab            16.365    2.375    6.892    0.000
   .simil             5.734    0.610    9.399    0.000
   .inform            9.635    1.095    8.801    0.000
   .compreh           9.026    0.791   11.413    0.000
   .arith             2.380    1.037    2.294    0.022
   .digspan          10.715    1.154    9.282    0.000
   .lnseq            15.830    1.298   12.193    0.000
   .piccomp           3.143    0.316    9.937    0.000
   .block            27.457    3.220    8.527    0.000
   .matrixreason      4.921    0.439   11.216    0.000
   .digsym          132.217   10.920   12.108    0.000
   .symbolsearch      8.996    0.958    9.393    0.000
   .verbalcomp       18.804    3.350    5.612    0.000
   .workingmemory     4.095    1.096    3.734    0.000
   .performance       0.281    0.297    0.946    0.344
    generalIQ        15.863    3.715    4.270    0.000
   Std.lv  Std.all
   16.365    0.321
    5.734    0.560
    9.635    0.502
    9.026    0.700
    2.380    0.266
   10.715    0.689
   15.830    0.985
    3.143    0.578
   27.457    0.461
    4.921    0.751
  132.217    0.957
    8.996    0.527
    0.542    0.542
    0.622    0.622
    0.122    0.122
    1.000    1.000

R-Square:
                   Estimate
    vocab             0.679
    simil             0.440
    inform            0.498
    compreh           0.300
    arith             0.734
    digspan           0.311
    lnseq             0.015
    piccomp           0.422
    block             0.539
    matrixreason      0.249
    digsym            0.043
    symbolsearch      0.473
    verbalcomp        0.458
    workingmemory     0.378
    performance       0.878

Path Diagram

Path Diagram of the Multilevel Model

Model Comparison

A likelihood ratio test tells you whether the models fit significantly differently. As expected, there is no significant result: the fit statistics are exactly the same.

Chi-Squared Difference Test

            Df   AIC   BIC  Chisq  Chisq diff Df diff
wais.fit1.1 50 19915 20019 212.81                    
wais.fit.h  50 19915 20019 212.81 -6.5249e-09       0
            Pr(>Chisq)
wais.fit1.1           
wais.fit.h            

Fit Measures

Fit statistics for three-factor model with the added correlated error term

      cfi       tli       aic      ecvi     rmsea      srmr 
    0.833     0.780 19915.144     0.896     0.104     0.071 

Fit statistics for multilevel Model

As expected, there is no difference: the fit statistics are exactly the same.

      cfi       tli       aic      ecvi     rmsea      srmr 
    0.833     0.780 19915.144     0.896     0.104     0.071