Structural Equation Modelling
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.
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.
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.
| 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.
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
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.
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 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.
##
## ──────────────────────────────────────────────────────────────────────────────