Objective

Structural equation modelling (SEM) is a powerful multivariate technique for investigating, testing, and evaluating multivariate causal relationships. It is primarily used in the social and behavioural sciences. Wikipedia adds that SEM involves the construction of a model to represent how various aspects of an observable or theoretical phenomenon are thought to be causally and structurally related to one another.

The vignette constructs and evaluates a structural equation model on a dataset of 218 respondents experiencing significant organisational change. Respondents reported self-efficacy, irrational ideas, maladaptive defence mechanisms, emotion, behavioural intentions and reaction towards change in their organisation.

Workflow

The raw data set was wrangled and tidied before processing. Conducted a brief exploratory analysis comprising a statistical summary, visualisation and correlation analysis to understand the variables.

The structural equation model was built with variables fitted by confirmatory factor analysis (CFA), exploratory factor analysis (EFA) and principal component analysis (PCA). See the vignettes on CFA, EFA and PCA for more information about dimensionality reduction of the variables.

In brief, the SEM process involved specifying, fitting, visualising, and evaluating the model’s performance.

Results

1. Explore data

The data set for this analysis was filtered or subsetted to those respondents who reported experiencing significant organisational change. Table 1 provides a statistical summary of the variables.

Table 1 Statistical summary of exogenous and endogenous variables
vars n mean sd median trimmed mad min max range skew kurtosis se
self_efficacy 1 218 5.56 0.80 5.65 5.64 0.76 1.71 6.94 5.24 -1.21 2.80 0.05
irrational_ideas 2 218 3.69 0.81 3.68 3.69 0.86 1.21 5.79 4.58 -0.05 -0.26 0.06
defence_mechanisms 3 218 2.98 0.76 2.83 2.95 0.86 1.25 5.25 4.00 0.30 -0.46 0.05
emotion 4 218 3.80 1.13 3.80 3.79 1.11 1.00 6.90 5.90 0.09 -0.22 0.08
behavioural_intentions 5 218 5.04 1.09 5.20 5.09 1.04 1.60 7.00 5.40 -0.57 0.13 0.07
reaction 6 218 4.23 1.91 5.00 4.31 1.48 1.00 7.00 6.00 -0.27 -1.37 0.13

Chart 1 combination violin box plots visualise the distribution of these numerical variables.

Chart 2 correlation heatmap summarises the correlation coefficients between each variable.

2. Specify and fit model

The structural equation model was specified based on a conceptual inquisitiveness about how these psychological factors were associated with organisational change. Output 1 is a comprehensive summary of model results, including the goodness of fit statistics.

Output 1

lavaan 0.6-18 ended normally after 1 iteration

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        14

  Number of observations                           218

Model Test User Model:
                                                      
  Test statistic                                10.511
  Degrees of freedom                                 6
  P-value (Chi-square)                           0.105

Model Test Baseline Model:

  Test statistic                               596.376
  Degrees of freedom                                15
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.992
  Tucker-Lewis Index (TLI)                       0.981

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -1343.624
  Loglikelihood unrestricted model (H1)      -1338.369
                                                      
  Akaike (AIC)                                2715.249
  Bayesian (BIC)                              2762.632
  Sample-size adjusted Bayesian (SABIC)       2718.267

Root Mean Square Error of Approximation:

  RMSEA                                          0.059
  90 Percent confidence interval - lower         0.000
  90 Percent confidence interval - upper         0.116
  P-value H_0: RMSEA <= 0.050                    0.343
  P-value H_0: RMSEA >= 0.080                    0.316

Standardized Root Mean Square Residual:

  SRMR                                           0.029

Parameter Estimates:

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

Regressions:
                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  irrational_ideas ~                                                      
    defenc_mchnsms      0.504    0.064    7.934    0.000    0.504    0.473
  self_efficacy ~                                                         
    defenc_mchnsms     -0.310    0.073   -4.279    0.000   -0.310   -0.296
    irrational_ids     -0.208    0.068   -3.047    0.002   -0.208   -0.211
  emotion ~                                                               
    irrational_ids     -0.446    0.086   -5.189    0.000   -0.446   -0.323
    self_efficacy       0.421    0.087    4.817    0.000    0.421    0.299
  intentions ~                                                            
    defenc_mchnsms     -0.231    0.069   -3.376    0.001   -0.231   -0.162
    emotion             0.650    0.047   13.966    0.000    0.650    0.670
  reaction ~                                                              
    emotion             0.541    0.092    5.868    0.000    0.541    0.319
    intentions          0.994    0.095   10.451    0.000    0.994    0.568

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .irrational_ids    0.511    0.049   10.440    0.000    0.511    0.776
   .self_efficacy     0.517    0.049   10.440    0.000    0.517    0.809
   .emotion           0.931    0.089   10.440    0.000    0.931    0.739
   .intentions        0.552    0.053   10.440    0.000    0.552    0.465
   .reaction          1.145    0.110   10.440    0.000    1.145    0.316

R-Square:
                   Estimate
    irrational_ids    0.224
    self_efficacy     0.191
    emotion           0.261
    intentions        0.535
    reaction          0.684

Comprehensive list of model fit statistics:
                 npar                  fmin                 chisq 
               14.000                 0.024                10.511 
                   df                pvalue        baseline.chisq 
                6.000                 0.105               596.376 
          baseline.df       baseline.pvalue                   cfi 
               15.000                 0.000                 0.992 
                  tli                  nnfi                   rfi 
                0.981                 0.981                 0.956 
                  nfi                  pnfi                   ifi 
                0.982                 0.393                 0.992 
                  rni                  logl     unrestricted.logl 
                0.992             -1343.624             -1338.369 
                  aic                   bic                ntotal 
             2715.249              2762.632               218.000 
                 bic2                 rmsea        rmsea.ci.lower 
             2718.267                 0.059                 0.000 
       rmsea.ci.upper        rmsea.ci.level          rmsea.pvalue 
                0.116                 0.900                 0.343 
       rmsea.close.h0 rmsea.notclose.pvalue     rmsea.notclose.h0 
                0.050                 0.316                 0.080 
                  rmr            rmr_nomean                  srmr 
                0.043                 0.043                 0.029 
         srmr_bentler   srmr_bentler_nomean                  crmr 
                0.029                 0.029                 0.034 
          crmr_nomean            srmr_mplus     srmr_mplus_nomean 
                0.034                 0.029                 0.029 
                cn_05                 cn_01                   gfi 
              262.150               349.679                 0.982 
                 agfi                  pgfi                   mfi 
                0.938                 0.281                 0.990 
                 ecvi 
                0.177 

3. Visualise model

Chart 3 illustrates the model with a path diagram. The path diagram shows the completely standardised solution between the variables and the R2 and residuals for each endogenous variable. The degree to which defence mechanisms, self-efficacy and irrational ideas explained emotion and behavioural intentions was evident; however, regarded as somewhat weak. The degree to which emotion explained behavioural intentions was regarded as moderate. Together, behavioural intentions and emotion explained 68 per cent of the variation in reaction to organisational change, and this result was verging on strong.

4. Evaluate model

Output 2

Output 2 summarises the model’s goodness of fit statistics. When compared to goodness of fit targets, the model performed well.

Note: Fit measure targets: CFI, TLI, GFI > 0.90 | RMSEA, SRMR < 0.05.


Summary of model fit statistics
  cfi   tli   gfi rmsea  srmr 
0.992 0.981 0.982 0.059 0.029 

References:

Self-efficacy was measured using the ‘Self-efficacy scale: Construction and validation’ by Sherer, Maddux, Mercandante, Prentice-Dunn and Rogers, published in Psychological Reports.
Irrational ideas were measured using the ‘Irrational belief scale’ developed by Malouff and Schutte, published in the Sourcebook of Adult Assessment Strategies, based on Ellis and Harper’s work, published in A New Guide to Rational Living.
Maladaptive defence mechanisms were measured using selected items from ‘The Defense Style Questionnaire’ by Andrews, Singh and Bond, published in The Journal of Nervous and Mental Disease.
Emotion was measured using ‘A semantic differential mood scale’ by Lorr and Wunderlich, published in the Journal of Clinical Psychology.


Session information and package update

## ─ Session info ───────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.4.0 (2024-04-24 ucrt)
##  os       Windows 11 x64 (build 22631)
##  system   x86_64, mingw32
##  ui       RTerm
##  language (EN)
##  collate  English_Australia.utf8
##  ctype    English_Australia.utf8
##  tz       Australia/Brisbane
##  date     2024-07-30
##  pandoc   3.1.11 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────
##  ! package      * version   date (UTC) lib source
##    abind          1.4-5     2016-07-21 [1] CRAN (R 4.4.0)
##    arm            1.14-4    2024-04-01 [1] CRAN (R 4.4.0)
##    backports      1.5.0     2024-05-23 [1] CRAN (R 4.4.0)
##    base64enc      0.1-3     2015-07-28 [1] CRAN (R 4.4.0)
##    boot           1.3-30    2024-02-26 [2] CRAN (R 4.4.0)
##    bslib          0.7.0     2024-03-29 [1] CRAN (R 4.4.0)
##    cachem         1.1.0     2024-05-16 [1] CRAN (R 4.4.0)
##    carData        3.0-5     2022-01-06 [1] CRAN (R 4.4.0)
##    checkmate      2.3.1     2023-12-04 [1] CRAN (R 4.4.0)
##    cli            3.6.3     2024-06-21 [1] CRAN (R 4.4.1)
##    cluster        2.1.6     2023-12-01 [2] CRAN (R 4.4.0)
##    coda           0.19-4.1  2024-01-31 [1] CRAN (R 4.4.0)
##    codetools      0.2-20    2024-03-31 [2] CRAN (R 4.4.0)
##    colorspace     2.1-0     2023-01-23 [1] CRAN (R 4.4.1)
##    corpcor        1.6.10    2021-09-16 [1] CRAN (R 4.4.0)
##    data.table   * 1.15.4    2024-03-30 [1] CRAN (R 4.4.0)
##    devtools       2.4.5     2022-10-11 [1] CRAN (R 4.4.0)
##    digest         0.6.36    2024-06-23 [1] CRAN (R 4.4.1)
##    dplyr        * 1.1.4     2023-11-17 [1] CRAN (R 4.4.0)
##    ellipsis       0.3.2     2021-04-29 [1] CRAN (R 4.4.0)
##    emmeans        1.10.3    2024-07-01 [1] CRAN (R 4.4.1)
##    estimability   1.5.1     2024-05-12 [1] CRAN (R 4.4.0)
##    evaluate       0.24.0    2024-06-10 [1] CRAN (R 4.4.0)
##    fansi          1.0.6     2023-12-08 [1] CRAN (R 4.4.0)
##    farver         2.1.2     2024-05-13 [1] CRAN (R 4.4.0)
##    fastmap        1.2.0     2024-05-15 [1] CRAN (R 4.4.0)
##    fdrtool        1.2.17    2021-11-13 [1] CRAN (R 4.4.0)
##    forcats      * 1.0.0     2023-01-29 [1] CRAN (R 4.4.0)
##    foreign        0.8-86    2023-11-28 [2] CRAN (R 4.4.0)
##    Formula        1.2-5     2023-02-24 [1] CRAN (R 4.4.0)
##    fs             1.6.4     2024-04-25 [1] CRAN (R 4.4.0)
##    generics       0.1.3     2022-07-05 [1] CRAN (R 4.4.0)
##    GGally       * 2.2.1     2024-02-14 [1] CRAN (R 4.4.0)
##    ggplot2      * 3.5.1     2024-04-23 [1] CRAN (R 4.4.0)
##    ggstats        0.6.0     2024-04-05 [1] CRAN (R 4.4.0)
##    glasso         1.11      2019-10-01 [1] CRAN (R 4.4.0)
##    glue           1.7.0     2024-01-09 [1] CRAN (R 4.4.0)
##    gridExtra      2.3       2017-09-09 [1] CRAN (R 4.4.0)
##    gtable         0.3.5     2024-04-22 [1] CRAN (R 4.4.0)
##    gtools         3.9.5     2023-11-20 [1] CRAN (R 4.4.0)
##    here         * 1.0.1     2020-12-13 [1] CRAN (R 4.4.0)
##    highr          0.11      2024-05-26 [1] CRAN (R 4.4.0)
##    Hmisc          5.1-3     2024-05-28 [1] CRAN (R 4.4.0)
##    hms            1.1.3     2023-03-21 [1] CRAN (R 4.4.0)
##    htmlTable      2.4.3     2024-07-21 [1] CRAN (R 4.4.1)
##    htmltools      0.5.8.1   2024-04-04 [1] CRAN (R 4.4.0)
##    htmlwidgets    1.6.4     2023-12-06 [1] CRAN (R 4.4.0)
##    httpuv         1.6.15    2024-03-26 [1] CRAN (R 4.4.0)
##    igraph         2.0.3     2024-03-13 [1] CRAN (R 4.4.0)
##    jpeg           0.1-10    2022-11-29 [1] CRAN (R 4.4.0)
##    jquerylib      0.1.4     2021-04-26 [1] CRAN (R 4.4.0)
##    jsonlite       1.8.8     2023-12-04 [1] CRAN (R 4.4.0)
##    kableExtra   * 1.4.0     2024-01-24 [1] CRAN (R 4.4.0)
##    knitr          1.48      2024-07-07 [1] CRAN (R 4.4.1)
##    kutils         1.73      2023-09-17 [1] CRAN (R 4.4.0)
##    later          1.3.2     2023-12-06 [1] CRAN (R 4.4.0)
##    lattice        0.22-6    2024-03-20 [2] CRAN (R 4.4.0)
##    lavaan       * 0.6-18    2024-06-07 [1] CRAN (R 4.4.0)
##    lifecycle      1.0.4     2023-11-07 [1] CRAN (R 4.4.0)
##    lisrelToR      0.3       2024-02-07 [1] CRAN (R 4.4.0)
##    lme4           1.1-35.5  2024-07-03 [1] CRAN (R 4.4.1)
##    lubridate    * 1.9.3     2023-09-27 [1] CRAN (R 4.4.0)
##    magrittr       2.0.3     2022-03-30 [1] CRAN (R 4.4.0)
##    MASS           7.3-60.2  2024-04-24 [2] local
##    Matrix         1.7-0     2024-03-22 [2] CRAN (R 4.4.0)
##    memoise        2.0.1     2021-11-26 [1] CRAN (R 4.4.0)
##    mi             1.1       2022-06-06 [1] CRAN (R 4.4.0)
##    mime           0.12      2021-09-28 [1] CRAN (R 4.4.0)
##    miniUI         0.1.1.1   2018-05-18 [1] CRAN (R 4.4.0)
##    minqa          1.2.7     2024-05-20 [1] CRAN (R 4.4.0)
##    mnormt         2.1.1     2022-09-26 [1] CRAN (R 4.4.0)
##    multcomp       1.4-26    2024-07-18 [1] CRAN (R 4.4.1)
##    munsell        0.5.1     2024-04-01 [1] CRAN (R 4.4.0)
##    mvtnorm        1.2-5     2024-05-21 [1] CRAN (R 4.4.0)
##    nlme           3.1-164   2023-11-27 [2] CRAN (R 4.4.0)
##    nloptr         2.1.1     2024-06-25 [1] CRAN (R 4.4.1)
##    nnet           7.3-19    2023-05-03 [2] CRAN (R 4.4.0)
##    OpenMx         2.21.11   2023-11-28 [1] CRAN (R 4.4.0)
##    openxlsx       4.2.6.1   2024-07-23 [1] CRAN (R 4.4.1)
##    pbapply        1.7-2     2023-06-27 [1] CRAN (R 4.4.0)
##    pbivnorm       0.6.0     2015-01-23 [1] CRAN (R 4.4.0)
##    pillar         1.9.0     2023-03-22 [1] CRAN (R 4.4.0)
##    pkgbuild       1.4.4     2024-03-17 [1] CRAN (R 4.4.0)
##    pkgconfig      2.0.3     2019-09-22 [1] CRAN (R 4.4.0)
##    pkgload        1.4.0     2024-06-28 [1] CRAN (R 4.4.1)
##    plyr           1.8.9     2023-10-02 [1] CRAN (R 4.4.0)
##    png            0.1-8     2022-11-29 [1] CRAN (R 4.4.0)
##    profvis        0.3.8     2023-05-02 [1] CRAN (R 4.4.0)
##    promises       1.3.0     2024-04-05 [1] CRAN (R 4.4.0)
##    psych        * 2.4.6.26  2024-06-27 [1] CRAN (R 4.4.1)
##    purrr        * 1.0.2     2023-08-10 [1] CRAN (R 4.4.0)
##    qgraph         1.9.8     2023-11-03 [1] CRAN (R 4.4.0)
##    quadprog       1.5-8     2019-11-20 [1] CRAN (R 4.4.0)
##    R6             2.5.1     2021-08-19 [1] CRAN (R 4.4.0)
##    RColorBrewer   1.1-3     2022-04-03 [1] CRAN (R 4.4.0)
##    Rcpp           1.0.13    2024-07-17 [1] CRAN (R 4.4.1)
##  D RcppParallel   5.1.8     2024-07-06 [1] CRAN (R 4.4.1)
##    readr        * 2.1.5     2024-01-10 [1] CRAN (R 4.4.0)
##    remotes        2.5.0     2024-03-17 [1] CRAN (R 4.4.0)
##    reshape2       1.4.4     2020-04-09 [1] CRAN (R 4.4.0)
##    rlang          1.1.4     2024-06-04 [1] CRAN (R 4.4.0)
##    rmarkdown      2.27      2024-05-17 [1] CRAN (R 4.4.0)
##    rockchalk      1.8.157   2022-08-06 [1] CRAN (R 4.4.0)
##    rpart          4.1.23    2023-12-05 [2] CRAN (R 4.4.0)
##    rprojroot      2.0.4     2023-11-05 [1] CRAN (R 4.4.0)
##    rstudioapi     0.16.0    2024-03-24 [1] CRAN (R 4.4.0)
##    sandwich       3.1-0     2023-12-11 [1] CRAN (R 4.4.0)
##    sass           0.4.9     2024-03-15 [1] CRAN (R 4.4.0)
##    scales         1.3.0     2023-11-28 [1] CRAN (R 4.4.0)
##    sem            3.1-15    2022-04-10 [1] CRAN (R 4.4.0)
##    semPlot      * 1.1.6     2022-08-10 [1] CRAN (R 4.4.0)
##    semTools     * 0.5-6     2022-05-10 [1] CRAN (R 4.4.0)
##    sessioninfo    1.2.2     2021-12-06 [1] CRAN (R 4.4.0)
##    shiny          1.8.1.1   2024-04-02 [1] CRAN (R 4.4.0)
##    stringi        1.8.4     2024-05-06 [1] CRAN (R 4.4.0)
##    stringr      * 1.5.1     2023-11-14 [1] CRAN (R 4.4.0)
##    survival       3.5-8     2024-02-14 [2] CRAN (R 4.4.0)
##    svglite        2.1.3     2023-12-08 [1] CRAN (R 4.4.0)
##    systemfonts    1.1.0     2024-05-15 [1] CRAN (R 4.4.0)
##    TH.data        1.1-2     2023-04-17 [1] CRAN (R 4.4.0)
##    tibble       * 3.2.1     2023-03-20 [1] CRAN (R 4.4.0)
##    tidyr        * 1.3.1     2024-01-24 [1] CRAN (R 4.4.0)
##    tidyselect     1.2.1     2024-03-11 [1] CRAN (R 4.4.0)
##    tidyverse    * 2.0.0     2023-02-22 [1] CRAN (R 4.4.0)
##    timechange     0.3.0     2024-01-18 [1] CRAN (R 4.4.0)
##    tzdb           0.4.0     2023-05-12 [1] CRAN (R 4.4.0)
##    urlchecker     1.0.1     2021-11-30 [1] CRAN (R 4.4.0)
##    usethis        2.2.3     2024-02-19 [1] CRAN (R 4.4.0)
##    utf8           1.2.4     2023-10-22 [1] CRAN (R 4.4.0)
##    vctrs          0.6.5     2023-12-01 [1] CRAN (R 4.4.0)
##    viridisLite    0.4.2     2023-05-02 [1] CRAN (R 4.4.0)
##    withr          3.0.0     2024-01-16 [1] CRAN (R 4.4.0)
##    xfun           0.46      2024-07-18 [1] CRAN (R 4.4.1)
##    XML            3.99-0.17 2024-06-25 [1] CRAN (R 4.4.1)
##    xml2           1.3.6     2023-12-04 [1] CRAN (R 4.4.0)
##    xtable         1.8-4     2019-04-21 [1] CRAN (R 4.4.0)
##    yaml           2.3.9     2024-07-05 [1] CRAN (R 4.4.1)
##    zip            2.3.1     2024-01-27 [1] CRAN (R 4.4.0)
##    zoo            1.8-12    2023-04-13 [1] CRAN (R 4.4.0)
## 
##  [1] C:/Users/wayne/AppData/Local/R/win-library/4.4
##  [2] C:/Program Files/R/R-4.4.0/library
## 
##  D ── DLL MD5 mismatch, broken installation.
## 
## ──────────────────────────────────────────────────────────────────────────────