Skip to contents

The Problem

Interaction effects between two endogenous (i.e., dependent) variables work as you would expect for the product indicator methods ("dblcent", "rca", "ca", "uca"). For the lms- and qml approach however, it is not as straight forward.

The lms- and qml approach can (by default) handle interaction effects between endogenous and exogenous (i.e., independent) variables, but not interaction effects between two endogenous variables. When there is an interaction effect between two endogenous variables, the equations cannot easily be written in ‘reduced’ form – meaning that normal estimation procedures won’t work.

The Solution

This being said, there is a work-around for these limitations for both the lms- and qml-approach. In essence, the model can be split into two parts, one linear and one non-linear. Basically, you can replace the covariance matrix used in the estimation of the non-linear model, with the model-implied covariance matrix from a linear model. Thus you can treat an endogenous variable as if it were exogenous – given that it can be expressed in a linear model.

Example

Let’s consider the the theory of planned behaviour (TPB) where we wish to estimate the quadratic effect of INT on BEH (INT:INT). With the following model:

tpb <- ' 
# Outer Model (Based on Hagger et al., 2007)
  ATT =~ att1 + att2 + att3 + att4 + att5
  SN =~ sn1 + sn2
  PBC =~ pbc1 + pbc2 + pbc3
  INT =~ int1 + int2 + int3
  BEH =~ b1 + b2

# Inner Model (Based on Steinmetz et al., 2011)
  INT ~ ATT + SN + PBC
  BEH ~ INT + PBC 
  BEH ~ INT:INT
'

Since INT is an endogenous variable, its quadratic term (i.e., an interaction effect with itself) would include two endogenous variables. Thus we would ordinarily not be able to estimate this model using the lms- or qml-approach. However, we can split the model into two parts, one linear and one non-linear. While INT is an endogenous variable, it can be expressed in a linear model – since it is not affected by any interaction terms:

tpb_linear <- 'INT ~ PBC + ATT + SN'

We could then remove this part from the original model, giving us:

tpb_nonlinear <- ' 
# Outer Model (Based on Hagger et al., 2007)
  ATT =~ att1 + att2 + att3 + att4 + att5
  SN =~ sn1 + sn2
  PBC =~ pbc1 + pbc2 + pbc3
  INT =~ int1 + int2 + int3
  BEH =~ b1 + b2

# Inner Model (Based on Steinmetz et al., 2011)
  BEH ~ INT + PBC 
  BEH ~ INT:INT
'

We could now just estimate the non-linear model, since INT now is an exogenous variable. This would however not incorporate the structural model for INT. To address this, we can make modsem replace the covariance matrix (phi) of (INT, PBC, ATT, SN) with the model-implied covariance matrix from the linear model, whilst estimating both models simultaneously. To acheive this, we can use the cov.syntax argument in modsem:

est_lms <- modsem(tpb_nonlinear, data = TPB, cov.syntax = tpb_linear, method = "lms")
#> Warning: It is recommended that you have at least 48 nodes for interaction
#> effects between endogenous variables in the lms approach 'nodes = 24'
summary(est_lms)
#> Estimating null model
#> EM: Iteration =     1, LogLik =   -28467.33, Change = -28467.332
#> EM: Iteration =     2, LogLik =   -28124.48, Change =    342.852
#> EM: Iteration =     3, LogLik =   -27825.10, Change =    299.377
#> EM: Iteration =     4, LogLik =   -27581.12, Change =    243.980
#> EM: Iteration =     5, LogLik =   -27370.69, Change =    210.431
#> EM: Iteration =     6, LogLik =   -27175.43, Change =    195.264
#> EM: Iteration =     7, LogLik =   -27000.48, Change =    174.946
#> EM: Iteration =     8, LogLik =   -26848.56, Change =    151.919
#> EM: Iteration =     9, LogLik =   -26711.51, Change =    137.051
#> EM: Iteration =    10, LogLik =   -26592.54, Change =    118.968
#> EM: Iteration =    11, LogLik =   -26504.04, Change =     88.504
#> EM: Iteration =    12, LogLik =   -26466.85, Change =     37.190
#> EM: Iteration =    13, LogLik =   -26452.38, Change =     14.465
#> EM: Iteration =    14, LogLik =   -26439.05, Change =     13.331
#> EM: Iteration =    15, LogLik =   -26430.51, Change =      8.541
#> EM: Iteration =    16, LogLik =   -26422.81, Change =      7.698
#> EM: Iteration =    17, LogLik =   -26403.89, Change =     18.924
#> EM: Iteration =    18, LogLik =   -26402.25, Change =      1.642
#> EM: Iteration =    19, LogLik =   -26401.21, Change =      1.037
#> EM: Iteration =    20, LogLik =   -26400.26, Change =      0.955
#> EM: Iteration =    21, LogLik =   -26399.30, Change =      0.960
#> EM: Iteration =    22, LogLik =   -26398.64, Change =      0.658
#> EM: Iteration =    23, LogLik =   -26398.02, Change =      0.615
#> EM: Iteration =    24, LogLik =   -26397.74, Change =      0.278
#> EM: Iteration =    25, LogLik =   -26397.33, Change =      0.420
#> EM: Iteration =    26, LogLik =   -26397.20, Change =      0.128
#> EM: Iteration =    27, LogLik =   -26396.77, Change =      0.425
#> EM: Iteration =    28, LogLik =   -26396.48, Change =      0.292
#> EM: Iteration =    29, LogLik =   -26396.34, Change =      0.145
#> EM: Iteration =    30, LogLik =   -26396.31, Change =      0.022
#> EM: Iteration =    31, LogLik =   -26395.95, Change =      0.365
#> EM: Iteration =    32, LogLik =   -26395.73, Change =      0.215
#> EM: Iteration =    33, LogLik =   -26395.68, Change =      0.055
#> EM: Iteration =    34, LogLik =   -26395.37, Change =      0.304
#> EM: Iteration =    35, LogLik =   -26395.30, Change =      0.079
#> EM: Iteration =    36, LogLik =   -26395.10, Change =      0.198
#> EM: Iteration =    37, LogLik =   -26395.04, Change =      0.057
#> EM: Iteration =    38, LogLik =   -26394.99, Change =      0.054
#> EM: Iteration =    39, LogLik =   -26394.96, Change =      0.028
#> EM: Iteration =    40, LogLik =   -26394.93, Change =      0.031
#> EM: Iteration =    41, LogLik =   -26394.91, Change =      0.019
#> EM: Iteration =    42, LogLik =   -26394.89, Change =      0.023
#> EM: Iteration =    43, LogLik =   -26394.87, Change =      0.015
#> EM: Iteration =    44, LogLik =   -26394.85, Change =      0.019
#> EM: Iteration =    45, LogLik =   -26394.84, Change =      0.013
#> EM: Iteration =    46, LogLik =   -26394.82, Change =      0.018
#> EM: Iteration =    47, LogLik =   -26394.81, Change =      0.012
#> EM: Iteration =    48, LogLik =   -26394.79, Change =      0.018
#> EM: Iteration =    49, LogLik =   -26394.78, Change =      0.013
#> EM: Iteration =    50, LogLik =   -26394.76, Change =      0.020
#> EM: Iteration =    51, LogLik =   -26394.74, Change =      0.015
#> EM: Iteration =    52, LogLik =   -26394.72, Change =      0.028
#> EM: Iteration =    53, LogLik =   -26394.69, Change =      0.022
#> EM: Iteration =    54, LogLik =   -26394.63, Change =      0.062
#> EM: Iteration =    55, LogLik =   -26394.58, Change =      0.057
#> EM: Iteration =    56, LogLik =   -26394.29, Change =      0.284
#> EM: Iteration =    57, LogLik =   -26394.04, Change =      0.248
#> EM: Iteration =    58, LogLik =   -26393.97, Change =      0.075
#> EM: Iteration =    59, LogLik =   -26393.73, Change =      0.240
#> EM: Iteration =    60, LogLik =   -26393.72, Change =      0.011
#> EM: Iteration =    61, LogLik =   -26393.71, Change =      0.013
#> EM: Iteration =    62, LogLik =   -26393.70, Change =      0.005
#> EM: Iteration =    63, LogLik =   -26393.69, Change =      0.008
#> EM: Iteration =    64, LogLik =   -26393.69, Change =      0.003
#> EM: Iteration =    65, LogLik =   -26393.68, Change =      0.007
#> EM: Iteration =    66, LogLik =   -26393.68, Change =      0.003
#> EM: Iteration =    67, LogLik =   -26393.67, Change =      0.007
#> EM: Iteration =    68, LogLik =   -26393.67, Change =      0.003
#> EM: Iteration =    69, LogLik =   -26393.66, Change =      0.006
#> EM: Iteration =    70, LogLik =   -26393.66, Change =      0.002
#> EM: Iteration =    71, LogLik =   -26393.66, Change =      0.006
#> EM: Iteration =    72, LogLik =   -26393.65, Change =      0.002
#> EM: Iteration =    73, LogLik =   -26393.65, Change =      0.005
#> EM: Iteration =    74, LogLik =   -26393.65, Change =      0.002
#> EM: Iteration =    75, LogLik =   -26393.64, Change =      0.005
#> EM: Iteration =    76, LogLik =   -26393.64, Change =      0.002
#> EM: Iteration =    77, LogLik =   -26393.63, Change =      0.004
#> EM: Iteration =    78, LogLik =   -26393.63, Change =      0.002
#> EM: Iteration =    79, LogLik =   -26393.63, Change =      0.004
#> EM: Iteration =    80, LogLik =   -26393.63, Change =      0.002
#> EM: Iteration =    81, LogLik =   -26393.62, Change =      0.004
#> EM: Iteration =    82, LogLik =   -26393.62, Change =      0.002
#> EM: Iteration =    83, LogLik =   -26393.62, Change =      0.004
#> EM: Iteration =    84, LogLik =   -26393.61, Change =      0.002
#> EM: Iteration =    85, LogLik =   -26393.61, Change =      0.003
#> EM: Iteration =    86, LogLik =   -26393.61, Change =      0.002
#> EM: Iteration =    87, LogLik =   -26393.60, Change =      0.003
#> EM: Iteration =    88, LogLik =   -26393.60, Change =      0.003
#> EM: Iteration =    89, LogLik =   -26393.60, Change =      0.003
#> EM: Iteration =    90, LogLik =   -26393.60, Change =      0.003
#> EM: Iteration =    91, LogLik =   -26393.59, Change =      0.003
#> EM: Iteration =    92, LogLik =   -26393.59, Change =      0.003
#> EM: Iteration =    93, LogLik =   -26393.59, Change =      0.003
#> EM: Iteration =    94, LogLik =   -26393.59, Change =      0.003
#> EM: Iteration =    95, LogLik =   -26393.58, Change =      0.003
#> EM: Iteration =    96, LogLik =   -26393.58, Change =      0.003
#> EM: Iteration =    97, LogLik =   -26393.58, Change =      0.002
#> EM: Iteration =    98, LogLik =   -26393.58, Change =      0.003
#> EM: Iteration =    99, LogLik =   -26393.57, Change =      0.002
#> EM: Iteration =   100, LogLik =   -26393.57, Change =      0.003
#> EM: Iteration =   101, LogLik =   -26393.57, Change =      0.002
#> EM: Iteration =   102, LogLik =   -26393.57, Change =      0.003
#> EM: Iteration =   103, LogLik =   -26393.56, Change =      0.002
#> EM: Iteration =   104, LogLik =   -26393.56, Change =      0.003
#> EM: Iteration =   105, LogLik =   -26393.56, Change =      0.002
#> EM: Iteration =   106, LogLik =   -26393.56, Change =      0.003
#> EM: Iteration =   107, LogLik =   -26393.55, Change =      0.002
#> EM: Iteration =   108, LogLik =   -26393.55, Change =      0.003
#> EM: Iteration =   109, LogLik =   -26393.55, Change =      0.002
#> EM: Iteration =   110, LogLik =   -26393.55, Change =      0.003
#> EM: Iteration =   111, LogLik =   -26393.54, Change =      0.002
#> EM: Iteration =   112, LogLik =   -26393.54, Change =      0.003
#> EM: Iteration =   113, LogLik =   -26393.54, Change =      0.002
#> EM: Iteration =   114, LogLik =   -26393.54, Change =      0.003
#> EM: Iteration =   115, LogLik =   -26393.53, Change =      0.002
#> EM: Iteration =   116, LogLik =   -26393.53, Change =      0.003
#> EM: Iteration =   117, LogLik =   -26393.53, Change =      0.002
#> EM: Iteration =   118, LogLik =   -26393.53, Change =      0.003
#> EM: Iteration =   119, LogLik =   -26393.53, Change =      0.001
#> EM: Iteration =   120, LogLik =   -26393.52, Change =      0.003
#> EM: Iteration =   121, LogLik =   -26393.52, Change =      0.001
#> EM: Iteration =   122, LogLik =   -26393.52, Change =      0.003
#> EM: Iteration =   123, LogLik =   -26393.52, Change =      0.001
#> EM: Iteration =   124, LogLik =   -26393.51, Change =      0.003
#> EM: Iteration =   125, LogLik =   -26393.51, Change =      0.001
#> EM: Iteration =   126, LogLik =   -26393.51, Change =      0.003
#> EM: Iteration =   127, LogLik =   -26393.51, Change =      0.001
#> EM: Iteration =   128, LogLik =   -26393.51, Change =      0.003
#> EM: Iteration =   129, LogLik =   -26393.50, Change =      0.001
#> EM: Iteration =   130, LogLik =   -26393.50, Change =      0.003
#> EM: Iteration =   131, LogLik =   -26393.50, Change =      0.001
#> EM: Iteration =   132, LogLik =   -26393.50, Change =      0.003
#> EM: Iteration =   133, LogLik =   -26393.50, Change =      0.001
#> EM: Iteration =   134, LogLik =   -26393.49, Change =      0.003
#> EM: Iteration =   135, LogLik =   -26393.49, Change =      0.001
#> EM: Iteration =   136, LogLik =   -26393.49, Change =      0.003
#> EM: Iteration =   137, LogLik =   -26393.49, Change =      0.001
#> EM: Iteration =   138, LogLik =   -26393.48, Change =      0.003
#> EM: Iteration =   139, LogLik =   -26393.48, Change =      0.001
#> EM: Iteration =   140, LogLik =   -26393.48, Change =      0.003
#> EM: Iteration =   141, LogLik =   -26393.48, Change =      0.001
#> EM: Iteration =   142, LogLik =   -26393.48, Change =      0.003
#> EM: Iteration =   143, LogLik =   -26393.48, Change =      0.001
#> EM: Iteration =   144, LogLik =   -26393.47, Change =      0.003
#> EM: Iteration =   145, LogLik =   -26393.47, Change =      0.001
#> EM: Iteration =   146, LogLik =   -26393.47, Change =      0.003
#> EM: Iteration =   147, LogLik =   -26393.47, Change =      0.000
#> EM: Iteration =   148, LogLik =   -26393.46, Change =      0.003
#> EM: Iteration =   149, LogLik =   -26393.46, Change =      0.000
#> EM: Iteration =   150, LogLik =   -26393.46, Change =      0.003
#> EM: Iteration =   151, LogLik =   -26393.46, Change =      0.000
#> EM: Iteration =   152, LogLik =   -26393.46, Change =      0.004
#> EM: Iteration =   153, LogLik =   -26393.46, Change =      0.000
#> EM: Iteration =   154, LogLik =   -26393.45, Change =      0.004
#> EM: Iteration =   155, LogLik =   -26393.45, Change =      0.000
#> EM: Iteration =   156, LogLik =   -26393.45, Change =      0.004
#> EM: Iteration =   157, LogLik =   -26393.45, Change =      0.000
#> 
#> modsem (version 1.0.3):
#>   Estimator                                         LMS
#>   Optimization method                         EM-NLMINB
#>   Number of observations                           2000
#>   Number of iterations                              136
#>   Loglikelihood                               -23781.36
#>   Akaike (AIC)                                 47670.72
#>   Bayesian (BIC)                               47973.16
#>  
#> Numerical Integration:
#>   Points of integration (per dim)                    24
#>   Dimensions                                          1
#>   Total points of integration                        24
#>  
#> Fit Measures for H0:
#>   Loglikelihood                                  -26393
#>   Akaike (AIC)                                 52892.89
#>   Bayesian (BIC)                               53189.74
#>   Chi-square                                      66.72
#>   Degrees of Freedom (Chi-square)                    82
#>   P-value (Chi-square)                            0.889
#>   RMSEA                                           0.000
#>  
#> Comparative fit to H0 (no interaction effect)
#>   Loglikelihood change                          2612.09
#>   Difference test (D)                           5224.18
#>   Degrees of freedom (D)                              1
#>   P-value (D)                                     0.000
#>  
#> R-Squared:
#>   BEH                                             0.235
#>   INT                                             0.365
#> R-Squared Null-Model (H0):
#>   BEH                                             0.210
#>   INT                                             0.367
#> R-Squared Change:
#>   BEH                                             0.025
#>   INT                                            -0.002
#> 
#> Parameter Estimates:
#>   Coefficients                           unstandardized
#>   Information                                  expected
#>   Standard errors                              standard
#>  
#> Latent Variables:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>   INT =~ 
#>     int1             1.000                             
#>     int2             0.915      0.016    58.24    0.000
#>     int3             0.807      0.015    54.49    0.000
#>   ATT =~ 
#>     att1             1.000                             
#>     att2             0.876      0.012    71.51    0.000
#>     att3             0.787      0.012    66.55    0.000
#>     att4             0.693      0.011    60.50    0.000
#>     att5             0.885      0.012    71.68    0.000
#>   SN =~ 
#>     sn1              1.000                             
#>     sn2              0.893      0.017    52.59    0.000
#>   PBC =~ 
#>     pbc1             1.000                             
#>     pbc2             0.912      0.013    69.14    0.000
#>     pbc3             0.801      0.012    66.52    0.000
#>   BEH =~ 
#>     b1               1.000                             
#>     b2               0.959      0.033    29.32    0.000
#> 
#> Regressions:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>   BEH ~ 
#>     INT              0.196      0.026     7.60    0.000
#>     PBC              0.238      0.022    10.62    0.000
#>     INT:INT          0.129      0.018     7.29    0.000
#>   INT ~ 
#>     PBC              0.218      0.029     7.51    0.000
#>     ATT              0.210      0.025     8.28    0.000
#>     SN               0.172      0.028     6.22    0.000
#> 
#> Intercepts:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>     int1             1.005      0.020    49.42    0.000
#>     int2             1.004      0.019    53.24    0.000
#>     int3             0.998      0.017    57.46    0.000
#>     att1             1.007      0.024    42.32    0.000
#>     att2             1.001      0.021    47.17    0.000
#>     att3             1.011      0.019    51.87    0.000
#>     att4             0.994      0.018    55.74    0.000
#>     att5             0.986      0.021    46.02    0.000
#>     sn1              1.000      0.024    42.10    0.000
#>     sn2              1.005      0.021    47.14    0.000
#>     pbc1             0.991      0.023    43.04    0.000
#>     pbc2             0.979      0.021    45.56    0.000
#>     pbc3             0.986      0.019    51.24    0.000
#>     b1               0.995      0.024    42.27    0.000
#>     b2               1.014      0.022    45.68    0.000
#>     BEH              0.000                             
#>     INT              0.000                             
#>     ATT              0.000                             
#>     SN               0.000                             
#>     PBC              0.000                             
#> 
#> Covariances:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>   PBC ~~ 
#>     ATT              0.668      0.079     8.48    0.000
#>     SN               0.675      0.054    12.48    0.000
#>   ATT ~~ 
#>     SN               0.625      0.029    21.63    0.000
#> 
#> Variances:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>     int1             0.161      0.009    18.28    0.000
#>     int2             0.161      0.008    20.89    0.000
#>     int3             0.170      0.007    23.51    0.000
#>     att1             0.167      0.007    23.23    0.000
#>     att2             0.150      0.006    24.81    0.000
#>     att3             0.160      0.006    26.51    0.000
#>     att4             0.163      0.006    27.46    0.000
#>     att5             0.159      0.006    24.85    0.000
#>     sn1              0.181      0.015    12.48    0.000
#>     sn2              0.155      0.012    13.27    0.000
#>     pbc1             0.145      0.008    18.27    0.000
#>     pbc2             0.160      0.007    21.74    0.000
#>     pbc3             0.154      0.007    23.69    0.000
#>     b1               0.185      0.020     9.23    0.000
#>     b2               0.136      0.018     7.52    0.000
#>     BEH              0.475      0.024    19.71    0.000
#>     PBC              0.960      0.037    26.13    0.000
#>     ATT              1.000      0.058    17.32    0.000
#>     SN               0.968      0.086    11.29    0.000
#>     INT              0.481      0.019    24.97    0.000

est_qml <- modsem(tpb_nonlinear, data = TPB, cov.syntax = tpb_linear, method = "qml")
summary(est_qml)
#> Estimating null model
#> Starting M-step
#> 
#> modsem (version 1.0.3):
#>   Estimator                                         QML
#>   Optimization method                            NLMINB
#>   Number of observations                           2000
#>   Number of iterations                               76
#>   Loglikelihood                               -26360.52
#>   Akaike (AIC)                                 52829.04
#>   Bayesian (BIC)                               53131.49
#>  
#> Fit Measures for H0:
#>   Loglikelihood                                  -26393
#>   Akaike (AIC)                                 52892.45
#>   Bayesian (BIC)                               53189.29
#>   Chi-square                                      66.27
#>   Degrees of Freedom (Chi-square)                    82
#>   P-value (Chi-square)                            0.897
#>   RMSEA                                           0.000
#>  
#> Comparative fit to H0 (no interaction effect)
#>   Loglikelihood change                            32.70
#>   Difference test (D)                             65.41
#>   Degrees of freedom (D)                              1
#>   P-value (D)                                     0.000
#>  
#> R-Squared:
#>   BEH                                             0.239
#>   INT                                             0.370
#> R-Squared Null-Model (H0):
#>   BEH                                             0.210
#>   INT                                             0.367
#> R-Squared Change:
#>   BEH                                             0.029
#>   INT                                             0.003
#> 
#> Parameter Estimates:
#>   Coefficients                           unstandardized
#>   Information                                  observed
#>   Standard errors                              standard
#>  
#> Latent Variables:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>   INT =~ 
#>     int1             1.000                             
#>     int2             0.914      0.015    59.04    0.000
#>     int3             0.807      0.015    55.65    0.000
#>   ATT =~ 
#>     att1             1.000                             
#>     att2             0.878      0.012    71.56    0.000
#>     att3             0.789      0.012    66.37    0.000
#>     att4             0.695      0.011    61.00    0.000
#>     att5             0.887      0.013    70.85    0.000
#>   SN =~ 
#>     sn1              1.000                             
#>     sn2              0.888      0.017    52.62    0.000
#>   PBC =~ 
#>     pbc1             1.000                             
#>     pbc2             0.913      0.013    69.38    0.000
#>     pbc3             0.801      0.012    66.08    0.000
#>   BEH =~ 
#>     b1               1.000                             
#>     b2               0.960      0.032    29.91    0.000
#> 
#> Regressions:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>   BEH ~ 
#>     INT              0.197      0.025     7.76    0.000
#>     PBC              0.239      0.023    10.59    0.000
#>     INT:INT          0.128      0.016     7.88    0.000
#>   INT ~ 
#>     PBC              0.222      0.030     7.51    0.000
#>     ATT              0.213      0.026     8.17    0.000
#>     SN               0.175      0.028     6.33    0.000
#> 
#> Intercepts:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>     int1             1.014      0.022    46.96    0.000
#>     int2             1.012      0.020    50.41    0.000
#>     int3             1.005      0.018    54.80    0.000
#>     att1             1.014      0.024    42.01    0.000
#>     att2             1.007      0.021    46.97    0.000
#>     att3             1.016      0.020    51.45    0.000
#>     att4             0.999      0.018    55.65    0.000
#>     att5             0.992      0.022    45.67    0.000
#>     sn1              1.006      0.024    41.66    0.000
#>     sn2              1.010      0.022    46.71    0.000
#>     pbc1             0.998      0.024    42.41    0.000
#>     pbc2             0.985      0.022    44.93    0.000
#>     pbc3             0.991      0.020    50.45    0.000
#>     b1               0.999      0.023    42.64    0.000
#>     b2               1.017      0.022    46.25    0.000
#>     BEH              0.000                             
#>     INT              0.000                             
#>     ATT              0.000                             
#>     SN               0.000                             
#>     PBC              0.000                             
#> 
#> Covariances:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>   PBC ~~ 
#>     ATT              0.678      0.029    23.45    0.000
#>     SN               0.678      0.029    23.08    0.000
#>   ATT ~~ 
#>     SN               0.629      0.029    21.70    0.000
#> 
#> Variances:
#>                   Estimate  Std.Error  z.value  P(>|z|)
#>     int1             0.158      0.009    18.22    0.000
#>     int2             0.160      0.008    20.38    0.000
#>     int3             0.168      0.007    23.63    0.000
#>     att1             0.167      0.007    23.53    0.000
#>     att2             0.150      0.006    24.71    0.000
#>     att3             0.160      0.006    26.38    0.000
#>     att4             0.162      0.006    27.64    0.000
#>     att5             0.159      0.006    24.93    0.000
#>     sn1              0.178      0.015    12.09    0.000
#>     sn2              0.157      0.012    13.26    0.000
#>     pbc1             0.145      0.008    18.44    0.000
#>     pbc2             0.160      0.007    21.42    0.000
#>     pbc3             0.154      0.006    23.80    0.000
#>     b1               0.185      0.020     9.42    0.000
#>     b2               0.135      0.018     7.60    0.000
#>     BEH              0.475      0.024    19.74    0.000
#>     PBC              0.962      0.036    27.04    0.000
#>     ATT              0.998      0.037    26.93    0.000
#>     SN               0.988      0.039    25.23    0.000
#>     INT              0.488      0.020    24.59    0.000