PTSD and Distress Among the Ukrainian Population During the War: Does Media Traumatization Play a Mediating Role?

Analytical Code Report — Working Version

Author

Andrii Bova

Published

February 23, 2026

Abstract

Background. Media consumption during armed conflict may amplify the psychological burden imposed by trauma exposure. Objective. This study tests whether media traumatization mediates the relationship between PTSD symptomatology and psychological distress in a nationally representative Ukrainian wartime sample. Methods. Data were drawn from a CATI/CAVI survey conducted in October 2023 (N = 2,767). Psychological distress was assessed via a 28-item adaptation of the SCL-90-R (SCL-28), modeled as a hierarchical second-order latent factor. PTSD and media traumatization were each operationalized as single-factor latent constructs. A full-information SEM was estimated using the WLSMV estimator with sampling weights. Results. The hierarchical SCL-28 structure demonstrated acceptable fit. The indirect effect of PTSD on distress via media traumatization was statistically significant, indicating partial mediation. Conclusions. War-related media exposure constitutes a secondary pathway through which PTSD translates into broader psychological distress.

Keywords

psychological distress, PTSD, media traumatization, structural equation modeling, mediation analysis, wartime Ukraine, SCL-28, confirmatory factor analysis

Packages

Show / Hide Code
# ── Core data wrangling ───────────────────────────────────────────────────────
library(here)
library(haven)
library(dplyr)
library(purrr)
library(stringr)
library(tibble)

# ── SEM / CFA ─────────────────────────────────────────────────────────────────
library(lavaan)
library(semTools)
library(lavaanExtra)
library(lavaanPlot)
library(BifactorIndicesCalculator)
library(semPlot)

# ── Psychometrics ─────────────────────────────────────────────────────────────
library(psych)
library(sjmisc)

# ── Visualization ─────────────────────────────────────────────────────────────
library(ggcorrplot)
library(patchwork)
library(DiagrammeR)

# ── Reporting tables ──────────────────────────────────────────────────────────
library(knitr)
library(kableExtra)
library(gridExtra)

Introduction

The empirical basis of this study is data from a sociological survey conducted within the framework of the Institute of Sociology of the National Academy of Sciences of Ukraine project, “Stress States of the Ukrainian Population in the Context of War: Prevalence, Risk Groups, and Compensation Pathways” (Project PI: Dr. Serhii Dembitskyi). The survey was carried out by the “Rating” group across Ukraine (excluding occupied territories of Crimea and Donbas) from October 6–10, 2023, using the CATI-CAVI method. The sample includes 2,767 respondents (Dembitskyi, 2023), with an overview of the primary survey results presented in Dembitskyi et al. (2025).

The present study represents an independent analytical contribution to this research program. While drawing on the same empirical dataset, the current analysis pursues a distinct research objective: testing a theoretically grounded mediation model using confirmatory factor analysis (CFA) and structural equation modeling (SEM), with the inclusion of additional measurement scales not analyzed in the original publication. Specifically, this study introduces a hierarchical second-order CFA structure for the SCL-28 distress instrument, a bifactor model comparison, and a formal test of media traumatization as a mediator between PTSD and psychological distress.

1 Research Objective and Hypotheses

RQ: Does media traumatization mediate the relationship between PTSD and psychological distress?

H1: PTSD positively predicts psychological distress.
H2: PTSD positively predicts media traumatization.
H3: The effect of PTSD on distress is partially mediated by media traumatization.

2 Measures

2.1 Psychological Distress (SCL-28)

Psychological distress was assessed using a 28-item adapted version of the Symptom Checklist-90-Revised (SCL-90-R; Derogatis, 1994), covering seven subscales: Depression (DPR), Anxiety (TRE), Somatization (SOM), General Exhaustion (IST), Interpersonal Sensitivity (SNS), Paranoid Ideation (PAR), and Hostility (VRG), with four items per subscale. Respondents rated the frequency of each symptom on a 4-point ordinal scale ranging from 1 (Never) to 4 (Almost constantly).

2.2 PTSD Symptoms

PTSD symptomatology was measured using five items reflecting core re-experiencing symptoms consistent with DSM-5 criteria (American Psychiatric Association, 2013), including recurrent distressing memories, nightmares, flashbacks, psychological distress at trauma-related cues, and physiological reactivity to trauma reminders. Each item was rated on a 5-point ordinal scale from 1 (Never) to 5 (Very often).

2.3 Media Traumatization

Media traumatization was operationalized as the degree of psychological impact experienced while consuming war-related media content. Five items captured both intrusive reactions (e.g., involuntary recall of distressing media images) and avoidance-related responses (e.g., deliberate efforts to suppress media-related thoughts), rated on a 5-point ordinal scale from 1 (Not at all) to 5 (Extremely). This operationalization parallels the intrusion and avoidance symptom clusters associated with trauma exposure (Holman et al., 2014).

3 Data Preparation

This section describes the data source, sampling procedure, variable operationalization, and recoding decisions made prior to analysis.

3.1 Data Loading and Initial Processing

Show / Hide Code
# Load data from SPSS file
data_raw <- read_sav(here("stressFin.sav"))

# Respondents residing in Ukraine have NA on sd11 (country of residence)
data_raw <- data_raw %>%
  filter(is.na(sd11))

cat("Total observations after filtering:", nrow(data_raw), "\n")
Total observations after filtering: 2712 

3.2 Helper Functions

Show / Hide Code
# Extract SPSS variable label from attribute
get_label <- function(x) {
  label <- attr(x, "label")
  if (is.null(label)) return(NA_character_)
  label
}

# Build a code → label reference table for a set of variables
create_variable_labels_table <- function(data, variables) {
  labels <- sapply(data[variables], get_label)
  tibble(
    Variable_Code = names(labels),
    Question_Text = unname(labels)
  )
}

4 Descriptive Statistics

Show / Hide Code
# ── Scale structure ────────────────────────────────────────────────────────────
# Distress (SCL-28): 7 subscales × 4 items = 28 items
# PTSD:              5 items  (str2.1 – str2.5)
# Media Trauma:      5 items  (str3.1 – str3.5)

variables_to_select <- c(
  paste0("str1.", c(1:4, 13:15, 17, 9:12, 5:8, 18:25, 26:28, 30)),
  paste0("str2.", 1:5),
  paste0("str3.", 1:5)
)

# Preserve SPSS question labels before renaming
question_labels <- sapply(data_raw[variables_to_select], get_label)

# ── Missing data audit ─────────────────────────────────────────────────────────
cat("\n=== MISSING DATA CHECK ===\n")

=== MISSING DATA CHECK ===
Show / Hide Code
na_check <- sapply(data_raw[variables_to_select], function(x) sum(is.na(x)))
data.frame(
  Variable       = names(na_check),
  Count_NA       = na_check,
  Percentage_NA  = round(na_check / nrow(data_raw) * 100, 2)
) |> print()
        Variable Count_NA Percentage_NA
str1.1    str1.1        0             0
str1.2    str1.2        0             0
str1.3    str1.3        0             0
str1.4    str1.4        0             0
str1.13  str1.13        0             0
str1.14  str1.14        0             0
str1.15  str1.15        0             0
str1.17  str1.17        0             0
str1.9    str1.9        0             0
str1.10  str1.10        0             0
str1.11  str1.11        0             0
str1.12  str1.12        0             0
str1.5    str1.5        0             0
str1.6    str1.6        0             0
str1.7    str1.7        0             0
str1.8    str1.8        0             0
str1.18  str1.18        0             0
str1.19  str1.19        0             0
str1.20  str1.20        0             0
str1.21  str1.21        0             0
str1.22  str1.22        0             0
str1.23  str1.23        0             0
str1.24  str1.24        0             0
str1.25  str1.25        0             0
str1.26  str1.26        0             0
str1.27  str1.27        0             0
str1.28  str1.28        0             0
str1.30  str1.30        0             0
str2.1    str2.1        0             0
str2.2    str2.2        0             0
str2.3    str2.3        0             0
str2.4    str2.4        0             0
str2.5    str2.5        0             0
str3.1    str3.1        0             0
str3.2    str3.2        0             0
str3.3    str3.3        0             0
str3.4    str3.4        0             0
str3.5    str3.5        0             0
Show / Hide Code
# ── Systematic variable renaming ───────────────────────────────────────────────
# Subscale prefixes: dpr = Depression, tre = Anxiety, som = Somatization,
#                    ist = Exhaustion, sns = Sensitivity, par = Paranoid, vrg = Hostility
new_names <- c(
  paste0(rep(c("dpr","tre","som","ist","sns","par","vrg"), each = 4), 1:4),
  paste0("ptsr",  1:5),
  paste0("mtrvm", 1:5)
)

# ── Build working dataframe ────────────────────────────────────────────────────
df <- data_raw %>%
  select(all_of(variables_to_select)) %>%
  rename_with(~ new_names, all_of(variables_to_select))

names(question_labels) <- new_names

# Attach survey weights
df$wt <- data_raw$wtAge3NP2

cat("\n=== WORKING DATASET STRUCTURE ===\n")

=== WORKING DATASET STRUCTURE ===
Show / Hide Code
cat("Observations (n):", nrow(df), "\n")
Observations (n): 2712 
Show / Hide Code
cat("Variables  (p):",   ncol(df), "\n")
Variables  (p): 39 
Show / Hide Code
labels_table <- data.frame(
  Variable_Code = variables_to_select,
  New_Name      = new_names,
  Question_Text = unname(question_labels),
  stringsAsFactors = FALSE
) %>%
  mutate(
    Scale = case_when(
      str_detect(New_Name, "^dpr")   ~ "Depression",
      str_detect(New_Name, "^tre")   ~ "Anxiety",
      str_detect(New_Name, "^som")   ~ "Somatization",
      str_detect(New_Name, "^ist")   ~ "General Exhaustion",
      str_detect(New_Name, "^sns")   ~ "Interpersonal Sensitivity",
      str_detect(New_Name, "^par")   ~ "Paranoid Ideation",
      str_detect(New_Name, "^vrg")   ~ "Hostility",
      str_detect(New_Name, "^ptsr")  ~ "PTSD",
      str_detect(New_Name, "^mtrvm") ~ "Media Traumatization",
      TRUE ~ "Other"
    )
  ) %>%
  select(Scale, New_Name, Variable_Code, Question_Text)

labels_table %>%
  kable(
    col.names = c("Scale", "ID", "Original Code", "Question Text"),
    align     = c("l", "l", "l", "l")
  ) %>%
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed"),
    full_width = FALSE,
    font_size  = 11
  ) %>%
  column_spec(1, bold = TRUE, width = "3cm") %>%
  column_spec(4, width = "10cm") %>%
  collapse_rows(columns = 1, valign = "top")
Table 1: Study Variables and Item Formulations
Scale ID Original Code Question Text
Depression dpr1 str1.1 Пригнічений настрій, «хандра»
dpr2 str1.2 Відчуття, що майбутнє безнадійне
dpr3 str1.3 Думки про смерть
dpr4 str1.4 Відчуття втрати сенсу життя
Anxiety tre1 str1.13 Повторювана знервованість або внутрішнє тремтіння
tre2 str1.14 Відчуття страху
tre3 str1.15 Відчуття, що з Вами станеться щось погане
tre4 str1.17 Відчуття напруженості або збудженості
Somatization som1 str1.9 Відчуття слабкості в різних частинах тіла
som2 str1.10 Сильне або прискорене серцебиття
som3 str1.11 Ускладнене дихання
som4 str1.12 Напади жару чи ознобу
General Exhaustion ist1 str1.5 Знесилення чи загальмованість
ist2 str1.6 Те, що Ви легко губите думку
ist3 str1.7 Те, що Вам важко зосередитися
ist4 str1.8 Відсутність мотивації
Interpersonal Sensitivity sns1 str1.18 Відчуття, що Ви гірші за інших
sns2 str1.19 Відчуття незручності, коли люди спостерігають за Вами або говорять про Вас
sns3 str1.20 Надмірна сором’язливість при спілкуванні з іншими
sns4 str1.21 Те, що Ваші почуття легко зачепити
Paranoid Ideation par1 str1.22 Відчуття, що більшості людей не можна довіряти
par2 str1.23 Наявність у Вас ідей, які не поділяють інші
par3 str1.24 Відчуття, що люди зловживають Вашою довірою, якщо Ви їм дозволите
par4 str1.25 Відчуття, що Вас зрадили
Hostility vrg1 str1.26 Те, що Ви часто вступаєте в суперечку
vrg2 str1.27 Те, що Ви кричите або шпурляєте речі
vrg3 str1.28 Імпульси ламати або трощити що-небудь
vrg4 str1.30 Спалахи гніву, які Ви не могли стримати
PTSD ptsr1 str2.1 Повторювалися тривожні спогади, думки чи уявні картини стресового досвіду з минулого
ptsr2 str2.2 Повторювалися тривожні сни про стресовий досвід з минулого
ptsr3 str2.3 Виникали раптові відчуття, ніби стресова подія відбувається знову (або діяли так, наче Ви знову це переживаєте)
ptsr4 str2.4 Почувалися сильно засмученими, коли Вам щось нагадувало стресовий досвід з минулого
ptsr5 str2.5 Були фізичні реакції, коли щось нагадало Вам про стресовий досвід з минулого
Media Traumatization mtrvm1 str3.1 Коли переглядали/ознайомлювалися, відчувалося, що це реально відбувається зараз зі мною
mtrvm2 str3.2 Картини побаченого/прочитаного потім виринали в моїй пам'яті
mtrvm3 str3.3 У мене були хвилі сильних почуттів з приводу побаченого/прочитаного
mtrvm4 str3.4 Ви думали про побачене/прочитане, навіть коли не хотіли
mtrvm5 str3.5 Ви намагалися не думати про побачене/прочитане

4.0.1 Distress Subscales

Show / Hide Code
subscale_vars <- list(
  Depression              = paste0("dpr",   1:4),
  Anxiety                 = paste0("tre",   1:4),
  Somatization            = paste0("som",   1:4),
  `General Exhaustion`    = paste0("ist",   1:4),
  `Interpersonal Sensitivity` = paste0("sns", 1:4),
  Hostility               = paste0("par",   1:4),
  `Paranoid Ideation`     = paste0("vrg",   1:4)
)

for (scale_name in names(subscale_vars)) {
  message("Displaying Frequencies: ", scale_name)
  sjmisc::frq(df[, subscale_vars[[scale_name]]], weights = df$wt)
}

4.0.2 PTSD

Show / Hide Code
sjmisc::frq(df[, paste0("ptsr", 1:5)], weights = df$wt)
Повторювалися тривожні спогади, думки чи уявні картини стресового досвіду з минулого (ptsr1) <numeric> 
# total N=2746 valid N=2746 mean=2.58 sd=0.99

Value |        Label |    N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |       Ніколи |  507 | 18.46 |   18.46 |  18.46
    2 | Майже ніколи |  581 | 21.16 |   21.16 |  39.62
    3 |        Іноді | 1305 | 47.52 |   47.52 |  87.14
    4 | Досить часто |  273 |  9.94 |    9.94 |  97.09
    5 |   Дуже часто |   80 |  2.91 |    2.91 | 100.00
 <NA> |         <NA> |    0 |  0.00 |    <NA> |   <NA>

Повторювалися тривожні сни про стресовий досвід з минулого (ptsr2) <numeric> 
# total N=2746 valid N=2746 mean=2.26 sd=1.04

Value |        Label |    N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |       Ніколи |  843 | 30.70 |   30.70 |  30.70
    2 | Майже ніколи |  659 | 24.00 |   24.00 |  54.70
    3 |        Іноді | 1003 | 36.53 |   36.53 |  91.22
    4 | Досить часто |  167 |  6.08 |    6.08 |  97.31
    5 |   Дуже часто |   74 |  2.69 |    2.69 | 100.00
 <NA> |         <NA> |    0 |  0.00 |    <NA> |   <NA>

Виникали раптові відчуття, ніби стресова подія відбувається знову (або діяли так, наче Ви знову це переживаєте) (ptsr3) <numeric> 
# total N=2746 valid N=2746 mean=2.22 sd=1.01

Value |        Label |   N | Raw % | Valid % | Cum. %
-----------------------------------------------------
    1 |       Ніколи | 864 | 31.46 |   31.46 |  31.46
    2 | Майже ніколи | 686 | 24.98 |   24.98 |  56.45
    3 |        Іноді | 988 | 35.98 |   35.98 |  92.43
    4 | Досить часто | 156 |  5.68 |    5.68 |  98.11
    5 |   Дуже часто |  52 |  1.89 |    1.89 | 100.00
 <NA> |         <NA> |   0 |  0.00 |    <NA> |   <NA>

Почувалися сильно засмученими, коли Вам щось нагадувало стресовий досвід з минулого (ptsr4) <numeric> 
# total N=2747 valid N=2747 mean=2.57 sd=1.03

Value |        Label |    N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |       Ніколи |  538 | 19.59 |   19.59 |  19.59
    2 | Майже ніколи |  584 | 21.26 |   21.26 |  40.84
    3 |        Іноді | 1238 | 45.07 |   45.07 |  85.91
    4 | Досить часто |  292 | 10.63 |   10.63 |  96.54
    5 |   Дуже часто |   95 |  3.46 |    3.46 | 100.00
 <NA> |         <NA> |    0 |  0.00 |    <NA> |   <NA>

Були фізичні реакції, коли щось нагадало Вам про стресовий досвід з минулого (ptsr5) <numeric> 
# total N=2747 valid N=2747 mean=2.29 sd=1.06

Value |        Label |    N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |       Ніколи |  867 | 31.56 |   31.56 |  31.56
    2 | Майже ніколи |  565 | 20.57 |   20.57 |  52.13
    3 |        Іноді | 1040 | 37.86 |   37.86 |  89.99
    4 | Досить часто |  213 |  7.75 |    7.75 |  97.74
    5 |   Дуже часто |   62 |  2.26 |    2.26 | 100.00
 <NA> |         <NA> |    0 |  0.00 |    <NA> |   <NA>

4.0.3 Media Traumatization

Show / Hide Code
sjmisc::frq(df[, paste0("mtrvm", 1:5)], weights = df$wt)
Коли переглядали/ознайомлювалися, відчувалося, що це реально відбувається зараз зі мною (mtrvm1) <numeric> 
# total N=2746 valid N=2746 mean=2.27 sd=1.07

Value |         Label |   N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |     Зовсім ні | 785 | 28.59 |   28.59 |  28.59
    2 |         Трохи | 889 | 32.37 |   32.37 |  60.96
    3 |       Помірно | 670 | 24.40 |   24.40 |  85.36
    4 | Досить сильно | 345 | 12.56 |   12.56 |  97.92
    5 |   Надзвичайно |  57 |  2.08 |    2.08 | 100.00
 <NA> |          <NA> |   0 |  0.00 |    <NA> |   <NA>

Картини побаченого/прочитаного потім виринали в моїй пам'яті (mtrvm2) <numeric> 
# total N=2745 valid N=2745 mean=2.40 sd=1.01

Value |         Label |    N | Raw % | Valid % | Cum. %
-------------------------------------------------------
    1 |     Зовсім ні |  537 | 19.56 |   19.56 |  19.56
    2 |         Трохи | 1036 | 37.74 |   37.74 |  57.30
    3 |       Помірно |  754 | 27.47 |   27.47 |  84.77
    4 | Досить сильно |  362 | 13.19 |   13.19 |  97.96
    5 |   Надзвичайно |   56 |  2.04 |    2.04 | 100.00
 <NA> |          <NA> |    0 |  0.00 |    <NA> |   <NA>

У мене були хвилі сильних почуттів з приводу побаченого/прочитаного (mtrvm3) <numeric> 
# total N=2747 valid N=2747 mean=2.82 sd=1.04

Value |         Label |   N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |     Зовсім ні | 282 | 10.27 |   10.27 |  10.27
    2 |         Трохи | 830 | 30.21 |   30.21 |  40.48
    3 |       Помірно | 840 | 30.58 |   30.58 |  71.06
    4 | Досить сильно | 692 | 25.19 |   25.19 |  96.25
    5 |   Надзвичайно | 103 |  3.75 |    3.75 | 100.00
 <NA> |          <NA> |   0 |  0.00 |    <NA> |   <NA>

Ви думали про побачене/прочитане, навіть коли не хотіли (mtrvm4) <numeric> 
# total N=2747 valid N=2747 mean=2.47 sd=1.05

Value |         Label |   N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |     Зовсім ні | 522 | 19.00 |   19.00 |  19.00
    2 |         Трохи | 985 | 35.86 |   35.86 |  54.86
    3 |       Помірно | 756 | 27.52 |   27.52 |  82.38
    4 | Досить сильно | 396 | 14.42 |   14.42 |  96.80
    5 |   Надзвичайно |  88 |  3.20 |    3.20 | 100.00
 <NA> |          <NA> |   0 |  0.00 |    <NA> |   <NA>

Ви намагалися не думати про побачене/прочитане (mtrvm5) <numeric> 
# total N=2746 valid N=2746 mean=2.41 sd=1.05

Value |         Label |   N | Raw % | Valid % | Cum. %
------------------------------------------------------
    1 |     Зовсім ні | 594 | 21.63 |   21.63 |  21.63
    2 |         Трохи | 947 | 34.49 |   34.49 |  56.12
    3 |       Помірно | 787 | 28.66 |   28.66 |  84.78
    4 | Досить сильно | 329 | 11.98 |   11.98 |  96.76
    5 |   Надзвичайно |  89 |  3.24 |    3.24 | 100.00
 <NA> |          <NA> |   0 |  0.00 |    <NA> |   <NA>

5 Distress Measurement Model (SCL-28): CFA

5.1 Polychoric Correlations

Show / Hide Code
scl_items <- c(
  paste0("dpr", 1:4), paste0("tre", 1:4), paste0("som", 1:4),
  paste0("ist", 1:4), paste0("sns", 1:4), paste0("par", 1:4),
  paste0("vrg", 1:4)
)

poly_result <- polychoric(df[, scl_items], weight = df$wt)
poly_matrix  <- poly_result$rho

ggcorrplot(
  poly_matrix,
  method        = "square",
  type          = "full",
  lab           = FALSE,
  tl.cex        = 7,
  colors        = c("#4575B4", "white", "#D73027"),
  outline.color = "white"
) +
  labs(
    title    = "Polychoric Correlation Matrix — SCL-28 Items",
    subtitle = "Items ordered by subscale (DPR, TRE, SOM, IST, SNS, PAR, VRG); no clustering applied",
    fill     = "r (polychoric)"
  )
Figure 1: Polychoric Correlation Matrix of SCL-28 Items (ordered by subscale)
Show / Hide Code
kable(round(poly_matrix, 2), align = "c") %>%
  kable_styling(
    bootstrap_options = c("striped", "condensed"),
    font_size  = 9,
    full_width = TRUE
  ) %>%
  scroll_box(width = "100%", height = "400px")
Table 2: Polychoric Correlation Matrix of SCL-28 Items
dpr1 dpr2 dpr3 dpr4 tre1 tre2 tre3 tre4 som1 som2 som3 som4 ist1 ist2 ist3 ist4 sns1 sns2 sns3 sns4 par1 par2 par3 par4 vrg1 vrg2 vrg3 vrg4
dpr1 1.00 0.47 0.42 0.53 0.52 0.50 0.47 0.50 0.44 0.39 0.37 0.46 0.57 0.39 0.46 0.49 0.42 0.34 0.29 0.45 0.29 0.25 0.32 0.37 0.28 0.34 0.35 0.41
dpr2 0.47 1.00 0.45 0.64 0.38 0.41 0.48 0.36 0.33 0.27 0.30 0.28 0.40 0.33 0.34 0.47 0.44 0.30 0.27 0.33 0.33 0.23 0.30 0.38 0.24 0.26 0.35 0.34
dpr3 0.42 0.45 1.00 0.56 0.40 0.39 0.47 0.40 0.35 0.34 0.33 0.33 0.39 0.27 0.29 0.34 0.39 0.27 0.22 0.36 0.28 0.29 0.26 0.38 0.24 0.28 0.31 0.31
dpr4 0.53 0.64 0.56 1.00 0.45 0.42 0.52 0.39 0.36 0.32 0.33 0.33 0.48 0.35 0.42 0.53 0.50 0.36 0.31 0.38 0.32 0.30 0.32 0.44 0.29 0.32 0.46 0.38
tre1 0.52 0.38 0.40 0.45 1.00 0.53 0.49 0.55 0.43 0.48 0.46 0.50 0.50 0.40 0.46 0.39 0.43 0.35 0.29 0.43 0.31 0.28 0.36 0.40 0.28 0.35 0.36 0.44
tre2 0.50 0.41 0.39 0.42 0.53 1.00 0.52 0.48 0.39 0.41 0.34 0.40 0.43 0.36 0.41 0.36 0.39 0.37 0.33 0.46 0.21 0.22 0.28 0.32 0.23 0.24 0.29 0.34
tre3 0.47 0.48 0.47 0.52 0.49 0.52 1.00 0.42 0.39 0.40 0.36 0.38 0.42 0.39 0.42 0.37 0.47 0.36 0.33 0.40 0.30 0.27 0.33 0.36 0.25 0.29 0.35 0.35
tre4 0.50 0.36 0.40 0.39 0.55 0.48 0.42 1.00 0.42 0.43 0.39 0.40 0.50 0.39 0.45 0.37 0.37 0.36 0.27 0.49 0.31 0.34 0.37 0.35 0.33 0.35 0.31 0.43
som1 0.44 0.33 0.35 0.36 0.43 0.39 0.39 0.42 1.00 0.44 0.50 0.48 0.53 0.38 0.38 0.31 0.30 0.32 0.22 0.39 0.34 0.23 0.30 0.36 0.27 0.29 0.26 0.36
som2 0.39 0.27 0.34 0.32 0.48 0.41 0.40 0.43 0.44 1.00 0.54 0.48 0.40 0.31 0.36 0.25 0.29 0.33 0.24 0.37 0.28 0.25 0.29 0.28 0.23 0.24 0.24 0.31
som3 0.37 0.30 0.33 0.33 0.46 0.34 0.36 0.39 0.50 0.54 1.00 0.52 0.44 0.32 0.37 0.25 0.30 0.27 0.24 0.32 0.28 0.24 0.30 0.33 0.22 0.28 0.34 0.31
som4 0.46 0.28 0.33 0.33 0.50 0.40 0.38 0.40 0.48 0.48 0.52 1.00 0.43 0.30 0.33 0.25 0.29 0.31 0.22 0.34 0.22 0.23 0.30 0.35 0.18 0.27 0.27 0.36
ist1 0.57 0.40 0.39 0.48 0.50 0.43 0.42 0.50 0.53 0.40 0.44 0.43 1.00 0.48 0.48 0.45 0.41 0.36 0.28 0.42 0.27 0.27 0.31 0.35 0.28 0.34 0.36 0.39
ist2 0.39 0.33 0.27 0.35 0.40 0.36 0.39 0.39 0.38 0.31 0.32 0.30 0.48 1.00 0.55 0.38 0.39 0.34 0.34 0.42 0.25 0.26 0.29 0.31 0.32 0.34 0.34 0.36
ist3 0.46 0.34 0.29 0.42 0.46 0.41 0.42 0.45 0.38 0.36 0.37 0.33 0.48 0.55 1.00 0.45 0.42 0.37 0.35 0.41 0.23 0.28 0.30 0.32 0.26 0.33 0.33 0.38
ist4 0.49 0.47 0.34 0.53 0.39 0.36 0.37 0.37 0.31 0.25 0.25 0.25 0.45 0.38 0.45 1.00 0.45 0.32 0.32 0.35 0.30 0.26 0.33 0.34 0.25 0.27 0.33 0.32
sns1 0.42 0.44 0.39 0.50 0.43 0.39 0.47 0.37 0.30 0.29 0.30 0.29 0.41 0.39 0.42 0.45 1.00 0.47 0.47 0.39 0.29 0.29 0.38 0.38 0.22 0.31 0.34 0.34
sns2 0.34 0.30 0.27 0.36 0.35 0.37 0.36 0.36 0.32 0.33 0.27 0.31 0.36 0.34 0.37 0.32 0.47 1.00 0.50 0.44 0.28 0.29 0.35 0.35 0.25 0.27 0.29 0.34
sns3 0.29 0.27 0.22 0.31 0.29 0.33 0.33 0.27 0.22 0.24 0.24 0.22 0.28 0.34 0.35 0.32 0.47 0.50 1.00 0.38 0.23 0.26 0.28 0.27 0.13 0.21 0.27 0.26
sns4 0.45 0.33 0.36 0.38 0.43 0.46 0.40 0.49 0.39 0.37 0.32 0.34 0.42 0.42 0.41 0.35 0.39 0.44 0.38 1.00 0.29 0.28 0.36 0.38 0.35 0.36 0.28 0.40
par1 0.29 0.33 0.28 0.32 0.31 0.21 0.30 0.31 0.34 0.28 0.28 0.22 0.27 0.25 0.23 0.30 0.29 0.28 0.23 0.29 1.00 0.31 0.43 0.40 0.20 0.23 0.25 0.29
par2 0.25 0.23 0.29 0.30 0.28 0.22 0.27 0.34 0.23 0.25 0.24 0.23 0.27 0.26 0.28 0.26 0.29 0.29 0.26 0.28 0.31 1.00 0.31 0.31 0.30 0.24 0.27 0.27
par3 0.32 0.30 0.26 0.32 0.36 0.28 0.33 0.37 0.30 0.29 0.30 0.30 0.31 0.29 0.30 0.33 0.38 0.35 0.28 0.36 0.43 0.31 1.00 0.48 0.27 0.22 0.25 0.32
par4 0.37 0.38 0.38 0.44 0.40 0.32 0.36 0.35 0.36 0.28 0.33 0.35 0.35 0.31 0.32 0.34 0.38 0.35 0.27 0.38 0.40 0.31 0.48 1.00 0.26 0.28 0.37 0.38
vrg1 0.28 0.24 0.24 0.29 0.28 0.23 0.25 0.33 0.27 0.23 0.22 0.18 0.28 0.32 0.26 0.25 0.22 0.25 0.13 0.35 0.20 0.30 0.27 0.26 1.00 0.42 0.36 0.43
vrg2 0.34 0.26 0.28 0.32 0.35 0.24 0.29 0.35 0.29 0.24 0.28 0.27 0.34 0.34 0.33 0.27 0.31 0.27 0.21 0.36 0.23 0.24 0.22 0.28 0.42 1.00 0.52 0.54
vrg3 0.35 0.35 0.31 0.46 0.36 0.29 0.35 0.31 0.26 0.24 0.34 0.27 0.36 0.34 0.33 0.33 0.34 0.29 0.27 0.28 0.25 0.27 0.25 0.37 0.36 0.52 1.00 0.52
vrg4 0.41 0.34 0.31 0.38 0.44 0.34 0.35 0.43 0.36 0.31 0.31 0.36 0.39 0.36 0.38 0.32 0.34 0.34 0.26 0.40 0.29 0.27 0.32 0.38 0.43 0.54 0.52 1.00

5.2 Common Method Bias: Harman’s Single-Factor Test

What this section tests. All 28 SCL-28 items were collected via a single self-report questionnaire, raising the possibility of Common Method Bias (CMB). Harman’s single-factor CFA test evaluates whether a single unmeasured factor can account for the majority of variance across all indicators. Poor model fit (CFI < .95, RMSEA > .08) provides evidence against a dominant common method factor.

Limitation note. Harman’s test is a necessary but not sufficient test for CMB. It identifies the worst case but cannot rule out partial method effects. Results should be interpreted alongside substantive design considerations.

Show / Hide Code
model.harman <- '
  CMB_Factor =~ dpr1 + dpr2 + dpr3 + dpr4 +
                tre1 + tre2 + tre3 + tre4 +
                som1 + som2 + som3 + som4 +
                ist1 + ist2 + ist3 + ist4 +
                sns1 + sns2 + sns3 + sns4 +
                par1 + par2 + par3 + par4 +
                vrg1 + vrg2 + vrg3 + vrg4
'

fit.harman <- cfa(
  model            = model.harman,
  data             = df,
  estimator        = "WLSMV",
  ordered          = TRUE,
  sampling.weights = "wt",
  std.lv           = TRUE,
  se               = "robust"
)

harman_fit <- fitMeasures(fit.harman, c(
  "chisq.scaled", "df.scaled", "pvalue.scaled",
  "cfi.robust",   "tli.robust",
  "rmsea.robust", "rmsea.ci.lower.robust", "rmsea.ci.upper.robust",
  "srmr"
))

data.frame(
  `Fit Index` = c(
    "χ² (Scaled)", "df", "p-value",
    "CFI (Robust)", "TLI (Robust)",
    "RMSEA (Robust)", "RMSEA 90% CI Lower", "RMSEA 90% CI Upper",
    "SRMR"
  ),
  Value                  = round(as.numeric(harman_fit), 3),
  `Acceptable Threshold` = c("—","—","—","≥ .95","≥ .95","≤ .06","—","—","≤ .08"),
  check.names = FALSE
) %>%
  kable(align = c("l","c","c")) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 3: Harman’s Single-Factor CFA — Fit Indices (Common Method Bias Test)
Fit Index Value Acceptable Threshold
χ² (Scaled) 3914.724
df 350.000
p-value 0.000
CFI (Robust) 0.813 ≥ .95
TLI (Robust) 0.798 ≥ .95
RMSEA (Robust) 0.080 ≤ .06
RMSEA 90% CI Lower 0.078
RMSEA 90% CI Upper 0.082
SRMR 0.056 ≤ .08

Note. Poor fit of the single-factor model (CFI < .95, RMSEA > .08) indicates that a dominant common method factor does not account for the majority of item covariance, providing evidence against pervasive CMB.


6 Measurement Model Validation

6.1 Single-Factor Models for Individual Subscales

What this section tests. Before evaluating the full hierarchical structure, we verify the unidimensionality of each subscale in isolation. A well-fitting single-factor model (CFI ≥ .95, RMSEA ≤ .06) confirms that the four items within each domain are locally unidimensional — a prerequisite for their use as first-order factors in the hierarchical model.

Show / Hide Code
models_list <- list(
  Depression   = "DPR =~ dpr1 + dpr2 + dpr3 + dpr4",
  Anxiety      = "TRE =~ tre1 + tre2 + tre3 + tre4",
  Somatization = "SOM =~ som1 + som2 + som3 + som4",
  Exhaustion   = "IST =~ ist1 + ist2 + ist3 + ist4",
  Sensitivity  = "SNS =~ sns1 + sns2 + sns3 + sns4",
  Paranoid     = "PAR =~ par1 + par2 + par3 + par4",
  Hostility    = "VRG =~ vrg1 + vrg2 + vrg3 + vrg4"
)

run_single_cfa <- function(model_syntax) {
  cfa(
    model            = model_syntax,
    data             = df,
    estimator        = "WLSMV",
    ordered          = TRUE,
    sampling.weights = "wt",
    std.lv           = TRUE,
    se               = "robust"
  )
}

fits_list <- lapply(models_list, run_single_cfa)

get_robust_metrics <- function(fit_obj) {
  idx <- fitMeasures(fit_obj, c(
    "chisq.scaled", "df.scaled",
    "cfi.robust", "tli.robust", "rmsea.robust", "srmr"
  ))
  round(idx, 3)
}

fit_summary <- as.data.frame(t(sapply(fits_list, get_robust_metrics)))
fit_summary$Subscale <- rownames(fit_summary)

fit_summary[, c("Subscale","chisq.scaled","df.scaled",
                "cfi.robust","tli.robust","rmsea.robust","srmr")] %>%
  kable(
    row.names = FALSE,
    col.names = c("Subscale","χ² (Scaled)","df","CFI (Robust)",
                  "TLI (Robust)","RMSEA (Robust)","SRMR"),
    align  = "lcccccc",
    digits = 3
  ) %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"))
Table 4: Fit Indices for Individual Subscale Single-Factor Models
Subscale χ² (Scaled) df CFI (Robust) TLI (Robust) RMSEA (Robust) SRMR
Depression 6.42 2 0.997 0.992 0.041 0.011
Anxiety 32.27 2 0.986 0.957 0.092 0.022
Somatization 7.37 2 0.998 0.993 0.037 0.010
Exhaustion 25.90 2 0.985 0.956 0.087 0.022
Sensitivity 5.52 2 0.998 0.993 0.033 0.010
Paranoid 3.58 2 0.999 0.996 0.020 0.009
Hostility 5.39 2 0.997 0.992 0.038 0.012

Note. CFI ≥ .95 and RMSEA ≤ .06 indicate acceptable unidimensionality.

Show / Hide Code
get_loadings <- function(fit_obj) {
  parameterEstimates(fit_obj, standardized = TRUE) %>%
    filter(op == "=~") %>%
    select(Scale = lhs, Item = rhs, Beta = std.all, p_value = pvalue)
}

all_loadings <- imap_dfr(fits_list, ~ get_loadings(.x)) %>%
  mutate(
    p_fmt = case_when(
      p_value < .001 ~ "< .001",
      TRUE           ~ sprintf("%.3f", p_value)
    )
  ) %>%
  select(Scale, Item, Beta, p_fmt)

kable(all_loadings,
      digits    = 3,
      col.names = c("Scale","Item","β (std.)","p-value"),
      align     = "llcc") %>%
  kable_styling(bootstrap_options = c("striped","hover")) %>%
  collapse_rows(columns = 1, valign = "top")
Table 5: Standardized Factor Loadings — Individual Subscale Models
Scale Item β (std.) p-value
DPR dpr1 0.632 < .001
dpr2 0.734 < .001
dpr3 0.640 < .001
dpr4 0.862 < .001
TRE tre1 0.756 < .001
tre2 0.728 < .001
tre3 0.660 < .001
tre4 0.681 < .001
SOM som1 0.654 < .001
som2 0.691 < .001
som3 0.762 < .001
som4 0.699 < .001
IST ist1 0.679 < .001
ist2 0.700 < .001
ist3 0.752 < .001
ist4 0.601 < .001
SNS sns1 0.659 < .001
sns2 0.730 < .001
sns3 0.682 < .001
sns4 0.589 < .001
PAR par1 0.620 < .001
par2 0.465 < .001
par3 0.697 < .001
par4 0.669 < .001
VRG vrg1 0.559 < .001
vrg2 0.736 < .001
vrg3 0.687 < .001
vrg4 0.745 < .001

Note. All loadings estimated with robust WLSMV; sampling weights applied.

6.2 Correlated First-Order Factors Model (M1 — Baseline)

What this section tests. The correlated first-order factors model (M1) treats the seven SCL-28 subscales as distinct but inter-correlated latent constructs, without imposing any higher-order structure. This model serves two purposes: (1) it provides a baseline against which the more parsimonious hierarchical model (M2) can be formally compared; and (2) it allows direct inspection of inter-factor correlations to assess discriminant validity.

Discriminant validity criterion. If inter-factor correlations systematically exceed √AVE (Fornell–Larcker criterion) or HTMT ratios exceed .85, the constructs may not be sufficiently distinct to warrant separate measurement.

Show / Hide Code
model.corr_factors <- '
  DPR =~ dpr1 + dpr2 + dpr3 + dpr4
  TRE =~ tre1 + tre2 + tre3 + tre4
  SOM =~ som1 + som2 + som3 + som4
  IST =~ ist1 + ist2 + ist3 + ist4
  SNS =~ sns1 + sns2 + sns3 + sns4
  PAR =~ par1 + par2 + par3 + par4
  VRG =~ vrg1 + vrg2 + vrg3 + vrg4
'

fit.corr <- cfa(
  model            = model.corr_factors,
  data             = df,
  estimator        = "WLSMV",
  ordered          = TRUE,
  sampling.weights = "wt",
  std.lv           = TRUE,
  se               = "robust"
)

corr_fit <- fitMeasures(fit.corr, c(
  "chisq.scaled", "df.scaled", "pvalue.scaled",
  "cfi.robust",   "tli.robust",
  "rmsea.robust", "rmsea.ci.lower.robust", "rmsea.ci.upper.robust",
  "srmr"
))

data.frame(
  `Fit Index` = c(
    "χ² (Scaled)","df","p-value",
    "CFI (Robust)","TLI (Robust)",
    "RMSEA (Robust)","RMSEA 90% CI Lower","RMSEA 90% CI Upper","SRMR"
  ),
  Value = round(as.numeric(corr_fit), 3),
  check.names = FALSE
) %>%
  kable(align = c("l","c")) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 6: Fit Indices — M1: Correlated First-Order Factors Model
Fit Index Value
χ² (Scaled) 1876.293
df 329.000
p-value 0.000
CFI (Robust) 0.912
TLI (Robust) 0.899
RMSEA (Robust) 0.057
RMSEA 90% CI Lower 0.054
RMSEA 90% CI Upper 0.059
SRMR 0.037
Show / Hide Code
cor_matrix <- lavInspect(fit.corr, "std")$psi

kable(round(cor_matrix, 3), align = "c") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 7: Inter-Factor Correlation Matrix — M1
DPR TRE SOM IST SNS PAR VRG
DPR 1.000 0.873 0.695 0.858 0.746 0.711 0.655
TRE 0.873 1.000 0.831 0.860 0.813 0.720 0.680
SOM 0.695 0.831 1.000 0.754 0.644 0.659 0.582
IST 0.858 0.860 0.754 1.000 0.816 0.690 0.693
SNS 0.746 0.813 0.644 0.816 1.000 0.754 0.645
PAR 0.711 0.720 0.659 0.690 0.754 1.000 0.651
VRG 0.655 0.680 0.582 0.693 0.645 0.651 1.000

Note. Values > .85 may indicate insufficient discriminant validity between subscales (HTMT criterion; Henseler et al., 2015).

Show / Hide Code
ggcorrplot(
  cor_matrix,
  method        = "square",
  type          = "lower",
  lab           = TRUE,
  lab_size      = 4,
  colors        = c("#4575B4","white","#D73027"),
  outline.color = "white"
) +
  labs(
    title = "Inter-Factor Correlations — M1 (Correlated Factors)",
    fill  = "r"
  )
Figure 2: Inter-Factor Correlations — M1 (Correlated Factors)

6.3 Hierarchical Second-Order CFA Model (M2 — Primary)

What this section tests. The hierarchical model (M2) posits that the covariance among the seven first-order subscales is fully explained by a single superordinate latent factor — General Psychological Distress (SCL28). M2 is more parsimonious than M1 (14 fewer parameters), trading some local fit for theoretical elegance.

CFA was conducted using the WLSMV estimator, appropriate for ordinal indicators with non-normal distributions (Flora & Curran, 2004). Sampling weights were incorporated via the sampling.weights argument in lavaan (Rosseel, 2012). Model fit was evaluated using robust fit indices: CFI ≥ .95, TLI ≥ .95, RMSEA ≤ .06, SRMR ≤ .08 (Hu & Bentler, 1999).

Show / Hide Code
model.cfa <- '
  # First-order factors (symptom domains)
  DPR =~ dpr1 + dpr2 + dpr3 + dpr4   # Depression
  TRE =~ tre1 + tre2 + tre3 + tre4   # Anxiety
  SOM =~ som1 + som2 + som3 + som4   # Somatization
  IST =~ ist1 + ist2 + ist3 + ist4   # General Exhaustion
  SNS =~ sns1 + sns2 + sns3 + sns4   # Interpersonal Sensitivity
  PAR =~ par1 + par2 + par3 + par4   # Paranoid Ideation
  VRG =~ vrg1 + vrg2 + vrg3 + vrg4  # Hostility

  # Second-order factor (General Psychological Distress)
  SCL28 =~ DPR + TRE + SOM + IST + SNS + PAR + VRG
'

fit.cfa <- cfa(
  model            = model.cfa,
  data             = df,
  estimator        = "WLSMV",
  ordered          = TRUE,
  sampling.weights = "wt",
  std.lv           = TRUE,
  se               = "robust"
)

hier_fit <- fitMeasures(fit.cfa, c(
  "chisq.scaled", "df.scaled", "pvalue.scaled",
  "cfi.robust",   "tli.robust",
  "rmsea.robust", "rmsea.ci.lower.robust", "rmsea.ci.upper.robust",
  "srmr"
))

data.frame(
  `Fit Index` = c(
    "χ² (Scaled)","df","p-value",
    "CFI (Robust)","TLI (Robust)",
    "RMSEA (Robust)","RMSEA 90% CI Lower","RMSEA 90% CI Upper","SRMR"
  ),
  Value = round(as.numeric(hier_fit), 3),
  check.names = FALSE
) %>%
  kable(align = c("l","c")) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 8: Fit Indices — M2: Hierarchical Second-Order CFA (Primary Model)
Fit Index Value
χ² (Scaled) 1982.905
df 343.000
p-value 0.000
CFI (Robust) 0.906
TLI (Robust) 0.896
RMSEA (Robust) 0.057
RMSEA 90% CI Lower 0.055
RMSEA 90% CI Upper 0.060
SRMR 0.040
Show / Hide Code
pl_m2 <- nice_lavaanPlot(
  model = fit.cfa,
  coefs = TRUE,
  stand = TRUE,
  covs  = TRUE,
  stars = c("coefs","covs","latent")
)


DiagrammeR::grViz(pl_m2$x$diagram, width = "125%", height = 800)
Figure 3: Path Diagram — M2: Hierarchical Second-Order CFA (Standardized)
Show / Hide Code
save_png(pl_m2, "cfa_path_diagram.png")

6.4 Bifactor Model and Indices (M3)

What this section tests. The bifactor model (M3) is an alternative parameterization in which each indicator loads simultaneously on (a) a general factor G capturing global distress and (b) one subscale-specific factor capturing residual domain variance orthogonal to G. Bifactor indices (Rodriguez et al., 2016) quantify the relative strength of G versus specific factors:

  • ECV — Explained Common Variance: proportion of common variance due to G; > .70 supports total score use
  • OmegaH — Hierarchical Omega: reliability of total score attributable to G alone; > .70 required
  • PUC — Proportion of Uncontaminated Correlations: > .70 means item correlations are mostly G-driven
  • H — Construct Replicability: factor stability across samples; > .70 desirable
  • FD — Factor Determinacy: precision of factor score estimation; > .90 excellent
Show / Hide Code
model.cfa.bifactor <- '
  DPR =~ dpr1 + dpr2 + dpr3 + dpr4
  TRE =~ tre1 + tre2 + tre3 + tre4
  SOM =~ som1 + som2 + som3 + som4
  IST =~ ist1 + ist2 + ist3 + ist4
  SNS =~ sns1 + sns2 + sns3 + sns4
  PAR =~ par1 + par2 + par3 + par4
  VRG =~ vrg1 + vrg2 + vrg3 + vrg4

  G =~ dpr1 + dpr2 + dpr3 + dpr4 +
       tre1 + tre2 + tre3 + tre4 +
       som1 + som2 + som3 + som4 +
       ist1 + ist2 + ist3 + ist4 +
       sns1 + sns2 + sns3 + sns4 +
       par1 + par2 + par3 + par4 +
       vrg1 + vrg2 + vrg3 + vrg4
'

fit.cfa.bifactor <- cfa(
  model            = model.cfa.bifactor,
  data             = df,
  estimator        = "WLSMV",
  ordered          = TRUE,
  sampling.weights = "wt",
  orthogonal       = TRUE,
  std.lv           = TRUE,
  se               = "robust"
)

bifactor_fit <- fitMeasures(fit.cfa.bifactor, c(
  "chisq.scaled", "df.scaled", "pvalue.scaled",
  "cfi.robust",   "tli.robust",
  "rmsea.robust", "rmsea.ci.lower.robust", "rmsea.ci.upper.robust",
  "srmr"
))

data.frame(
  `Fit Index` = c(
    "χ² (Scaled)","df","p-value",
    "CFI (Robust)","TLI (Robust)",
    "RMSEA (Robust)","RMSEA 90% CI Lower","RMSEA 90% CI Upper","SRMR"
  ),
  Value = round(as.numeric(bifactor_fit), 3),
  check.names = FALSE
) %>%
  kable(align = c("l","c")) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 9: Fit Indices — M3: Bifactor Model
Fit Index Value
χ² (Scaled) 1535.513
df 322.000
p-value 0.000
CFI (Robust) 0.935
TLI (Robust) 0.924
RMSEA (Robust) 0.049
RMSEA 90% CI Lower 0.047
RMSEA 90% CI Upper 0.052
SRMR 0.035
Show / Hide Code
bifactor_results <- BifactorIndicesCalculator::bifactorIndices(fit.cfa.bifactor)

model_idx <- as.data.frame(t(as.numeric(bifactor_results$ModelLevelIndices)))
colnames(model_idx) <- names(bifactor_results$ModelLevelIndices)

kable(round(model_idx, 3), align = "c", booktabs = TRUE, escape = FALSE) %>%
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = TRUE,
    position   = "center"
  )
Table 10: Bifactor Model-Level Indices
ECV.G PUC Omega.G OmegaH.G
0.687 0.889 0.936 0.886

Note. ECV.G: Explained Common Variance of the general factor; PUC: Proportion of Uncontaminated Correlations; OmegaH.G: Hierarchical Omega (reliable variance attributable solely to G). Recommended thresholds: ECV > .70; PUC > .70; OmegaH > .70 (Rodriguez et al., 2016).

Show / Hide Code
factor_idx <- as.data.frame(bifactor_results$FactorLevelIndices)

kable(round(factor_idx, 3), align = "c", booktabs = TRUE, linesep = "") %>%
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = TRUE
  ) %>%
  column_spec(1, bold = TRUE, italic = TRUE)
Table 11: Factor-Level Dimensionality and Reliability Indices — Bifactor Model
ECV_SS ECV_SG ECV_GS Omega OmegaH H FD
DPR 0.268 0.043 0.732 0.774 0.164 0.463 0.812
TRE 0.252 0.044 0.748 0.800 0.115 0.590 0.959
SOM 0.359 0.051 0.641 0.739 0.250 0.481 0.750
IST 0.194 0.027 0.806 0.728 0.111 0.321 0.652
SNS 0.331 0.046 0.669 0.716 0.209 0.469 0.733
PAR 0.370 0.041 0.630 0.642 0.218 0.416 0.691
VRG 0.457 0.062 0.543 0.724 0.321 0.537 0.778
G 0.687 0.687 0.687 0.936 0.886 0.940 0.959

Note. ECV_SS: Proportion of common variance within a subscale explained by that specific factor; ECV_GS: Proportion due to G. OmegaH: Hierarchical omega for the specific factor (reliable variance above and beyond G). H: Construct replicability; FD: Factor determinacy. OmegaH < .50 for specific factors indicates subscale scores lack reliable unique variance (Rodriguez et al., 2016).

Show / Hide Code
item_idx  <- as.data.frame(bifactor_results$ItemLevelIndices)
item_iecv <- item_idx %>% select(IECV)

kable(round(item_iecv, 3), align = "c", booktabs = TRUE) %>%
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = FALSE
  )
Table 12: Item-Level Explained Common Variance (IECV) — Bifactor Model
IECV
dpr1 0.988
dpr2 0.694
dpr3 0.824
dpr4 0.550
tre1 0.979
tre2 0.405
tre3 0.965
tre4 0.992
som1 0.804
som2 0.649
som3 0.498
som4 0.663
ist1 0.975
ist2 0.708
ist3 0.646
ist4 0.964
sns1 0.823
sns2 0.614
sns3 0.372
sns4 0.944
par1 0.546
par2 0.828
par3 0.521
par4 0.717
vrg1 0.586
vrg2 0.408
vrg3 0.582
vrg4 0.622

Note. IECV = Item Explained Common Variance (proportion of an item’s common variance attributable to G). IECV > .70 indicates the item primarily reflects general distress; IECV < .50 indicates more unique subscale variance than general variance.

6.5 Model Comparison

Decision rule. ΔCFI < −.010 signals meaningful deterioration in fit when moving to a more constrained model (Cheung & Rensvold, 2002). M2 (hierarchical) is preferred over M1 if the fit loss is negligible (|ΔCFI| < .010), given its greater parsimony (14 fewer parameters).

Show / Hide Code
# Helper: extract a single fit index from a fitted model
fi <- function(fit_obj, index) fitMeasures(fit_obj, index)

comparison_table <- data.frame(
  Model          = c("Null: Single Factor (CMB)", "M1: Correlated Factors",
                     "M2: Hierarchical (Primary)", "M3: Bifactor"),
  `χ² (Scaled)`  = round(c(fi(fit.harman,"chisq.scaled"), fi(fit.corr,"chisq.scaled"),
                            fi(fit.cfa,"chisq.scaled"),    fi(fit.cfa.bifactor,"chisq.scaled")), 1),
  df             = round(c(fi(fit.harman,"df.scaled"),    fi(fit.corr,"df.scaled"),
                           fi(fit.cfa,"df.scaled"),        fi(fit.cfa.bifactor,"df.scaled")), 0),
  `CFI (Robust)` = round(c(fi(fit.harman,"cfi.robust"),  fi(fit.corr,"cfi.robust"),
                            fi(fit.cfa,"cfi.robust"),     fi(fit.cfa.bifactor,"cfi.robust")), 3),
  `RMSEA (Robust)` = round(c(fi(fit.harman,"rmsea.robust"), fi(fit.corr,"rmsea.robust"),
                              fi(fit.cfa,"rmsea.robust"),    fi(fit.cfa.bifactor,"rmsea.robust")), 3),
  SRMR           = round(c(fi(fit.harman,"srmr"), fi(fit.corr,"srmr"),
                           fi(fit.cfa,"srmr"),    fi(fit.cfa.bifactor,"srmr")), 3),
  `ΔCFI`         = c(NA, NA,
                     round(fi(fit.cfa,"cfi.robust")          - fi(fit.corr,"cfi.robust"), 3),
                     round(fi(fit.cfa.bifactor,"cfi.robust") - fi(fit.corr,"cfi.robust"), 3)),
  check.names = FALSE
)

kable(
  comparison_table,
  align    = c("l", rep("c", ncol(comparison_table) - 1)),
  digits   = 3,
  booktabs = TRUE,
  escape   = FALSE
) %>%
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = TRUE,
    font_size  = 11
  ) %>%
  row_spec(which(comparison_table$Model == "M2: Hierarchical (Primary)"),
           bold = TRUE, background = "#EBF5FB") %>%
  row_spec(0, bold = TRUE)
Table 13: Comparison of Competing Measurement Models (Robust Fit Indices)
Model χ² (Scaled) df CFI (Robust) RMSEA (Robust) SRMR ΔCFI
Null: Single Factor (CMB) 3915 350 0.813 0.080 0.056 NA
M1: Correlated Factors 1876 329 0.912 0.057 0.037 NA
M2: Hierarchical (Primary) 1983 343 0.906 0.057 0.040 -0.006
M3: Bifactor 1536 322 0.935 0.049 0.035 0.023

Note. Robust fit indices based on WLSMV mean-variance adjusted estimator with sandwich-type standard errors. ΔCFI computed relative to M1; |ΔCFI| < .010 indicates negligible fit loss (Cheung & Rensvold, 2002). M2 preferred over M1 on parsimony grounds. Acceptable thresholds: CFI/TLI ≥ .95; RMSEA ≤ .06; SRMR ≤ .08.


7 Model Fit Evaluation: Hierarchical Second-Order CFA (M2)

7.1 Global Fit Indices

Reporting strategy. We report robust fit indices (CFI, TLI, RMSEA, SRMR) derived from the WLSMV estimator. Robust indices are preferred over standard DWLS indices for large samples with ordinal data, as standard indices inflate CFI/TLI under large N (DiStefano & Morgan, 2014).

Show / Hide Code
fit_indices <- fitMeasures(fit.cfa, c(
  "chisq.scaled", "df.scaled", "pvalue.scaled",
  "cfi.robust",   "tli.robust",
  "rmsea.robust", "rmsea.ci.lower.robust", "rmsea.ci.upper.robust",
  "srmr", "wrmr"
))

data.frame(
  `Fit Index` = c(
    "χ² (Scaled)","Degrees of Freedom","p-value",
    "CFI (Robust)","TLI (Robust)",
    "RMSEA (Robust)","RMSEA 90% CI Lower","RMSEA 90% CI Upper",
    "SRMR","WRMR"
  ),
  Value                  = round(as.numeric(fit_indices), 3),
  `Acceptable Threshold` = c("—","—","—","≥ .95","≥ .95","≤ .06","—","—","≤ .08","≤ 1.00"),
  check.names = FALSE
) %>%
  kable(align = c("l","c","c"), booktabs = TRUE) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 14: Global Fit Indices — M2: Hierarchical Second-Order CFA
Fit Index Value Acceptable Threshold
χ² (Scaled) 1982.905
Degrees of Freedom 343.000
p-value 0.000
CFI (Robust) 0.906 ≥ .95
TLI (Robust) 0.896 ≥ .95
RMSEA (Robust) 0.057 ≤ .06
RMSEA 90% CI Lower 0.055
RMSEA 90% CI Upper 0.060
SRMR 0.040 ≤ .08
WRMR 1.837 ≤ 1.00

Note. Robust indices based on WLSMV with sandwich-type SEs; N = 2,712 (weighted). WRMR = Weighted Root Mean Square Residual.

7.2 Local Fit: Standardized Factor Loadings and Residual Variances

Show / Hide Code
std_params <- standardizedSolution(fit.cfa)

loadings_fo <- std_params %>%
  filter(op == "=~", lhs != "SCL28") %>%
  mutate(
    p_fmt = case_when(pvalue < .001 ~ "< .001", TRUE ~ sprintf("%.3f", pvalue)),
    sig   = case_when(pvalue < .001 ~ "***", pvalue < .01 ~ "**",
                      pvalue < .05  ~ "*",   TRUE         ~ "")
  ) %>%
  select(Factor = lhs, Item = rhs, `β (std.)` = est.std,
         SE = se, z, `p-value` = p_fmt, Sig = sig)

kable(loadings_fo, digits = 3, align = c("l","l","r","r","r","r","c"),
      booktabs = TRUE) %>%
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = FALSE
  ) %>%
  collapse_rows(columns = 1, valign = "top")
Table 15: First-Order Standardized Factor Loadings — M2
Factor Item β (std.) SE z p-value Sig
DPR dpr1 0.778 0.014 55.8 < .001 ***
dpr2 0.677 0.015 46.1 < .001 ***
dpr3 0.646 0.017 39.0 < .001 ***
dpr4 0.771 0.014 56.9 < .001 ***
TRE tre1 0.744 0.013 58.1 < .001 ***
tre2 0.673 0.014 47.9 < .001 ***
tre3 0.696 0.014 48.7 < .001 ***
tre4 0.712 0.013 53.0 < .001 ***
SOM som1 0.726 0.016 45.1 < .001 ***
som2 0.689 0.017 39.7 < .001 ***
som3 0.696 0.016 43.7 < .001 ***
som4 0.694 0.016 43.1 < .001 ***
IST ist1 0.751 0.013 57.4 < .001 ***
ist2 0.647 0.015 42.0 < .001 ***
ist3 0.693 0.014 50.2 < .001 ***
ist4 0.648 0.016 40.9 < .001 ***
SNS sns1 0.719 0.017 43.0 < .001 ***
sns2 0.649 0.015 42.0 < .001 ***
sns3 0.558 0.018 31.1 < .001 ***
sns4 0.726 0.016 45.6 < .001 ***
PAR par1 0.578 0.020 29.1 < .001 ***
par2 0.534 0.021 25.4 < .001 ***
par3 0.643 0.017 38.7 < .001 ***
par4 0.711 0.017 41.3 < .001 ***
VRG vrg1 0.572 0.020 28.2 < .001 ***
vrg2 0.664 0.019 34.4 < .001 ***
vrg3 0.703 0.022 32.2 < .001 ***
vrg4 0.787 0.016 49.8 < .001 ***

Note. *** p < .001, ** p < .01, * p < .05. β ≥ .50 indicates adequate indicator reliability (Hair et al., 2019). Robust WLSMV with sampling weights applied.

Show / Hide Code
loadings_so <- std_params %>%
  filter(op == "=~", lhs == "SCL28") %>%
  mutate(
    p_fmt = case_when(pvalue < .001 ~ "< .001", TRUE ~ sprintf("%.3f", pvalue)),
    sig   = case_when(pvalue < .001 ~ "***", TRUE ~ "")
  ) %>%
  select(`General Factor` = lhs, Subscale = rhs,
         `β (std.)` = est.std, SE = se, z, `p-value` = p_fmt, Sig = sig)

kable(loadings_so, digits = 3, align = c("l","l","r","r","r","r","c"),
      booktabs = TRUE) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 16: Second-Order Standardized Loadings — Subscales onto SCL28
General Factor Subscale β (std.) SE z p-value Sig
SCL28 DPR 0.896 0.010 91.9 < .001 ***
SCL28 TRE 0.954 0.007 127.5 < .001 ***
SCL28 SOM 0.810 0.012 67.9 < .001 ***
SCL28 IST 0.925 0.010 90.7 < .001 ***
SCL28 SNS 0.859 0.012 71.3 < .001 ***
SCL28 PAR 0.800 0.014 58.6 < .001 ***
SCL28 VRG 0.741 0.015 47.9 < .001 ***

Note. β > .70 indicates the subscale is strongly determined by the general distress factor.

Show / Hide Code
resid_vars <- std_params %>%
  filter(op == "~~", lhs == rhs,
         lhs %in% c("DPR","TRE","SOM","IST","SNS","PAR","VRG")) %>%
  select(Subscale = lhs, `Residual Variance (std.)` = est.std)

kable(resid_vars, digits = 3, align = c("l","c")) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 17: Residual Variances of First-Order Factors (M2)
Subscale Residual Variance (std.)
DPR 0.198
TRE 0.089
SOM 0.344
IST 0.144
SNS 0.263
PAR 0.359
VRG 0.452

Note. Residual variance = 1 − λ², where λ is the second-order loading. Values < .10 indicate near-complete absorption by the general factor.

7.3 Modification Indices

Show / Hide Code
mi <- modificationIndices(fit.cfa, sort. = TRUE, maximum.number = 15)

kable(mi, digits = 3, booktabs = TRUE) %>%
  kable_styling(
    bootstrap_options = c("striped","hover","condensed"),
    full_width = FALSE
  )
Table 18: Top 15 Modification Indices — M2
lhs op rhs mi epc sepc.lv sepc.all sepc.nox
388 SCL28 =~ dpr1 102.2 1.129 1.129 1.129 1.129
292 IST =~ dpr1 102.2 0.281 0.742 0.742 0.742
231 DPR =~ ist4 94.3 0.279 0.628 0.628 0.628
244 TRE =~ dpr1 94.1 0.255 0.853 0.853 0.853
739 sns2 ~~ sns3 76.5 0.172 0.172 0.272 0.272
407 SCL28 =~ sns4 76.0 0.789 0.789 0.789 0.789
444 dpr2 ~~ dpr4 75.0 0.171 0.171 0.366 0.366
259 TRE =~ sns4 70.2 0.194 0.650 0.650 0.650
406 SCL28 =~ sns3 68.5 -0.607 -0.607 -0.607 -0.607
258 TRE =~ sns3 63.7 -0.158 -0.530 -0.530 -0.530
276 SOM =~ ist1 60.4 0.196 0.335 0.335 0.335
801 TRE ~~ SOM 59.6 0.567 0.567 0.567 0.567
730 sns1 ~~ sns4 58.5 -0.185 -0.185 -0.387 -0.387
234 DPR =~ sns3 58.5 -0.187 -0.421 -0.421 -0.421
607 som1 ~~ ist1 57.7 0.135 0.135 0.297 0.297

Note. MI = expected decrease in χ² if the parameter is freed; EPC = expected parameter change. Post-hoc modifications require theoretical justification and cross-validation.


8 Reliability and Validity: Hierarchical Second-Order CFA (M2)

8.1 Internal Consistency: Ordinal Alpha and McDonald’s Categorical Omega

What this section reports.
(1) Ordinal alpha (α_ord), computed from polychoric correlations, is the appropriate analogue of Cronbach’s α for ordinal data.
(2) McDonald’s categorical omega (ω), derived from the CFA model, reflects the proportion of total score variance attributable to the common factor. Unlike α, ω does not assume tau-equivalence and is the preferred reliability index for congeneric models.
Threshold: ω ≥ .70 acceptable; ω ≥ .80 good.

Show / Hide Code
reliability_out <- semTools::reliability(fit.cfa)

rel_table <- as.data.frame(t(round(reliability_out, 3))) %>%
  rownames_to_column("Subscale") %>%
  select(Subscale, alpha, alpha.ord, omega, avevar) %>%
  setNames(c("Subscale","α (Cronbach)","α (Ordinal)","ω (McDonald)","AVE"))

kable(rel_table, align = c("l","c","c","c","c"), digits = 3, booktabs = TRUE) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 19: Reliability Coefficients and AVE by Subscale
Subscale α (Cronbach) α (Ordinal) ω (McDonald) AVE
DPR 0.749 0.807 0.750 0.519
TRE 0.750 0.797 0.746 0.499
SOM 0.740 0.794 0.740 0.492
IST 0.726 0.776 0.727 0.471
SNS 0.704 0.759 0.704 0.444
PAR 0.653 0.704 0.659 0.385
VRG 0.694 0.774 0.702 0.471

Note. α (Ordinal) = alpha based on polychoric correlations. ω (McDonald) = model-based composite reliability. AVE ≥ .50 required for convergent validity (Fornell & Larcker, 1981). Thresholds: ω ≥ .70 acceptable; ω ≥ .80 good.

Show / Hide Code
omega_out <- compRelSEM(fit.cfa)

omega_vals <- sapply(omega_out, function(x) as.numeric(x))

data.frame(
  Scale = names(omega_vals),
  `ω (Categorical)` = unname(omega_vals),
  check.names = FALSE
) %>%
  kable(col.names = c("Scale", "ω (Categorical)"), align = "lc", digits = 3) %>%
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Table 20: Categorical Omega (ω) — Composite Reliability
Scale ω (Categorical)
DPR 0.593
TRE 0.680
SOM 0.482
IST 0.625
SNS 0.513
PAR 0.422
VRG 0.374

8.2 Convergent Validity: Average Variance Extracted (AVE)

What this section tests. AVE = Σλ² / (Σλ² + Σε²), where λ are standardized loadings and ε are item error variances. AVE ≥ .50 means the factor explains more variance in its indicators than error — the Fornell–Larcker convergent validity criterion.

Show / Hide Code
ave_cr <- data.frame(
  Subscale = colnames(reliability_out),
  AVE      = round(reliability_out["avevar",], 3),
  CR_omega = round(reliability_out["omega",],  3)
) %>%
  mutate(
    `AVE ≥ .50` = ifelse(AVE      >= .50, "✓","✗"),
    `CR ≥ .70`  = ifelse(CR_omega >= .70, "✓","✗")
  )

kable(ave_cr, align = c("l","c","c","c","c"), row.names = FALSE, booktabs = TRUE) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 21: Convergent Validity: AVE and Composite Reliability
Subscale AVE CR_omega AVE ≥ .50 CR ≥ .70
DPR 0.519 0.750
TRE 0.499 0.746
SOM 0.492 0.740
IST 0.471 0.727
SNS 0.444 0.704
PAR 0.385 0.659
VRG 0.471 0.702

Note. AVE ≥ .50 indicates convergent validity (Fornell & Larcker, 1981). If AVE < .50 but CR > .60, convergent validity may still be adequate (Bagozzi & Yi, 1988).

8.3 Discriminant Validity: HTMT Ratios and Fornell–Larcker Criterion

What this section tests.
(1) Fornell–Larcker criterion. AVE of each factor must exceed the squared inter-factor correlation (φ²) with every other factor.
(2) HTMT ratio (Henseler et al., 2015): HTMT < .85 (strict) or < .90 (liberal) indicates adequate discriminant validity. HTMT is considered a more sensitive criterion than Fornell–Larcker for ordinal SEM.

Show / Hide Code
ave_vals  <- reliability_out["avevar",]
phi_mat   <- lavInspect(fit.corr, "std")$psi
subscales <- c("DPR","TRE","SOM","IST","SNS","PAR","VRG")

fl_matrix <- matrix(NA, nrow = 7, ncol = 7,
                    dimnames = list(subscales, subscales))
for (i in seq_along(subscales)) {
  for (j in seq_along(subscales)) {
    fl_matrix[i,j] <- if (i == j) {
      round(ave_vals[subscales[i]], 3)
    } else {
      round(phi_mat[subscales[i], subscales[j]]^2, 3)
    }
  }
}

kable(fl_matrix, align = "c", booktabs = TRUE) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE) %>%
  column_spec(1, bold = TRUE) %>%
  row_spec(0, bold = TRUE)
Table 22: Fornell–Larcker Matrix for Discriminant Validity
DPR TRE SOM IST SNS PAR VRG
DPR 0.519 0.763 0.483 0.736 0.556 0.505 0.430
TRE 0.763 0.499 0.691 0.740 0.661 0.518 0.462
SOM 0.483 0.691 0.492 0.569 0.415 0.434 0.339
IST 0.736 0.740 0.569 0.471 0.666 0.476 0.480
SNS 0.556 0.661 0.415 0.666 0.444 0.568 0.416
PAR 0.505 0.518 0.434 0.476 0.568 0.385 0.423
VRG 0.430 0.462 0.339 0.480 0.416 0.423 0.471

Note. Diagonal = AVE; off-diagonal = squared inter-factor correlation (φ²). Discriminant validity is supported when AVE > φ² for all pairs (Fornell & Larcker, 1981).

Show / Hide Code
htmt_matrix <- semTools::htmt(
  model   = model.corr_factors,
  data    = df,
  ordered = TRUE
)

kable(round(htmt_matrix, 3), align = "c", booktabs = TRUE) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 23: Heterotrait–Monotrait Ratio (HTMT) for Discriminant Validity
DPR TRE SOM IST SNS PAR VRG
DPR 1.000 0.879 0.678 0.841 0.737 0.724 0.660
TRE 0.879 1.000 0.823 0.866 0.791 0.711 0.688
SOM 0.678 0.823 1.000 0.720 0.621 0.642 0.578
IST 0.841 0.866 0.720 1.000 0.817 0.705 0.698
SNS 0.737 0.791 0.621 0.817 1.000 0.760 0.631
PAR 0.724 0.711 0.642 0.705 0.760 1.000 0.659
VRG 0.660 0.688 0.578 0.698 0.631 0.659 1.000

Note. HTMT < .85 indicates strict discriminant validity (Henseler et al., 2015). HTMT ≥ .90 suggests the two constructs may not be empirically distinct.

8.4 Higher-Order Reliability: omegaL1, omegaL2, partialOmegaL1

What this section reports. For hierarchical models, variance in item scores originates from both first-order subscale factors and the second-order general factor. Three specialized coefficients are reported (Zinbarg et al., 2005):

  • omegaL1: Total reliability of the SCL-28 sum score (all common factors combined).
  • omegaL2: Variance attributable solely to SCL28. omegaL2 > .70 justifies using the total SCL-28 score.
  • partialOmegaL1: Incremental reliability of subscale factors beyond the general factor.
Show / Hide Code
reliability_L2 <- semTools::reliabilityL2(fit.cfa, "SCL28")

data.frame(
  Coefficient    = c("omegaL1","omegaL2","partialOmegaL1"),
  Value          = round(as.numeric(reliability_L2), 3),
  Interpretation = c(
    "Total reliability of the SCL-28 sum score (all common factors)",
    "Reliability attributable to the general distress factor (SCL28) alone",
    "Subscale-level reliability after controlling for the general factor"
  )
) %>%
  kable(align = c("l","c","l"), booktabs = TRUE) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 24: Higher-Order Reliability Coefficients — M2
Coefficient Value Interpretation
omegaL1 0.904 Total reliability of the SCL-28 sum score (all common factors)
omegaL2 0.961 Reliability attributable to the general distress factor (SCL28) alone
partialOmegaL1 0.947 Subscale-level reliability after controlling for the general factor

Note. Computed via semTools::reliabilityL2() (Zinbarg et al., 2005). omegaL2 > .70 justifies the use of the total SCL-28 score as a reliable index of general distress.

9 Schmid-Leiman Procedure

Show / Hide Code
# Assuming poly_matrix is already calculated using:
# poly_result <- polychoric(df[, scl_items], weight = df$wt)
# poly_matrix <- poly_result$rho

sl_result <- psych::schmid(
  model    = poly_matrix,
  nfactors = 7,             # 7 factors for SCL-28
  n.obs    = sum(df$wt),
  rotate   = "oblimin",
  fm       = "wls",
  digits   = 3
)

cat("=== SCHMID-LEIMAN DECOMPOSITION ===\n\n")
=== SCHMID-LEIMAN DECOMPOSITION ===
Show / Hide Code
print(sl_result)
Schmid-Leiman analysis 
Call: psych::schmid(model = poly_matrix, nfactors = 7, fm = "wls", 
    digits = 3, rotate = "oblimin", n.obs = sum(df$wt))

Schmid Leiman Factor loadings greater than  0.2 
        g   F1*   F2*   F3*   F4*   F5*   F6*   F7*   h2   h2   u2   p2
dpr1 0.62        0.25        0.28                   0.56 0.56 0.44 0.68
dpr2 0.55        0.49                               0.55 0.55 0.45 0.56
dpr3 0.53        0.36                               0.43 0.43 0.57 0.65
dpr4 0.63        0.59                               0.76 0.76 0.24 0.53
tre1 0.63  0.29                                     0.54 0.54 0.46 0.73
tre2 0.55  0.22              0.21                   0.46 0.46 0.54 0.67
tre3 0.59        0.28                               0.48 0.48 0.52 0.73
tre4 0.60                    0.29                   0.52 0.52 0.48 0.71
som1 0.55  0.34                                     0.47 0.47 0.53 0.64
som2 0.51  0.48                                     0.50 0.50 0.50 0.53
som3 0.52  0.52                                     0.54 0.54 0.46 0.51
som4 0.52  0.49                                     0.51 0.51 0.49 0.53
ist1 0.61                    0.30                   0.53 0.53 0.47 0.69
ist2 0.53                    0.31                   0.43 0.43 0.57 0.66
ist3 0.57                    0.33                   0.49 0.49 0.51 0.66
ist4 0.54        0.30        0.23                   0.46 0.46 0.54 0.63
sns1 0.59        0.21              0.33             0.51 0.51 0.49 0.67
sns2 0.54                          0.41             0.48 0.48 0.52 0.61
sns3 0.46                          0.60             0.57 0.57 0.43 0.38
sns4 0.58                    0.23                   0.45 0.45 0.55 0.75
par1 0.47                                0.37       0.38 0.38 0.62 0.59
par2 0.47                                      0.71 0.73 0.73 0.27 0.30
par3 0.53                                0.49       0.53 0.53 0.47 0.54
par4 0.57                                0.35       0.47 0.47 0.53 0.68
vrg1 0.42              0.35                         0.35 0.35 0.65 0.51
vrg2 0.49              0.57                         0.56 0.56 0.44 0.42
vrg3 0.52              0.48                         0.55 0.55 0.45 0.49
vrg4 0.57              0.47                         0.55 0.55 0.45 0.59

With eigenvalues of:
   g  F1*  F2*  F3*  F4*  F5*  F6*  F7*   h2 
8.39 1.16 1.09 0.98 0.73 0.79 0.58 0.57 7.54 

general/max  1.11   max/min =   13.2
mean percent general =  0.59    with sd =  0.11 and cv of  0.19 

 The orthogonal loadings were 
Unstandardized loadings based upon covariance matrix
       F1   F2   F3   F4   F5   F6   F7   h2   u2   H2   U2
dpr1 0.37 0.43 0.19 0.41 0.12 0.13 0.01 0.56 0.44 0.56 0.44
dpr2 0.17 0.65 0.15 0.15 0.12 0.20 0.02 0.55 0.45 0.55 0.45
dpr3 0.30 0.51 0.16 0.10 0.08 0.15 0.13 0.43 0.57 0.43 0.57
dpr4 0.18 0.78 0.23 0.12 0.16 0.15 0.08 0.76 0.24 0.76 0.24
tre1 0.50 0.29 0.22 0.31 0.16 0.16 0.05 0.54 0.46 0.54 0.46
tre2 0.40 0.33 0.10 0.33 0.24 0.07 0.03 0.46 0.54 0.46 0.54
tre3 0.35 0.46 0.15 0.21 0.24 0.14 0.07 0.48 0.52 0.48 0.52
tre4 0.40 0.21 0.22 0.43 0.11 0.20 0.16 0.52 0.48 0.52 0.48
som1 0.53 0.18 0.17 0.26 0.06 0.22 0.03 0.47 0.53 0.47 0.53
som2 0.64 0.12 0.10 0.14 0.15 0.13 0.10 0.50 0.50 0.50 0.50
som3 0.67 0.15 0.18 0.04 0.11 0.14 0.06 0.54 0.46 0.54 0.46
som4 0.65 0.16 0.14 0.12 0.11 0.13 0.02 0.51 0.49 0.51 0.49
ist1 0.41 0.32 0.22 0.43 0.13 0.11 0.04 0.53 0.47 0.53 0.47
ist2 0.22 0.17 0.27 0.44 0.27 0.11 0.07 0.43 0.57 0.43 0.57
ist3 0.28 0.23 0.22 0.46 0.28 0.07 0.08 0.49 0.51 0.49 0.51
ist4 0.09 0.46 0.16 0.35 0.21 0.20 0.06 0.46 0.54 0.46 0.54
sns1 0.16 0.40 0.16 0.20 0.47 0.20 0.07 0.51 0.49 0.51 0.49
sns2 0.22 0.14 0.17 0.18 0.54 0.23 0.08 0.48 0.52 0.48 0.52
sns3 0.12 0.16 0.09 0.12 0.70 0.11 0.08 0.57 0.43 0.57 0.43
sns4 0.28 0.16 0.24 0.37 0.30 0.23 0.07 0.45 0.55 0.45 0.55
par1 0.19 0.20 0.13 0.07 0.11 0.50 0.13 0.38 0.62 0.38 0.62
par2 0.13 0.14 0.18 0.10 0.15 0.21 0.76 0.73 0.27 0.73 0.27
par3 0.18 0.14 0.13 0.16 0.19 0.62 0.09 0.53 0.47 0.53 0.47
par4 0.24 0.30 0.22 0.07 0.16 0.49 0.08 0.47 0.53 0.47 0.53
vrg1 0.11 0.10 0.47 0.22 0.03 0.17 0.16 0.35 0.65 0.35 0.65
vrg2 0.16 0.12 0.69 0.15 0.11 0.07 0.05 0.56 0.44 0.56 0.44
vrg3 0.17 0.30 0.62 0.01 0.17 0.09 0.06 0.55 0.45 0.55 0.45
vrg4 0.24 0.17 0.61 0.20 0.13 0.19 0.04 0.55 0.45 0.55 0.45

                 F1   F2   F3   F4   F5   F6   F7
SS loadings    3.29 2.93 2.25 1.86 1.73 1.52 0.76
Proportion Var 0.12 0.10 0.08 0.07 0.06 0.05 0.03
Cumulative Var 0.12 0.22 0.30 0.37 0.43 0.49 0.51

The degrees of freedom are 203  and the fit is  0.53 
The number of observations was  2746  with Chi Square =  1436  with prob <  0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022
The root mean square of the residuals is  0.01 
The df corrected root mean square of the residuals is  0.02
RMSEA index =  0.047  and the 10 % confidence intervals are  0.045 0.049
BIC =  -172
Show / Hide Code
# --- 2. Extract Loading Matrix for Display ---
# NOTE: Ensure your `questions_df` contains the 
# question text for the 28 items of the SCL-28 scale.
sl_loadings <- as.data.frame(sl_result$sl) %>%
  rownames_to_column("Item") 


kable(sl_loadings, digits = 3, booktabs = TRUE,
      align = c("l", rep("r", ncol(sl_loadings) - 2), "l")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE) %>%
  footnote(general = paste(
    "g = general psychological distress factor (Schmid-Leiman orthogonalized).",
    "F1*-F7* = domain-specific residual factors after removing g.",
    "h2 = communality; p2 = proportion of communality due to g."
  ))
Item g F1* F2* F3* F4* F5* F6* F7* h2 u2 p2 com
dpr1 0.616 0.145 0.246 0.046 0.285 0.004 0.033 -0.008 0.559 0.441 0.680 1.92
dpr2 0.553 -0.002 0.486 0.003 0.027 0.005 0.082 -0.009 0.548 0.452 0.557 2.02
dpr3 0.527 0.147 0.357 0.004 -0.012 -0.032 0.015 0.099 0.429 0.571 0.646 2.04
dpr4 0.635 -0.005 0.592 0.052 -0.019 0.023 0.006 0.039 0.758 0.242 0.531 2.02
tre1 0.628 0.289 0.101 0.069 0.174 0.039 0.045 0.019 0.538 0.462 0.733 1.70
tre2 0.554 0.216 0.166 -0.027 0.213 0.138 -0.029 0.007 0.459 0.541 0.667 2.01
tre3 0.592 0.172 0.280 -0.003 0.070 0.118 0.009 0.032 0.479 0.521 0.731 1.76
tre4 0.605 0.178 0.029 0.073 0.292 -0.014 0.082 0.127 0.515 0.485 0.710 1.84
som1 0.546 0.344 0.025 0.034 0.141 -0.044 0.112 -0.002 0.465 0.535 0.641 1.98
som2 0.515 0.481 -0.026 -0.026 0.028 0.046 0.007 0.062 0.502 0.498 0.528 2.06
som3 0.523 0.519 -0.002 0.050 -0.076 0.011 0.016 0.014 0.540 0.460 0.507 2.06
som4 0.516 0.488 0.008 0.019 0.006 0.012 0.026 -0.015 0.507 0.493 0.526 2.00
ist1 0.605 0.190 0.137 0.078 0.302 0.012 0.013 0.024 0.535 0.465 0.685 1.87
ist2 0.535 0.020 0.004 0.151 0.311 0.160 0.020 0.049 0.433 0.567 0.661 2.04
ist3 0.566 0.064 0.057 0.094 0.334 0.170 -0.020 0.062 0.485 0.515 0.659 2.00
ist4 0.538 -0.104 0.300 0.025 0.230 0.088 0.096 0.031 0.457 0.543 0.635 2.24
sns1 0.586 -0.015 0.207 0.023 0.045 0.335 0.071 0.021 0.513 0.487 0.669 1.94
sns2 0.537 0.057 -0.039 0.051 0.025 0.414 0.101 0.026 0.475 0.525 0.607 2.03
sns3 0.465 -0.001 -0.011 -0.006 -0.025 0.598 -0.004 0.024 0.575 0.425 0.376 1.90
sns4 0.581 0.071 -0.021 0.107 0.231 0.177 0.122 0.035 0.453 0.547 0.745 1.75
par1 0.469 0.038 0.058 0.002 -0.054 -0.019 0.367 0.067 0.375 0.625 0.587 2.02
par2 0.471 -0.007 -0.001 -0.008 -0.017 0.003 -0.001 0.709 0.728 0.272 0.304 1.74
par3 0.532 0.001 -0.027 -0.011 0.009 0.052 0.488 0.018 0.529 0.471 0.535 2.02
par4 0.566 0.059 0.124 0.073 -0.076 0.019 0.345 0.007 0.470 0.530 0.682 1.88
vrg1 0.425 -0.050 -0.030 0.354 0.117 -0.075 0.077 0.133 0.351 0.649 0.515 2.54
vrg2 0.486 0.002 -0.036 0.571 0.029 0.004 -0.017 0.008 0.563 0.437 0.419 1.97
vrg3 0.519 0.024 0.138 0.482 -0.129 0.057 -0.032 0.007 0.546 0.454 0.493 2.31
vrg4 0.569 0.047 -0.010 0.468 0.054 0.008 0.083 -0.012 0.550 0.450 0.589 2.02
Note:
g = general psychological distress factor (Schmid-Leiman orthogonalized). F1*-F7* = domain-specific residual factors after removing g. h2 = communality; p2 = proportion of communality due to g.
Show / Hide Code
# --- 3. Omega-Hierarchical and Related Metrics ---
omega_sl <- psych::omega(
  m        = poly_matrix,
  nfactors = 7,             
  n.obs    = sum(df$wt),
  rotate   = "oblimin",
  fm       = "wls",
  plot     = TRUE
)

Show / Hide Code
omega_h  <- omega_sl$omega_h
omega_t  <- omega_sl$omega.tot
ecv      <- omega_h / omega_t

# --- 4. Manual PUC Calculation ---
# Structure: 7 factors with 4 items each = 28 items total
k_items      <- rep(4, 7)               # Vector of factor sizes: c(4, 4, 4, 4, 4, 4, 4)
total_pairs  <- choose(28, 2)           # Total possible correlations (378)
within_pairs <- sum(choose(k_items, 2)) # Correlations within the same specific factors (42)
puc          <- 1 - within_pairs / total_pairs

cat("\n=== OMEGA-HIERARCHICAL (Schmid-Leiman) ===\n")

=== OMEGA-HIERARCHICAL (Schmid-Leiman) ===
Show / Hide Code
cat(sprintf("Omega-Hierarchical (w_h): %.3f\n", omega_h))
Omega-Hierarchical (w_h): 0.792
Show / Hide Code
cat(sprintf("Omega-Total (w_t):        %.3f\n", omega_t))
Omega-Total (w_t):        0.954
Show / Hide Code
cat(sprintf("ECV:                      %.3f\n", ecv))
ECV:                      0.830
Show / Hide Code
cat(sprintf("PUC:                      %.3f\n\n", puc))
PUC:                      0.889

10 PTSD Measurement Model

Show / Hide Code
ptsr_items       <- paste0("ptsr", 1:5)
poly_result_ptsr <- polychoric(df[, ptsr_items], weight = df$wt)
poly_matrix_ptsr <- poly_result_ptsr$rho

ggcorrplot(
  poly_matrix_ptsr,
  method        = "square",
  type          = "full",
  lab           = TRUE,
  lab_size      = 4,
  tl.cex        = 10,
  colors        = c("#4575B4","white","#D73027"),
  outline.color = "white"
) +
  labs(
    title    = "Polychoric Correlation Matrix — PTSD Items",
    subtitle = "Items ptsr1–ptsr5 (sampling weights applied)",
    fill     = "r (polychoric)"
  )
Figure 4: Polychoric Correlation Matrix of PTSD Items
Show / Hide Code
# Error covariance between ptsr2 and ptsr3 added based on local misfit diagnostics
model.cfa.ptsr <- "PTSR =~ ptsr1 + ptsr2 + ptsr3 + ptsr4 + ptsr5
                   ptsr2 ~~ ptsr3"

fit.cfa.ptsr <- cfa(
  model            = model.cfa.ptsr,
  data             = df,
  estimator        = "WLSMV",
  ordered          = TRUE,
  sampling.weights = "wt",
  std.lv           = TRUE,
  se               = "robust"
)

fit_indices.ptsr <- fitMeasures(fit.cfa.ptsr, c(
  "chisq.scaled","df.scaled","pvalue.scaled","rmsea.robust",
  "rmsea.ci.lower.robust","rmsea.ci.upper.robust","wrmr",
  "cfi.robust","tli.robust","srmr"
))

data.frame(
  `Fit Index` = names(fit_indices.ptsr),
  Value       = round(as.numeric(fit_indices.ptsr), 3),
  check.names = FALSE
) %>%
  kable(col.names = c("Fit Index","Value"), align = "lc") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 25: Robust Model Fit Indices — PTSD Measurement Model
Fit Index Value
chisq.scaled 37.181
df.scaled 4.000
pvalue.scaled 0.000
rmsea.robust 0.060
rmsea.ci.lower.robust 0.042
rmsea.ci.upper.robust 0.079
wrmr 0.646
cfi.robust 0.995
tli.robust 0.988
srmr 0.012
Show / Hide Code
pl_ptsr <- nice_lavaanPlot(
  model = fit.cfa.ptsr,
  coefs = TRUE, stand = TRUE, covs = TRUE,
  stars = c("coefs","covs","latent")
)
pl_ptsr
Figure 5: Path Diagram — PTSD Measurement Model (Standardized)
Show / Hide Code
save_png(pl_ptsr, "ptsr_path_diagram.png")
Show / Hide Code
reliability.ptsr <- semTools::reliability(fit.cfa.ptsr)

as.data.frame(t(round(reliability.ptsr, 3))) %>%
  rownames_to_column("Subscale") %>%
  select(Subscale, alpha, alpha.ord, omega, avevar) %>%
  setNames(c("Subscale","α (Cronbach)","α (Ordinal)","ω (McDonald)","AVE")) %>%
  kable(align = c("l","c","c","c","c"), digits = 3) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 26: Reliability and Validity Indices — PTSD Measurement Model
Subscale α (Cronbach) α (Ordinal) ω (McDonald) AVE
PTSR 0.871 0.901 0.859 0.642

Note. AVE = Average Variance Extracted. ω ≥ .70 indicates acceptable reliability.

Show / Hide Code
message("Categorical Omega (ω) for PTSD:")

compRelSEM(fit.cfa.ptsr)
$PTSR

Composite `PTSR` is composed of observed variables:
    ptsr1, ptsr2, ptsr3, ptsr4, ptsr5
True-score variance is represented by common factor(s):
    PTSR
Total variance of composite `PTSR` determined from the unrestricted model.
The proportion attributable to "true" scores is its model-based estimate of reliability ("omega"):

[1] 0.86

11 Media Traumatization Model

Show / Hide Code
mtrvm_items       <- paste0("mtrvm", 1:5)
poly_result_mtrvm <- polychoric(df[, mtrvm_items], weight = df$wt, smooth = TRUE)
poly_matrix_mtrvm <- poly_result_mtrvm$rho

ggcorrplot(
  poly_matrix_mtrvm,
  method        = "square",
  type          = "full",
  lab           = TRUE,
  lab_size      = 4,
  tl.cex        = 10,
  colors        = c("#4575B4","white","#D73027"),
  outline.color = "white"
) +
  labs(
    title    = "Polychoric Correlation Matrix — Media Traumatization Items",
    subtitle = "Items mtrvm1–mtrvm5 (sampling weights applied)",
    fill     = "r (polychoric)"
  )
Figure 6: Polychoric Correlation Matrix of Media Traumatization Items
Show / Hide Code
# Error covariance between mtrvm1 and mtrvm2 added to account for item overlap
model.cfa.mtrvm <- "MTRVM =~ mtrvm1 + mtrvm2 + mtrvm3 + mtrvm4 + mtrvm5
                    mtrvm1 ~~ mtrvm2"

fit.cfa.mtrvm <- cfa(
  model            = model.cfa.mtrvm,
  data             = df,
  estimator        = "WLSMV",
  ordered          = TRUE,
  sampling.weights = "wt",
  std.lv           = TRUE,
  se               = "robust"
)

fit_indices.mtrvm <- fitMeasures(fit.cfa.mtrvm, c(
  "chisq.scaled","df.scaled","pvalue.scaled","rmsea.robust",
  "rmsea.ci.lower.robust","rmsea.ci.upper.robust","wrmr",
  "cfi.robust","tli.robust","srmr"
))

data.frame(
  `Fit Index` = names(fit_indices.mtrvm),
  Value       = round(as.numeric(fit_indices.mtrvm), 3),
  check.names = FALSE
) %>%
  kable(col.names = c("Fit Index","Value"), align = "lc") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 27: Robust Model Fit Indices — Media Traumatization Measurement Model
Fit Index Value
chisq.scaled 16.705
df.scaled 4.000
pvalue.scaled 0.002
rmsea.robust 0.037
rmsea.ci.lower.robust 0.019
rmsea.ci.upper.robust 0.056
wrmr 0.468
cfi.robust 0.997
tli.robust 0.994
srmr 0.010
Show / Hide Code
pl_mtrvm <- nice_lavaanPlot(
  model = fit.cfa.mtrvm,
  coefs = TRUE, stand = TRUE, covs = TRUE,
  stars = c("coefs","covs","latent")
)
pl_mtrvm
Figure 7: Path Diagram — Media Traumatization Measurement Model (Standardized)
Show / Hide Code
save_png(pl_mtrvm, "mtrvm_path_diagram.png")
Show / Hide Code
reliability.mtrvm <- semTools::reliability(fit.cfa.mtrvm)

as.data.frame(t(round(reliability.mtrvm, 3))) %>%
  rownames_to_column("Subscale") %>%
  select(Subscale, alpha, alpha.ord, omega, avevar) %>%
  setNames(c("Subscale","α (Cronbach)","α (Ordinal)","ω (McDonald)","AVE")) %>%
  kable(align = c("l","c","c","c","c"), digits = 3) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 28: Reliability and Validity Indices — Media Traumatization Measurement Model
Subscale α (Cronbach) α (Ordinal) ω (McDonald) AVE
MTRVM 0.815 0.841 0.797 0.522

Note. AVE = Average Variance Extracted. ω ≥ .70 indicates acceptable reliability.

Show / Hide Code
message("Categorical Omega (ω) for Media Traumatization:")
compRelSEM(fit.cfa.mtrvm)
$MTRVM

Composite `MTRVM` is composed of observed variables:
    mtrvm1, mtrvm2, mtrvm3, mtrvm4, mtrvm5
True-score variance is represented by common factor(s):
    MTRVM
Total variance of composite `MTRVM` determined from the unrestricted model.
The proportion attributable to "true" scores is its model-based estimate of reliability ("omega"):

[1] 0.798

12 Mediation Analysis

A structural equation modeling framework was used to test the hypothesized mediation model. All three paths (a, b, c’) were estimated simultaneously in a single WLSMV model to avoid bias from sequential estimation. The indirect effect (a × b) was obtained analytically from the product of path coefficients.

Model structure.
X — PTSD (independent variable)
M — Media Traumatization (mediator)
Y — Psychological Distress / SCL28 (dependent variable)

Show / Hide Code
model.sem <- '
  # Measurement model ──────────────────────────────────────────────────────────
  DPR   =~ dpr1   + dpr2   + dpr3   + dpr4
  TRE   =~ tre1   + tre2   + tre3   + tre4
  SOM   =~ som1   + som2   + som3   + som4
  IST   =~ ist1   + ist2   + ist3   + ist4
  SNS   =~ sns1   + sns2   + sns3   + sns4
  PAR   =~ par1   + par2   + par3   + par4
  VRG   =~ vrg1   + vrg2   + vrg3   + vrg4
  SCL28 =~ DPR + TRE + SOM + IST + SNS + PAR + VRG

  PTSR  =~ ptsr1  + ptsr2  + ptsr3  + ptsr4  + ptsr5
  ptsr2 ~~ ptsr3

  MTRVM =~ mtrvm1 + mtrvm2 + mtrvm3 + mtrvm4 + mtrvm5
  mtrvm1 ~~ mtrvm2

  # Structural model (mediation) ───────────────────────────────────────────────
  SCL28 ~ c_prime*PTSR + b*MTRVM   # direct path + b path
  MTRVM ~ a*PTSR                   # a path

  # Effect definitions ─────────────────────────────────────────────────────────
  direct        := c_prime
  indirect      := a * b
  total         := c_prime + (a * b)
  prop_mediated := (a * b) / (c_prime + (a * b))
'

fit.sem <- sem(
  model            = model.sem,
  data             = df,
  estimator        = "WLSMV",
  ordered          = TRUE,
  sampling.weights = "wt",
  std.lv           = TRUE,
  se               = "robust"
)

fit_indices.sem <- fitMeasures(fit.sem, c(
  "chisq.scaled","df.scaled","pvalue.scaled","rmsea.robust",
  "rmsea.ci.lower.robust","rmsea.ci.upper.robust","wrmr",
  "cfi.robust","tli.robust","srmr"
))

data.frame(
  `Fit Index` = names(fit_indices.sem),
  Value       = round(as.numeric(fit_indices.sem), 3),
  check.names = FALSE
) %>%
  kable(col.names = c("Fit Index","Value")) %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 29: Robust Model Fit Indices — SEM Mediation Model
Fit Index Value
chisq.scaled 2996.066
df.scaled 653.000
pvalue.scaled 0.000
rmsea.robust 0.051
rmsea.ci.lower.robust 0.049
rmsea.ci.upper.robust 0.052
wrmr 1.792
cfi.robust 0.911
tli.robust 0.904
srmr 0.038
Show / Hide Code
params.sem <- parameterEstimates(fit.sem, standardized = TRUE)

regression_params <- params.sem %>%
  filter(op == "~") %>%
  select(lhs, rhs, est, se, z, pvalue, std.all) %>%
  mutate(
    sig = case_when(
      pvalue < .001 ~ "***",
      pvalue < .01  ~ "**",
      pvalue < .05  ~ "*",
      TRUE          ~ ""
    ),
    Path_Label = case_when(
      lhs == "MTRVM" & rhs == "PTSR"  ~ "a  (PTSD → Media Trauma)",
      lhs == "SCL28" & rhs == "PTSR"  ~ "c' (PTSD → Distress, Direct)",
      lhs == "SCL28" & rhs == "MTRVM" ~ "b  (Media Trauma → Distress)",
      TRUE ~ paste(lhs, "~", rhs)
    )
  ) %>%
  arrange(desc(Path_Label))

regression_params %>%
  mutate(p_val = ifelse(pvalue < .001, "< .001", sprintf("%.3f", pvalue))) %>%
  select(Path_Label, est, se, z, p_val, std.all, sig) %>%
  kable(digits = 3,
        col.names = c("Path","B","SE","z","p","β (std)","Sig"),
        align = "lrrrrrc") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE) %>%
  column_spec(1, bold = TRUE, width = "10cm")
Table 30: Structural Regression Coefficients — SEM Mediation Model
Path B SE z p β (std) Sig
c' (PTSD → Distress, Direct) 1.171 0.055 21.28 < .001 0.723 ***
b (Media Trauma → Distress) 0.116 0.030 3.93 < .001 0.094 ***
a (PTSD → Media Trauma) 0.844 0.037 23.06 < .001 0.645 ***
Show / Hide Code
effects.sem <- params.sem %>%
  filter(op == ":=") %>%
  select(label, est, se, z, pvalue, std.all) %>%
  mutate(
    Effect_Name = case_when(
      label == "direct"        ~ "Direct Effect (c')",
      label == "indirect"      ~ "Indirect Effect (a × b)",
      label == "total"         ~ "Total Effect (c' + ab)",
      label == "prop_mediated" ~ "Proportion Mediated (%)",
      TRUE ~ label
    )
  )

effects.sem %>%
  mutate(p_val = ifelse(pvalue < .001, "< .001", sprintf("%.3f", pvalue))) %>%
  select(Effect_Name, est, se, z, p_val, std.all) %>%
  kable(digits = 3,
        col.names = c("Effect Type","Estimate","SE","z","p","Std. Estimate"),
        align = "lrrrrr") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 31: Standardized and Unstandardized Mediation Effects
Effect Type Estimate SE z p Std. Estimate
Direct Effect (c') 1.171 0.055 21.28 < .001 0.723
Indirect Effect (a × b) 0.098 0.025 3.96 < .001 0.060
Total Effect (c' + ab) 1.269 0.047 27.05 < .001 0.783
Proportion Mediated (%) 0.077 0.020 3.87 < .001 0.077
Show / Hide Code
# Automated interpretation based on model results (no hard-coded values)
prop_med   <- effects.sem %>% filter(label == "prop_mediated") %>% pull(est)
indirect_p <- effects.sem %>% filter(label == "indirect")      %>% pull(pvalue)

if (indirect_p < .05) {
  size <- dplyr::case_when(prop_med < .20 ~ "SMALL", prop_med < .50 ~ "MODERATE", TRUE ~ "LARGE")
  cat(sprintf(
    "✓ The indirect effect is statistically significant (p < .05).\n  Media Traumatization mediates %.1f%% of the total PTSD → Distress effect.\n  Mediation effect size: %s.\n",
    prop_med * 100, size
  ))
} else {
  cat("⚠ The indirect effect is NOT statistically significant (p ≥ .05).\n")
}
✓ The indirect effect is statistically significant (p < .05).
  Media Traumatization mediates 7.7% of the total PTSD → Distress effect.
  Mediation effect size: SMALL.
Show / Hide Code
semPlot::semPaths(
  fit.sem,
  what          = "std",
  rotation      = 2,
  layout        = "tree2",
  edge.label.cex = 0.95,
  residuals     = FALSE,
  intercepts    = FALSE,
  exoVar        = FALSE
)
Figure 8: SEM Path Diagram — Full Mediation Model (Standardized)
Show / Hide Code
# Path coefficients extracted dynamically from model results
get_std <- function(lhs_var, rhs_var) {
  params.sem %>%
    filter(lhs == lhs_var, rhs == rhs_var, op == "~") %>%
    pull(std.all) %>%
    round(2)
}

a_coef      <- get_std("MTRVM", "PTSR")
b_coef      <- get_std("SCL28", "MTRVM")
cprime_coef <- get_std("SCL28", "PTSR")

indirect_std <- effects.sem %>% filter(label == "indirect") %>% pull(std.all) %>% round(3)
total_std    <- effects.sem %>% filter(label == "total")    %>% pull(std.all) %>% round(3)

grViz(sprintf('
  digraph mediation {
    graph [layout = dot, rankdir = LR, fontname = "Arial", bgcolor = "#FAFAFA"]
    node  [shape = ellipse, style = filled, fillcolor = "#E8F4F8",
           fontname = "Arial", fontsize = 13]
    edge  [fontname = "Arial", fontsize = 11]

    PTSR  [label = "PTSD\n(PTSR)"]
    MTRVM [label = "Media\nTraumatization\n(MTRVM)"]
    SCL28 [label = "Psychological\nDistress\n(SCL28)"]

    PTSR  -> MTRVM [label = "a = %s***"]
    MTRVM -> SCL28 [label = "b = %s***"]
    PTSR  -> SCL28 [label = "c′ = %s***"]

    subgraph cluster_0 {
      label      = "Mediation Summary"
      fontname   = "Arial"
      fillcolor  = "#F5F5F5"
      style      = filled
      fontsize   = 11
      info [shape = box, fillcolor = "#FFFFFF",
            label = "Indirect (ab, std.): %s***\\nTotal (c, std.): %s***"]
    }
  }
', a_coef, b_coef, cprime_coef, indirect_std, total_std))
Figure 9: Conceptual Mediation Diagram with Programmatically Extracted Path Coefficients
Show / Hide Code
latent_corr <- lavInspect(fit.sem, "cor.lv")
main_vars   <- c("PTSR","MTRVM","SCL28")

kable(round(latent_corr[main_vars, main_vars], 3), align = "c") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
Table 32: Latent Variable Correlation Matrix — SEM Model
PTSR MTRVM SCL28
PTSR 1.000 0.645 0.783
MTRVM 0.645 1.000 0.560
SCL28 0.783 0.560 1.000

References

Дембіцький, С. (2023). Стресові стани населення України в контексті війни. Rating Group. https://ratinggroup.ua/research/ukraine/stresovi_stany_naselennya_ukrainy_v_konteksti_viyni.html

Дембіцький, С., Головаха, Є., & Степаненко, В. (2025). Стресові стани населення України в контексті війни: досвід соціологічного вивчення. Інститут соціології НАН України.

APPENDIX: Full lavaan Output

12.1 Distress (SCL-28) CFA Results

Show / Hide Code
summary(fit.corr, standardized = TRUE, fit.measures = TRUE, rsquare =T)
lavaan 0.6-21 ended normally after 31 iterations

  Estimator                                       DWLS
  Optimization method                           NLMINB
  Number of model parameters                       133

  Number of observations                          2712
  Sampling weights variable                         wt

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                              1384.425    1876.293
  Degrees of freedom                               329         329
  P-value (Unknown)                                 NA       0.000
  Scaling correction factor                                  0.775
  Shift parameter                                           90.239
    simple second-order correction                                

Model Test Baseline Model:

  Test statistic                            120010.523   40103.324
  Degrees of freedom                               378         378
  P-value                                           NA       0.000
  Scaling correction factor                                  3.011

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.991       0.961
  Tucker-Lewis Index (TLI)                       0.990       0.955
                                                                  
  Robust Comparative Fit Index (CFI)                         0.912
  Robust Tucker-Lewis Index (TLI)                            0.899

Root Mean Square Error of Approximation:

  RMSEA                                          0.034       0.042
  90 Percent confidence interval - lower         0.033       0.040
  90 Percent confidence interval - upper         0.036       0.043
  P-value H_0: RMSEA <= 0.050                    1.000       1.000
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.057
  90 Percent confidence interval - lower                     0.054
  90 Percent confidence interval - upper                     0.059
  P-value H_0: Robust RMSEA <= 0.050                         0.000
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.037       0.037

Parameter Estimates:

  Parameterization                               Delta
  Standard errors                           Robust.sem
  Information                                 Expected
  Information saturated (h1) model        Unstructured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  DPR =~                                                                
    dpr1              0.777    0.014   55.850    0.000    0.777    0.777
    dpr2              0.677    0.015   46.183    0.000    0.677    0.677
    dpr3              0.646    0.017   39.017    0.000    0.646    0.646
    dpr4              0.772    0.014   57.035    0.000    0.772    0.772
  TRE =~                                                                
    tre1              0.744    0.013   58.194    0.000    0.744    0.744
    tre2              0.673    0.014   47.984    0.000    0.673    0.673
    tre3              0.695    0.014   48.811    0.000    0.695    0.695
    tre4              0.712    0.013   52.884    0.000    0.712    0.712
  SOM =~                                                                
    som1              0.726    0.016   45.087    0.000    0.726    0.726
    som2              0.689    0.017   39.816    0.000    0.689    0.689
    som3              0.696    0.016   43.908    0.000    0.696    0.696
    som4              0.695    0.016   43.259    0.000    0.695    0.695
  IST =~                                                                
    ist1              0.752    0.013   57.428    0.000    0.752    0.752
    ist2              0.647    0.015   41.947    0.000    0.647    0.647
    ist3              0.693    0.014   50.225    0.000    0.693    0.693
    ist4              0.647    0.016   40.900    0.000    0.647    0.647
  SNS =~                                                                
    sns1              0.719    0.017   43.089    0.000    0.719    0.719
    sns2              0.648    0.015   42.042    0.000    0.648    0.648
    sns3              0.559    0.018   31.209    0.000    0.559    0.559
    sns4              0.725    0.016   45.658    0.000    0.725    0.725
  PAR =~                                                                
    par1              0.578    0.020   29.203    0.000    0.578    0.578
    par2              0.535    0.021   25.515    0.000    0.535    0.535
    par3              0.643    0.017   38.839    0.000    0.643    0.643
    par4              0.710    0.017   41.316    0.000    0.710    0.710
  VRG =~                                                                
    vrg1              0.573    0.020   28.290    0.000    0.573    0.573
    vrg2              0.664    0.019   34.377    0.000    0.664    0.664
    vrg3              0.703    0.022   32.198    0.000    0.703    0.703
    vrg4              0.787    0.016   49.777    0.000    0.787    0.787

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  DPR ~~                                                                
    TRE               0.873    0.012   70.947    0.000    0.873    0.873
    SOM               0.695    0.018   38.886    0.000    0.695    0.695
    IST               0.858    0.015   56.098    0.000    0.858    0.858
    SNS               0.746    0.017   43.413    0.000    0.746    0.746
    PAR               0.711    0.019   37.785    0.000    0.711    0.711
    VRG               0.655    0.021   30.847    0.000    0.655    0.655
  TRE ~~                                                                
    SOM               0.831    0.014   59.965    0.000    0.831    0.831
    IST               0.860    0.014   62.404    0.000    0.860    0.860
    SNS               0.813    0.015   53.544    0.000    0.813    0.813
    PAR               0.720    0.018   39.678    0.000    0.720    0.720
    VRG               0.680    0.019   36.397    0.000    0.680    0.680
  SOM ~~                                                                
    IST               0.754    0.016   46.866    0.000    0.754    0.754
    SNS               0.644    0.020   32.368    0.000    0.644    0.644
    PAR               0.659    0.020   33.633    0.000    0.659    0.659
    VRG               0.582    0.022   26.418    0.000    0.582    0.582
  IST ~~                                                                
    SNS               0.816    0.015   53.541    0.000    0.816    0.816
    PAR               0.690    0.020   35.143    0.000    0.690    0.690
    VRG               0.693    0.020   35.200    0.000    0.693    0.693
  SNS ~~                                                                
    PAR               0.754    0.018   41.467    0.000    0.754    0.754
    VRG               0.645    0.022   29.587    0.000    0.645    0.645
  PAR ~~                                                                
    VRG               0.651    0.021   30.940    0.000    0.651    0.651

Thresholds:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    dpr1|t1          -0.966    0.032  -30.132    0.000   -0.966   -0.966
    dpr1|t2           0.507    0.028   18.150    0.000    0.507    0.507
    dpr1|t3           1.564    0.042   37.270    0.000    1.564    1.564
    dpr2|t1          -0.161    0.027   -5.984    0.000   -0.161   -0.161
    dpr2|t2           0.759    0.029   25.840    0.000    0.759    0.759
    dpr2|t3           1.567    0.042   37.378    0.000    1.567    1.567
    dpr3|t1          -0.033    0.027   -1.215    0.224   -0.033   -0.033
    dpr3|t2           0.945    0.032   29.842    0.000    0.945    0.945
    dpr3|t3           1.854    0.052   35.798    0.000    1.854    1.854
    dpr4|t1           0.207    0.027    7.695    0.000    0.207    0.207
    dpr4|t2           1.005    0.032   31.322    0.000    1.005    1.005
    dpr4|t3           1.770    0.049   36.229    0.000    1.770    1.770
    tre1|t1          -0.506    0.028  -18.103    0.000   -0.506   -0.506
    tre1|t2           0.736    0.029   25.090    0.000    0.736    0.736
    tre1|t3           1.746    0.046   37.784    0.000    1.746    1.746
    tre2|t1          -0.980    0.032  -30.742    0.000   -0.980   -0.980
    tre2|t2           0.479    0.028   17.272    0.000    0.479    0.479
    tre2|t3           1.535    0.041   37.673    0.000    1.535    1.535
    tre3|t1          -0.484    0.028  -17.356    0.000   -0.484   -0.484
    tre3|t2           0.857    0.030   28.219    0.000    0.857    0.857
    tre3|t3           1.777    0.047   38.111    0.000    1.777    1.777
    tre4|t1          -1.064    0.033  -31.938    0.000   -1.064   -1.064
    tre4|t2           0.504    0.028   18.175    0.000    0.504    0.504
    tre4|t3           1.649    0.043   37.951    0.000    1.649    1.649
    som1|t1          -1.025    0.031  -32.687    0.000   -1.025   -1.025
    som1|t2           0.368    0.028   13.319    0.000    0.368    0.368
    som1|t3           1.495    0.041   36.613    0.000    1.495    1.495
    som2|t1          -0.911    0.031  -29.684    0.000   -0.911   -0.911
    som2|t2           0.510    0.028   18.031    0.000    0.510    0.510
    som2|t3           1.641    0.045   36.501    0.000    1.641    1.641
    som3|t1          -0.150    0.027   -5.599    0.000   -0.150   -0.150
    som3|t2           0.917    0.032   28.561    0.000    0.917    0.917
    som3|t3           1.903    0.055   34.789    0.000    1.903    1.903
    som4|t1          -0.208    0.027   -7.743    0.000   -0.208   -0.208
    som4|t2           1.041    0.033   31.720    0.000    1.041    1.041
    som4|t3           1.947    0.060   32.251    0.000    1.947    1.947
    ist1|t1          -0.854    0.031  -27.586    0.000   -0.854   -0.854
    ist1|t2           0.537    0.028   18.925    0.000    0.537    0.537
    ist1|t3           1.580    0.043   36.833    0.000    1.580    1.580
    ist2|t1          -0.582    0.029  -20.126    0.000   -0.582   -0.582
    ist2|t2           0.783    0.029   26.553    0.000    0.783    0.783
    ist2|t3           1.751    0.047   36.920    0.000    1.751    1.751
    ist3|t1          -0.863    0.031  -27.844    0.000   -0.863   -0.863
    ist3|t2           0.637    0.028   22.355    0.000    0.637    0.637
    ist3|t3           1.746    0.048   36.472    0.000    1.746    1.746
    ist4|t1          -0.567    0.029  -19.719    0.000   -0.567   -0.567
    ist4|t2           0.586    0.028   20.989    0.000    0.586    0.586
    ist4|t3           1.578    0.042   37.990    0.000    1.578    1.578
    sns1|t1          -0.039    0.027   -1.460    0.144   -0.039   -0.039
    sns1|t2           1.002    0.032   31.461    0.000    1.002    1.002
    sns1|t3           1.715    0.047   36.567    0.000    1.715    1.715
    sns2|t1          -0.676    0.029  -23.568    0.000   -0.676   -0.676
    sns2|t2           0.621    0.029   21.614    0.000    0.621    0.621
    sns2|t3           1.434    0.039   36.448    0.000    1.434    1.434
    sns3|t1          -0.370    0.027  -13.553    0.000   -0.370   -0.370
    sns3|t2           0.877    0.030   28.913    0.000    0.877    0.877
    sns3|t3           1.720    0.047   36.436    0.000    1.720    1.720
    sns4|t1          -1.069    0.033  -32.377    0.000   -1.069   -1.069
    sns4|t2           0.428    0.027   15.588    0.000    0.428    0.428
    sns4|t3           1.337    0.037   36.583    0.000    1.337    1.337
    par1|t1          -1.089    0.032  -33.598    0.000   -1.089   -1.089
    par1|t2           0.158    0.027    5.879    0.000    0.158    0.158
    par1|t3           1.063    0.034   31.599    0.000    1.063    1.063
    par2|t1          -0.783    0.030  -26.429    0.000   -0.783   -0.783
    par2|t2           0.689    0.029   23.574    0.000    0.689    0.689
    par2|t3           1.719    0.048   35.705    0.000    1.719    1.719
    par3|t1          -0.962    0.031  -31.146    0.000   -0.962   -0.962
    par3|t2           0.385    0.027   14.037    0.000    0.385    0.385
    par3|t3           1.354    0.038   36.095    0.000    1.354    1.354
    par4|t1          -0.217    0.027   -8.092    0.000   -0.217   -0.217
    par4|t2           0.945    0.031   30.021    0.000    0.945    0.945
    par4|t3           1.702    0.048   35.183    0.000    1.702    1.702
    vrg1|t1          -0.687    0.029  -23.294    0.000   -0.687   -0.687
    vrg1|t2           0.867    0.030   29.103    0.000    0.867    0.867
    vrg1|t3           1.945    0.056   34.623    0.000    1.945    1.945
    vrg2|t1           0.106    0.027    3.949    0.000    0.106    0.106
    vrg2|t2           1.295    0.035   36.674    0.000    1.295    1.295
    vrg2|t3           2.138    0.062   34.613    0.000    2.138    2.138
    vrg3|t1           0.624    0.028   22.096    0.000    0.624    0.624
    vrg3|t2           1.531    0.040   38.380    0.000    1.531    1.531
    vrg3|t3           2.119    0.070   30.421    0.000    2.119    2.119
    vrg4|t1          -0.360    0.027  -13.216    0.000   -0.360   -0.360
    vrg4|t2           0.994    0.033   30.303    0.000    0.994    0.994
    vrg4|t3           1.840    0.053   34.532    0.000    1.840    1.840

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .dpr1              0.396                               0.396    0.396
   .dpr2              0.541                               0.541    0.541
   .dpr3              0.582                               0.582    0.582
   .dpr4              0.405                               0.405    0.405
   .tre1              0.447                               0.447    0.447
   .tre2              0.546                               0.546    0.546
   .tre3              0.516                               0.516    0.516
   .tre4              0.494                               0.494    0.494
   .som1              0.473                               0.473    0.473
   .som2              0.526                               0.526    0.526
   .som3              0.516                               0.516    0.516
   .som4              0.517                               0.517    0.517
   .ist1              0.435                               0.435    0.435
   .ist2              0.582                               0.582    0.582
   .ist3              0.519                               0.519    0.519
   .ist4              0.581                               0.581    0.581
   .sns1              0.483                               0.483    0.483
   .sns2              0.579                               0.579    0.579
   .sns3              0.688                               0.688    0.688
   .sns4              0.474                               0.474    0.474
   .par1              0.666                               0.666    0.666
   .par2              0.714                               0.714    0.714
   .par3              0.586                               0.586    0.586
   .par4              0.495                               0.495    0.495
   .vrg1              0.672                               0.672    0.672
   .vrg2              0.560                               0.560    0.560
   .vrg3              0.505                               0.505    0.505
   .vrg4              0.381                               0.381    0.381
    DPR               1.000                               1.000    1.000
    TRE               1.000                               1.000    1.000
    SOM               1.000                               1.000    1.000
    IST               1.000                               1.000    1.000
    SNS               1.000                               1.000    1.000
    PAR               1.000                               1.000    1.000
    VRG               1.000                               1.000    1.000

R-Square:
                   Estimate
    dpr1              0.604
    dpr2              0.459
    dpr3              0.418
    dpr4              0.595
    tre1              0.553
    tre2              0.454
    tre3              0.484
    tre4              0.506
    som1              0.527
    som2              0.474
    som3              0.484
    som4              0.483
    ist1              0.565
    ist2              0.418
    ist3              0.481
    ist4              0.419
    sns1              0.517
    sns2              0.421
    sns3              0.312
    sns4              0.526
    par1              0.334
    par2              0.286
    par3              0.414
    par4              0.505
    vrg1              0.328
    vrg2              0.440
    vrg3              0.495
    vrg4              0.619
Show / Hide Code
summary(fit.cfa, standardized = TRUE, fit.measures = TRUE, rsquare =T)
lavaan 0.6-21 ended normally after 113 iterations

  Estimator                                       DWLS
  Optimization method                           NLMINB
  Number of model parameters                       119

  Number of observations                          2712
  Sampling weights variable                         wt

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                              1559.660    1982.905
  Degrees of freedom                               343         343
  P-value (Unknown)                                 NA       0.000
  Scaling correction factor                                  0.828
  Shift parameter                                           99.395
    simple second-order correction                                

Model Test Baseline Model:

  Test statistic                            120010.523   40103.324
  Degrees of freedom                               378         378
  P-value                                           NA       0.000
  Scaling correction factor                                  3.011

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.990       0.959
  Tucker-Lewis Index (TLI)                       0.989       0.955
                                                                  
  Robust Comparative Fit Index (CFI)                         0.906
  Robust Tucker-Lewis Index (TLI)                            0.896

Root Mean Square Error of Approximation:

  RMSEA                                          0.036       0.042
  90 Percent confidence interval - lower         0.034       0.040
  90 Percent confidence interval - upper         0.038       0.044
  P-value H_0: RMSEA <= 0.050                    1.000       1.000
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.057
  90 Percent confidence interval - lower                     0.055
  90 Percent confidence interval - upper                     0.060
  P-value H_0: Robust RMSEA <= 0.050                         0.000
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.040       0.040

Parameter Estimates:

  Parameterization                               Delta
  Standard errors                           Robust.sem
  Information                                 Expected
  Information saturated (h1) model        Unstructured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  DPR =~                                                                
    dpr1              0.346    0.018   19.429    0.000    0.778    0.778
    dpr2              0.301    0.014   20.953    0.000    0.677    0.677
    dpr3              0.287    0.015   19.545    0.000    0.646    0.646
    dpr4              0.343    0.016   21.261    0.000    0.771    0.771
  TRE =~                                                                
    tre1              0.222    0.018   12.055    0.000    0.744    0.744
    tre2              0.201    0.017   12.130    0.000    0.673    0.673
    tre3              0.208    0.018   11.827    0.000    0.696    0.696
    tre4              0.213    0.018   12.108    0.000    0.712    0.712
  SOM =~                                                                
    som1              0.426    0.016   27.348    0.000    0.726    0.726
    som2              0.404    0.016   25.986    0.000    0.689    0.689
    som3              0.408    0.013   30.458    0.000    0.696    0.696
    som4              0.407    0.014   28.474    0.000    0.694    0.694
  IST =~                                                                
    ist1              0.285    0.020   14.028    0.000    0.751    0.751
    ist2              0.245    0.017   14.439    0.000    0.647    0.647
    ist3              0.263    0.018   14.778    0.000    0.693    0.693
    ist4              0.246    0.018   13.816    0.000    0.648    0.648
  SNS =~                                                                
    sns1              0.368    0.018   20.993    0.000    0.719    0.719
    sns2              0.332    0.015   22.911    0.000    0.649    0.649
    sns3              0.286    0.013   21.243    0.000    0.558    0.558
    sns4              0.372    0.018   20.825    0.000    0.726    0.726
  PAR =~                                                                
    par1              0.347    0.015   22.886    0.000    0.578    0.578
    par2              0.320    0.016   20.042    0.000    0.534    0.534
    par3              0.386    0.016   24.728    0.000    0.643    0.643
    par4              0.426    0.017   24.929    0.000    0.711    0.711
  VRG =~                                                                
    vrg1              0.385    0.016   23.593    0.000    0.572    0.572
    vrg2              0.446    0.016   27.478    0.000    0.664    0.664
    vrg3              0.473    0.019   24.912    0.000    0.703    0.703
    vrg4              0.529    0.018   28.594    0.000    0.787    0.787
  SCL28 =~                                                              
    DPR               2.015    0.111   18.160    0.000    0.896    0.896
    TRE               3.191    0.280   11.396    0.000    0.954    0.954
    SOM               1.382    0.059   23.335    0.000    0.810    0.810
    IST               2.439    0.187   13.055    0.000    0.925    0.925
    SNS               1.675    0.089   18.728    0.000    0.859    0.859
    PAR               1.335    0.063   21.078    0.000    0.800    0.800
    VRG               1.102    0.051   21.631    0.000    0.741    0.741

Thresholds:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    dpr1|t1          -0.966    0.032  -30.132    0.000   -0.966   -0.966
    dpr1|t2           0.507    0.028   18.150    0.000    0.507    0.507
    dpr1|t3           1.564    0.042   37.270    0.000    1.564    1.564
    dpr2|t1          -0.161    0.027   -5.984    0.000   -0.161   -0.161
    dpr2|t2           0.759    0.029   25.840    0.000    0.759    0.759
    dpr2|t3           1.567    0.042   37.378    0.000    1.567    1.567
    dpr3|t1          -0.033    0.027   -1.215    0.224   -0.033   -0.033
    dpr3|t2           0.945    0.032   29.842    0.000    0.945    0.945
    dpr3|t3           1.854    0.052   35.798    0.000    1.854    1.854
    dpr4|t1           0.207    0.027    7.695    0.000    0.207    0.207
    dpr4|t2           1.005    0.032   31.322    0.000    1.005    1.005
    dpr4|t3           1.770    0.049   36.229    0.000    1.770    1.770
    tre1|t1          -0.506    0.028  -18.103    0.000   -0.506   -0.506
    tre1|t2           0.736    0.029   25.090    0.000    0.736    0.736
    tre1|t3           1.746    0.046   37.784    0.000    1.746    1.746
    tre2|t1          -0.980    0.032  -30.742    0.000   -0.980   -0.980
    tre2|t2           0.479    0.028   17.272    0.000    0.479    0.479
    tre2|t3           1.535    0.041   37.673    0.000    1.535    1.535
    tre3|t1          -0.484    0.028  -17.356    0.000   -0.484   -0.484
    tre3|t2           0.857    0.030   28.219    0.000    0.857    0.857
    tre3|t3           1.777    0.047   38.111    0.000    1.777    1.777
    tre4|t1          -1.064    0.033  -31.938    0.000   -1.064   -1.064
    tre4|t2           0.504    0.028   18.175    0.000    0.504    0.504
    tre4|t3           1.649    0.043   37.951    0.000    1.649    1.649
    som1|t1          -1.025    0.031  -32.687    0.000   -1.025   -1.025
    som1|t2           0.368    0.028   13.319    0.000    0.368    0.368
    som1|t3           1.495    0.041   36.613    0.000    1.495    1.495
    som2|t1          -0.911    0.031  -29.684    0.000   -0.911   -0.911
    som2|t2           0.510    0.028   18.031    0.000    0.510    0.510
    som2|t3           1.641    0.045   36.501    0.000    1.641    1.641
    som3|t1          -0.150    0.027   -5.599    0.000   -0.150   -0.150
    som3|t2           0.917    0.032   28.561    0.000    0.917    0.917
    som3|t3           1.903    0.055   34.789    0.000    1.903    1.903
    som4|t1          -0.208    0.027   -7.743    0.000   -0.208   -0.208
    som4|t2           1.041    0.033   31.720    0.000    1.041    1.041
    som4|t3           1.947    0.060   32.251    0.000    1.947    1.947
    ist1|t1          -0.854    0.031  -27.586    0.000   -0.854   -0.854
    ist1|t2           0.537    0.028   18.925    0.000    0.537    0.537
    ist1|t3           1.580    0.043   36.833    0.000    1.580    1.580
    ist2|t1          -0.582    0.029  -20.126    0.000   -0.582   -0.582
    ist2|t2           0.783    0.029   26.553    0.000    0.783    0.783
    ist2|t3           1.751    0.047   36.920    0.000    1.751    1.751
    ist3|t1          -0.863    0.031  -27.844    0.000   -0.863   -0.863
    ist3|t2           0.637    0.028   22.355    0.000    0.637    0.637
    ist3|t3           1.746    0.048   36.472    0.000    1.746    1.746
    ist4|t1          -0.567    0.029  -19.719    0.000   -0.567   -0.567
    ist4|t2           0.586    0.028   20.989    0.000    0.586    0.586
    ist4|t3           1.578    0.042   37.990    0.000    1.578    1.578
    sns1|t1          -0.039    0.027   -1.460    0.144   -0.039   -0.039
    sns1|t2           1.002    0.032   31.461    0.000    1.002    1.002
    sns1|t3           1.715    0.047   36.567    0.000    1.715    1.715
    sns2|t1          -0.676    0.029  -23.568    0.000   -0.676   -0.676
    sns2|t2           0.621    0.029   21.614    0.000    0.621    0.621
    sns2|t3           1.434    0.039   36.448    0.000    1.434    1.434
    sns3|t1          -0.370    0.027  -13.553    0.000   -0.370   -0.370
    sns3|t2           0.877    0.030   28.913    0.000    0.877    0.877
    sns3|t3           1.720    0.047   36.436    0.000    1.720    1.720
    sns4|t1          -1.069    0.033  -32.377    0.000   -1.069   -1.069
    sns4|t2           0.428    0.027   15.588    0.000    0.428    0.428
    sns4|t3           1.337    0.037   36.583    0.000    1.337    1.337
    par1|t1          -1.089    0.032  -33.598    0.000   -1.089   -1.089
    par1|t2           0.158    0.027    5.879    0.000    0.158    0.158
    par1|t3           1.063    0.034   31.599    0.000    1.063    1.063
    par2|t1          -0.783    0.030  -26.429    0.000   -0.783   -0.783
    par2|t2           0.689    0.029   23.574    0.000    0.689    0.689
    par2|t3           1.719    0.048   35.705    0.000    1.719    1.719
    par3|t1          -0.962    0.031  -31.146    0.000   -0.962   -0.962
    par3|t2           0.385    0.027   14.037    0.000    0.385    0.385
    par3|t3           1.354    0.038   36.095    0.000    1.354    1.354
    par4|t1          -0.217    0.027   -8.092    0.000   -0.217   -0.217
    par4|t2           0.945    0.031   30.021    0.000    0.945    0.945
    par4|t3           1.702    0.048   35.183    0.000    1.702    1.702
    vrg1|t1          -0.687    0.029  -23.294    0.000   -0.687   -0.687
    vrg1|t2           0.867    0.030   29.103    0.000    0.867    0.867
    vrg1|t3           1.945    0.056   34.623    0.000    1.945    1.945
    vrg2|t1           0.106    0.027    3.949    0.000    0.106    0.106
    vrg2|t2           1.295    0.035   36.674    0.000    1.295    1.295
    vrg2|t3           2.138    0.062   34.613    0.000    2.138    2.138
    vrg3|t1           0.624    0.028   22.096    0.000    0.624    0.624
    vrg3|t2           1.531    0.040   38.380    0.000    1.531    1.531
    vrg3|t3           2.119    0.070   30.421    0.000    2.119    2.119
    vrg4|t1          -0.360    0.027  -13.216    0.000   -0.360   -0.360
    vrg4|t2           0.994    0.033   30.303    0.000    0.994    0.994
    vrg4|t3           1.840    0.053   34.532    0.000    1.840    1.840

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .dpr1              0.395                               0.395    0.395
   .dpr2              0.542                               0.542    0.542
   .dpr3              0.582                               0.582    0.582
   .dpr4              0.405                               0.405    0.405
   .tre1              0.446                               0.446    0.446
   .tre2              0.547                               0.547    0.547
   .tre3              0.516                               0.516    0.516
   .tre4              0.493                               0.493    0.493
   .som1              0.472                               0.472    0.472
   .som2              0.526                               0.526    0.526
   .som3              0.516                               0.516    0.516
   .som4              0.518                               0.518    0.518
   .ist1              0.435                               0.435    0.435
   .ist2              0.581                               0.581    0.581
   .ist3              0.519                               0.519    0.519
   .ist4              0.580                               0.580    0.580
   .sns1              0.484                               0.484    0.484
   .sns2              0.579                               0.579    0.579
   .sns3              0.688                               0.688    0.688
   .sns4              0.473                               0.473    0.473
   .par1              0.666                               0.666    0.666
   .par2              0.714                               0.714    0.714
   .par3              0.586                               0.586    0.586
   .par4              0.495                               0.495    0.495
   .vrg1              0.672                               0.672    0.672
   .vrg2              0.559                               0.559    0.559
   .vrg3              0.505                               0.505    0.505
   .vrg4              0.381                               0.381    0.381
   .DPR               1.000                               0.198    0.198
   .TRE               1.000                               0.089    0.089
   .SOM               1.000                               0.344    0.344
   .IST               1.000                               0.144    0.144
   .SNS               1.000                               0.263    0.263
   .PAR               1.000                               0.359    0.359
   .VRG               1.000                               0.452    0.452
    SCL28             1.000                               1.000    1.000

R-Square:
                   Estimate
    dpr1              0.605
    dpr2              0.458
    dpr3              0.418
    dpr4              0.595
    tre1              0.554
    tre2              0.453
    tre3              0.484
    tre4              0.507
    som1              0.528
    som2              0.474
    som3              0.484
    som4              0.482
    ist1              0.565
    ist2              0.419
    ist3              0.481
    ist4              0.420
    sns1              0.516
    sns2              0.421
    sns3              0.312
    sns4              0.527
    par1              0.334
    par2              0.286
    par3              0.414
    par4              0.505
    vrg1              0.328
    vrg2              0.441
    vrg3              0.495
    vrg4              0.619
    DPR               0.802
    TRE               0.911
    SOM               0.656
    IST               0.856
    SNS               0.737
    PAR               0.641
    VRG               0.548
Show / Hide Code
summary(fit.cfa.bifactor, standardized = TRUE, fit.measures = TRUE, rsquare =T)
lavaan 0.6-21 ended normally after 80 iterations

  Estimator                                       DWLS
  Optimization method                           NLMINB
  Number of model parameters                       140

  Number of observations                          2712
  Sampling weights variable                         wt

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                              1160.459    1535.513
  Degrees of freedom                               322         322
  P-value (Unknown)                                 NA       0.000
  Scaling correction factor                                  0.803
  Shift parameter                                           91.215
    simple second-order correction                                

Model Test Baseline Model:

  Test statistic                            120010.523   40103.324
  Degrees of freedom                               378         378
  P-value                                           NA       0.000
  Scaling correction factor                                  3.011

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.993       0.969
  Tucker-Lewis Index (TLI)                       0.992       0.964
                                                                  
  Robust Comparative Fit Index (CFI)                         0.935
  Robust Tucker-Lewis Index (TLI)                            0.924

Root Mean Square Error of Approximation:

  RMSEA                                          0.031       0.037
  90 Percent confidence interval - lower         0.029       0.035
  90 Percent confidence interval - upper         0.033       0.039
  P-value H_0: RMSEA <= 0.050                    1.000       1.000
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.049
  90 Percent confidence interval - lower                     0.047
  90 Percent confidence interval - upper                     0.052
  P-value H_0: Robust RMSEA <= 0.050                         0.708
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.035       0.035

Parameter Estimates:

  Parameterization                               Delta
  Standard errors                           Robust.sem
  Information                                 Expected
  Information saturated (h1) model        Unstructured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  DPR =~                                                                
    dpr1              0.079    0.024    3.352    0.001    0.079    0.079
    dpr2              0.394    0.037   10.617    0.000    0.394    0.394
    dpr3              0.268    0.030    8.913    0.000    0.268    0.268
    dpr4              0.611    0.050   12.171    0.000    0.611    0.611
  TRE =~                                                                
    tre1              0.105    0.048    2.174    0.030    0.105    0.105
    tre2              0.765    0.319    2.394    0.017    0.765    0.765
    tre3              0.126    0.057    2.207    0.027    0.126    0.126
    tre4              0.061    0.032    1.911    0.056    0.061    0.061
  SOM =~                                                                
    som1              0.297    0.023   12.712    0.000    0.297    0.297
    som2              0.409    0.025   16.161    0.000    0.409    0.409
    som3              0.552    0.031   17.703    0.000    0.552    0.552
    som4              0.401    0.027   14.598    0.000    0.401    0.401
  IST =~                                                                
    ist1              0.112    0.029    3.877    0.000    0.112    0.112
    ist2              0.378    0.059    6.393    0.000    0.378    0.378
    ist3              0.468    0.071    6.604    0.000    0.468    0.468
    ist4              0.118    0.030    3.857    0.000    0.118    0.118
  SNS =~                                                                
    sns1              0.288    0.029    9.983    0.000    0.288    0.288
    sns2              0.434    0.033   13.331    0.000    0.434    0.434
    sns3              0.590    0.039   15.037    0.000    0.590    0.590
    sns4              0.156    0.026    6.034    0.000    0.156    0.156
  PAR =~                                                                
    par1              0.416    0.032   13.134    0.000    0.416    0.416
    par2              0.200    0.029    6.795    0.000    0.200    0.200
    par3              0.488    0.034   14.346    0.000    0.488    0.488
    par4              0.360    0.029   12.416    0.000    0.360    0.360
  VRG =~                                                                
    vrg1              0.360    0.028   12.746    0.000    0.360    0.360
    vrg2              0.577    0.030   19.127    0.000    0.577    0.577
    vrg3              0.444    0.029   15.276    0.000    0.444    0.444
    vrg4              0.458    0.027   16.860    0.000    0.458    0.458
  G =~                                                                  
    dpr1              0.716    0.013   54.808    0.000    0.716    0.716
    dpr2              0.593    0.016   37.047    0.000    0.593    0.593
    dpr3              0.579    0.017   34.530    0.000    0.579    0.579
    dpr4              0.675    0.015   44.440    0.000    0.675    0.675
    tre1              0.714    0.013   54.706    0.000    0.714    0.714
    tre2              0.632    0.015   42.000    0.000    0.632    0.632
    tre3              0.665    0.014   45.897    0.000    0.665    0.665
    tre4              0.687    0.014   49.623    0.000    0.687    0.687
    som1              0.601    0.016   38.145    0.000    0.601    0.601
    som2              0.557    0.017   33.266    0.000    0.557    0.557
    som3              0.550    0.018   30.708    0.000    0.550    0.550
    som4              0.562    0.017   33.525    0.000    0.562    0.562
    ist1              0.704    0.013   54.424    0.000    0.704    0.704
    ist2              0.588    0.016   35.685    0.000    0.588    0.588
    ist3              0.632    0.015   40.815    0.000    0.632    0.632
    ist4              0.607    0.016   38.784    0.000    0.607    0.607
    sns1              0.622    0.017   37.566    0.000    0.622    0.622
    sns2              0.548    0.017   32.350    0.000    0.548    0.548
    sns3              0.455    0.019   24.081    0.000    0.455    0.455
    sns4              0.639    0.015   41.712    0.000    0.639    0.639
    par1              0.456    0.019   23.668    0.000    0.456    0.456
    par2              0.439    0.019   22.980    0.000    0.439    0.439
    par3              0.509    0.016   31.208    0.000    0.509    0.509
    par4              0.572    0.017   34.005    0.000    0.572    0.572
    vrg1              0.428    0.019   22.302    0.000    0.428    0.428
    vrg2              0.479    0.020   24.180    0.000    0.479    0.479
    vrg3              0.524    0.021   25.316    0.000    0.524    0.524
    vrg4              0.587    0.016   37.051    0.000    0.587    0.587

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  DPR ~~                                                                
    TRE               0.000                               0.000    0.000
    SOM               0.000                               0.000    0.000
    IST               0.000                               0.000    0.000
    SNS               0.000                               0.000    0.000
    PAR               0.000                               0.000    0.000
    VRG               0.000                               0.000    0.000
    G                 0.000                               0.000    0.000
  TRE ~~                                                                
    SOM               0.000                               0.000    0.000
    IST               0.000                               0.000    0.000
    SNS               0.000                               0.000    0.000
    PAR               0.000                               0.000    0.000
    VRG               0.000                               0.000    0.000
    G                 0.000                               0.000    0.000
  SOM ~~                                                                
    IST               0.000                               0.000    0.000
    SNS               0.000                               0.000    0.000
    PAR               0.000                               0.000    0.000
    VRG               0.000                               0.000    0.000
    G                 0.000                               0.000    0.000
  IST ~~                                                                
    SNS               0.000                               0.000    0.000
    PAR               0.000                               0.000    0.000
    VRG               0.000                               0.000    0.000
    G                 0.000                               0.000    0.000
  SNS ~~                                                                
    PAR               0.000                               0.000    0.000
    VRG               0.000                               0.000    0.000
    G                 0.000                               0.000    0.000
  PAR ~~                                                                
    VRG               0.000                               0.000    0.000
    G                 0.000                               0.000    0.000
  VRG ~~                                                                
    G                 0.000                               0.000    0.000

Thresholds:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    dpr1|t1          -0.966    0.032  -30.132    0.000   -0.966   -0.966
    dpr1|t2           0.507    0.028   18.150    0.000    0.507    0.507
    dpr1|t3           1.564    0.042   37.270    0.000    1.564    1.564
    dpr2|t1          -0.161    0.027   -5.984    0.000   -0.161   -0.161
    dpr2|t2           0.759    0.029   25.840    0.000    0.759    0.759
    dpr2|t3           1.567    0.042   37.378    0.000    1.567    1.567
    dpr3|t1          -0.033    0.027   -1.215    0.224   -0.033   -0.033
    dpr3|t2           0.945    0.032   29.842    0.000    0.945    0.945
    dpr3|t3           1.854    0.052   35.798    0.000    1.854    1.854
    dpr4|t1           0.207    0.027    7.695    0.000    0.207    0.207
    dpr4|t2           1.005    0.032   31.322    0.000    1.005    1.005
    dpr4|t3           1.770    0.049   36.229    0.000    1.770    1.770
    tre1|t1          -0.506    0.028  -18.103    0.000   -0.506   -0.506
    tre1|t2           0.736    0.029   25.090    0.000    0.736    0.736
    tre1|t3           1.746    0.046   37.784    0.000    1.746    1.746
    tre2|t1          -0.980    0.032  -30.742    0.000   -0.980   -0.980
    tre2|t2           0.479    0.028   17.272    0.000    0.479    0.479
    tre2|t3           1.535    0.041   37.673    0.000    1.535    1.535
    tre3|t1          -0.484    0.028  -17.356    0.000   -0.484   -0.484
    tre3|t2           0.857    0.030   28.219    0.000    0.857    0.857
    tre3|t3           1.777    0.047   38.111    0.000    1.777    1.777
    tre4|t1          -1.064    0.033  -31.938    0.000   -1.064   -1.064
    tre4|t2           0.504    0.028   18.175    0.000    0.504    0.504
    tre4|t3           1.649    0.043   37.951    0.000    1.649    1.649
    som1|t1          -1.025    0.031  -32.687    0.000   -1.025   -1.025
    som1|t2           0.368    0.028   13.319    0.000    0.368    0.368
    som1|t3           1.495    0.041   36.613    0.000    1.495    1.495
    som2|t1          -0.911    0.031  -29.684    0.000   -0.911   -0.911
    som2|t2           0.510    0.028   18.031    0.000    0.510    0.510
    som2|t3           1.641    0.045   36.501    0.000    1.641    1.641
    som3|t1          -0.150    0.027   -5.599    0.000   -0.150   -0.150
    som3|t2           0.917    0.032   28.561    0.000    0.917    0.917
    som3|t3           1.903    0.055   34.789    0.000    1.903    1.903
    som4|t1          -0.208    0.027   -7.743    0.000   -0.208   -0.208
    som4|t2           1.041    0.033   31.720    0.000    1.041    1.041
    som4|t3           1.947    0.060   32.251    0.000    1.947    1.947
    ist1|t1          -0.854    0.031  -27.586    0.000   -0.854   -0.854
    ist1|t2           0.537    0.028   18.925    0.000    0.537    0.537
    ist1|t3           1.580    0.043   36.833    0.000    1.580    1.580
    ist2|t1          -0.582    0.029  -20.126    0.000   -0.582   -0.582
    ist2|t2           0.783    0.029   26.553    0.000    0.783    0.783
    ist2|t3           1.751    0.047   36.920    0.000    1.751    1.751
    ist3|t1          -0.863    0.031  -27.844    0.000   -0.863   -0.863
    ist3|t2           0.637    0.028   22.355    0.000    0.637    0.637
    ist3|t3           1.746    0.048   36.472    0.000    1.746    1.746
    ist4|t1          -0.567    0.029  -19.719    0.000   -0.567   -0.567
    ist4|t2           0.586    0.028   20.989    0.000    0.586    0.586
    ist4|t3           1.578    0.042   37.990    0.000    1.578    1.578
    sns1|t1          -0.039    0.027   -1.460    0.144   -0.039   -0.039
    sns1|t2           1.002    0.032   31.461    0.000    1.002    1.002
    sns1|t3           1.715    0.047   36.567    0.000    1.715    1.715
    sns2|t1          -0.676    0.029  -23.568    0.000   -0.676   -0.676
    sns2|t2           0.621    0.029   21.614    0.000    0.621    0.621
    sns2|t3           1.434    0.039   36.448    0.000    1.434    1.434
    sns3|t1          -0.370    0.027  -13.553    0.000   -0.370   -0.370
    sns3|t2           0.877    0.030   28.913    0.000    0.877    0.877
    sns3|t3           1.720    0.047   36.436    0.000    1.720    1.720
    sns4|t1          -1.069    0.033  -32.377    0.000   -1.069   -1.069
    sns4|t2           0.428    0.027   15.588    0.000    0.428    0.428
    sns4|t3           1.337    0.037   36.583    0.000    1.337    1.337
    par1|t1          -1.089    0.032  -33.598    0.000   -1.089   -1.089
    par1|t2           0.158    0.027    5.879    0.000    0.158    0.158
    par1|t3           1.063    0.034   31.599    0.000    1.063    1.063
    par2|t1          -0.783    0.030  -26.429    0.000   -0.783   -0.783
    par2|t2           0.689    0.029   23.574    0.000    0.689    0.689
    par2|t3           1.719    0.048   35.705    0.000    1.719    1.719
    par3|t1          -0.962    0.031  -31.146    0.000   -0.962   -0.962
    par3|t2           0.385    0.027   14.037    0.000    0.385    0.385
    par3|t3           1.354    0.038   36.095    0.000    1.354    1.354
    par4|t1          -0.217    0.027   -8.092    0.000   -0.217   -0.217
    par4|t2           0.945    0.031   30.021    0.000    0.945    0.945
    par4|t3           1.702    0.048   35.183    0.000    1.702    1.702
    vrg1|t1          -0.687    0.029  -23.294    0.000   -0.687   -0.687
    vrg1|t2           0.867    0.030   29.103    0.000    0.867    0.867
    vrg1|t3           1.945    0.056   34.623    0.000    1.945    1.945
    vrg2|t1           0.106    0.027    3.949    0.000    0.106    0.106
    vrg2|t2           1.295    0.035   36.674    0.000    1.295    1.295
    vrg2|t3           2.138    0.062   34.613    0.000    2.138    2.138
    vrg3|t1           0.624    0.028   22.096    0.000    0.624    0.624
    vrg3|t2           1.531    0.040   38.380    0.000    1.531    1.531
    vrg3|t3           2.119    0.070   30.421    0.000    2.119    2.119
    vrg4|t1          -0.360    0.027  -13.216    0.000   -0.360   -0.360
    vrg4|t2           0.994    0.033   30.303    0.000    0.994    0.994
    vrg4|t3           1.840    0.053   34.532    0.000    1.840    1.840

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .dpr1              0.480                               0.480    0.480
   .dpr2              0.493                               0.493    0.493
   .dpr3              0.593                               0.593    0.593
   .dpr4              0.171                               0.171    0.171
   .tre1              0.479                               0.479    0.479
   .tre2              0.016                               0.016    0.016
   .tre3              0.542                               0.542    0.542
   .tre4              0.524                               0.524    0.524
   .som1              0.551                               0.551    0.551
   .som2              0.522                               0.522    0.522
   .som3              0.393                               0.393    0.393
   .som4              0.523                               0.523    0.523
   .ist1              0.491                               0.491    0.491
   .ist2              0.511                               0.511    0.511
   .ist3              0.382                               0.382    0.382
   .ist4              0.618                               0.618    0.618
   .sns1              0.531                               0.531    0.531
   .sns2              0.512                               0.512    0.512
   .sns3              0.445                               0.445    0.445
   .sns4              0.568                               0.568    0.568
   .par1              0.619                               0.619    0.619
   .par2              0.768                               0.768    0.768
   .par3              0.503                               0.503    0.503
   .par4              0.543                               0.543    0.543
   .vrg1              0.687                               0.687    0.687
   .vrg2              0.437                               0.437    0.437
   .vrg3              0.529                               0.529    0.529
   .vrg4              0.445                               0.445    0.445
    DPR               1.000                               1.000    1.000
    TRE               1.000                               1.000    1.000
    SOM               1.000                               1.000    1.000
    IST               1.000                               1.000    1.000
    SNS               1.000                               1.000    1.000
    PAR               1.000                               1.000    1.000
    VRG               1.000                               1.000    1.000
    G                 1.000                               1.000    1.000

R-Square:
                   Estimate
    dpr1              0.520
    dpr2              0.507
    dpr3              0.407
    dpr4              0.829
    tre1              0.521
    tre2              0.984
    tre3              0.458
    tre4              0.476
    som1              0.449
    som2              0.478
    som3              0.607
    som4              0.477
    ist1              0.509
    ist2              0.489
    ist3              0.618
    ist4              0.382
    sns1              0.469
    sns2              0.488
    sns3              0.555
    sns4              0.432
    par1              0.381
    par2              0.232
    par3              0.497
    par4              0.457
    vrg1              0.313
    vrg2              0.563
    vrg3              0.471
    vrg4              0.555

12.2 PTSD

Show / Hide Code
summary(fit.cfa.ptsr, standardized = TRUE, fit.measures = TRUE)
lavaan 0.6-21 ended normally after 19 iterations

  Estimator                                       DWLS
  Optimization method                           NLMINB
  Number of model parameters                        26

  Number of observations                          2712
  Sampling weights variable                         wt

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                                12.537      37.181
  Degrees of freedom                                 4           4
  P-value (Unknown)                                 NA       0.000
  Scaling correction factor                                  0.338
  Shift parameter                                            0.062
    simple second-order correction                                

Model Test Baseline Model:

  Test statistic                             27606.001   16678.974
  Degrees of freedom                                10          10
  P-value                                           NA       0.000
  Scaling correction factor                                  1.656

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    1.000       0.998
  Tucker-Lewis Index (TLI)                       0.999       0.995
                                                                  
  Robust Comparative Fit Index (CFI)                         0.995
  Robust Tucker-Lewis Index (TLI)                            0.988

Root Mean Square Error of Approximation:

  RMSEA                                          0.028       0.055
  90 Percent confidence interval - lower         0.011       0.040
  90 Percent confidence interval - upper         0.046       0.072
  P-value H_0: RMSEA <= 0.050                    0.978       0.266
  P-value H_0: RMSEA >= 0.080                    0.000       0.007
                                                                  
  Robust RMSEA                                               0.060
  90 Percent confidence interval - lower                     0.042
  90 Percent confidence interval - upper                     0.079
  P-value H_0: Robust RMSEA <= 0.050                         0.170
  P-value H_0: Robust RMSEA >= 0.080                         0.039

Standardized Root Mean Square Residual:

  SRMR                                           0.012       0.012

Parameter Estimates:

  Parameterization                               Delta
  Standard errors                           Robust.sem
  Information                                 Expected
  Information saturated (h1) model        Unstructured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  PTSR =~                                                               
    ptsr1             0.786    0.010   75.182    0.000    0.786    0.786
    ptsr2             0.767    0.011   69.090    0.000    0.767    0.767
    ptsr3             0.823    0.009   93.174    0.000    0.823    0.823
    ptsr4             0.845    0.008  106.848    0.000    0.845    0.845
    ptsr5             0.780    0.010   81.258    0.000    0.780    0.780

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .ptsr2 ~~                                                              
   .ptsr3             0.076    0.011    6.743    0.000    0.076    0.209

Thresholds:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    ptsr1|t1         -0.898    0.031  -28.862    0.000   -0.898   -0.898
    ptsr1|t2         -0.263    0.027   -9.710    0.000   -0.263   -0.263
    ptsr1|t3          1.133    0.034   33.255    0.000    1.133    1.133
    ptsr1|t4          1.893    0.053   36.011    0.000    1.893    1.893
    ptsr2|t1         -0.505    0.028  -18.113    0.000   -0.505   -0.505
    ptsr2|t2          0.118    0.027    4.398    0.000    0.118    0.118
    ptsr2|t3          1.355    0.037   36.418    0.000    1.355    1.355
    ptsr2|t4          1.928    0.055   35.170    0.000    1.928    1.928
    ptsr3|t1         -0.482    0.028  -17.218    0.000   -0.482   -0.482
    ptsr3|t2          0.162    0.027    6.033    0.000    0.162    0.162
    ptsr3|t3          1.434    0.039   37.164    0.000    1.434    1.434
    ptsr3|t4          2.073    0.060   34.667    0.000    2.073    2.073
    ptsr4|t1         -0.856    0.030  -28.319    0.000   -0.856   -0.856
    ptsr4|t2         -0.231    0.027   -8.590    0.000   -0.231   -0.231
    ptsr4|t3          1.077    0.033   32.877    0.000    1.077    1.077
    ptsr4|t4          1.819    0.051   35.894    0.000    1.819    1.819
    ptsr5|t1         -0.480    0.028  -17.384    0.000   -0.480   -0.480
    ptsr5|t2          0.053    0.027    1.983    0.047    0.053    0.053
    ptsr5|t3          1.282    0.036   35.703    0.000    1.282    1.282
    ptsr5|t4          2.004    0.059   34.142    0.000    2.004    2.004

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .ptsr1             0.382                               0.382    0.382
   .ptsr2             0.411                               0.411    0.411
   .ptsr3             0.322                               0.322    0.322
   .ptsr4             0.285                               0.285    0.285
   .ptsr5             0.391                               0.391    0.391
    PTSR              1.000                               1.000    1.000

12.3 Media Traumatization

Show / Hide Code
summary(fit.cfa.mtrvm, standardized = TRUE, fit.measures = TRUE, rsquare =T)
lavaan 0.6-21 ended normally after 18 iterations

  Estimator                                       DWLS
  Optimization method                           NLMINB
  Number of model parameters                        26

  Number of observations                          2712
  Sampling weights variable                         wt

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                                 6.576      16.705
  Degrees of freedom                                 4           4
  P-value (Unknown)                                 NA       0.002
  Scaling correction factor                                  0.397
  Shift parameter                                            0.127
    simple second-order correction                                

Model Test Baseline Model:

  Test statistic                             15809.967   10502.585
  Degrees of freedom                                10          10
  P-value                                           NA       0.000
  Scaling correction factor                                  1.506

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    1.000       0.999
  Tucker-Lewis Index (TLI)                       1.000       0.997
                                                                  
  Robust Comparative Fit Index (CFI)                         0.997
  Robust Tucker-Lewis Index (TLI)                            0.994

Root Mean Square Error of Approximation:

  RMSEA                                          0.015       0.034
  90 Percent confidence interval - lower         0.000       0.018
  90 Percent confidence interval - upper         0.036       0.052
  P-value H_0: RMSEA <= 0.050                    0.999       0.926
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.037
  90 Percent confidence interval - lower                     0.019
  90 Percent confidence interval - upper                     0.056
  P-value H_0: Robust RMSEA <= 0.050                         0.856
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.010       0.010

Parameter Estimates:

  Parameterization                               Delta
  Standard errors                           Robust.sem
  Information                                 Expected
  Information saturated (h1) model        Unstructured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  MTRVM =~                                                              
    mtrvm1            0.575    0.016   35.041    0.000    0.575    0.575
    mtrvm2            0.784    0.011   74.521    0.000    0.784    0.784
    mtrvm3            0.816    0.009   89.778    0.000    0.816    0.816
    mtrvm4            0.844    0.009   95.438    0.000    0.844    0.844
    mtrvm5            0.535    0.016   33.963    0.000    0.535    0.535

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .mtrvm1 ~~                                                             
   .mtrvm2            0.137    0.014    9.928    0.000    0.137    0.271

Thresholds:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    mtrvm1|t1        -0.566    0.028  -20.233    0.000   -0.566   -0.566
    mtrvm1|t2         0.278    0.027   10.284    0.000    0.278    0.278
    mtrvm1|t3         1.052    0.033   31.929    0.000    1.052    1.052
    mtrvm1|t4         2.040    0.061   33.503    0.000    2.040    2.040
    mtrvm2|t1        -0.857    0.030  -28.278    0.000   -0.857   -0.857
    mtrvm2|t2         0.184    0.027    6.804    0.000    0.184    0.184
    mtrvm2|t3         1.026    0.032   32.152    0.000    1.026    1.026
    mtrvm2|t4         2.043    0.058   35.204    0.000    2.043    2.043
    mtrvm3|t1        -1.267    0.036  -35.652    0.000   -1.267   -1.267
    mtrvm3|t2        -0.241    0.027   -8.914    0.000   -0.241   -0.241
    mtrvm3|t3         0.555    0.028   19.751    0.000    0.555    0.555
    mtrvm3|t4         1.781    0.046   38.612    0.000    1.781    1.781
    mtrvm4|t1        -0.878    0.030  -29.122    0.000   -0.878   -0.878
    mtrvm4|t2         0.122    0.027    4.551    0.000    0.122    0.122
    mtrvm4|t3         0.930    0.031   29.836    0.000    0.930    0.930
    mtrvm4|t4         1.852    0.048   38.371    0.000    1.852    1.852
    mtrvm5|t1        -0.784    0.030  -25.872    0.000   -0.784   -0.784
    mtrvm5|t2         0.154    0.027    5.763    0.000    0.154    0.154
    mtrvm5|t3         1.027    0.032   31.738    0.000    1.027    1.027
    mtrvm5|t4         1.844    0.052   35.424    0.000    1.844    1.844

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .mtrvm1            0.669                               0.669    0.669
   .mtrvm2            0.385                               0.385    0.385
   .mtrvm3            0.335                               0.335    0.335
   .mtrvm4            0.287                               0.287    0.287
   .mtrvm5            0.714                               0.714    0.714
    MTRVM             1.000                               1.000    1.000

R-Square:
                   Estimate
    mtrvm1            0.331
    mtrvm2            0.615
    mtrvm3            0.665
    mtrvm4            0.713
    mtrvm5            0.286

12.4 Full SEM

Show / Hide Code
summary(fit.sem, standardized = TRUE, fit.measures = TRUE, rsquare =T)
lavaan 0.6-21 ended normally after 156 iterations

  Estimator                                       DWLS
  Optimization method                           NLMINB
  Number of model parameters                       174

  Number of observations                          2712
  Sampling weights variable                         wt

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                              2656.861    2996.066
  Degrees of freedom                               653         653
  P-value (Unknown)                                 NA       0.000
  Scaling correction factor                                  0.970
  Shift parameter                                          256.748
    simple second-order correction                                

Model Test Baseline Model:

  Test statistic                            239486.056   63333.490
  Degrees of freedom                               703         703
  P-value                                           NA       0.000
  Scaling correction factor                                  3.813

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.992       0.963
  Tucker-Lewis Index (TLI)                       0.991       0.960
                                                                  
  Robust Comparative Fit Index (CFI)                         0.911
  Robust Tucker-Lewis Index (TLI)                            0.904

Root Mean Square Error of Approximation:

  RMSEA                                          0.034       0.036
  90 Percent confidence interval - lower         0.032       0.035
  90 Percent confidence interval - upper         0.035       0.038
  P-value H_0: RMSEA <= 0.050                    1.000       1.000
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.051
  90 Percent confidence interval - lower                     0.049
  90 Percent confidence interval - upper                     0.052
  P-value H_0: Robust RMSEA <= 0.050                         0.296
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.038       0.038

Parameter Estimates:

  Parameterization                               Delta
  Standard errors                           Robust.sem
  Information                                 Expected
  Information saturated (h1) model        Unstructured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  DPR =~                                                                
    dpr1              0.365    0.018   20.829    0.000    0.785    0.785
    dpr2              0.311    0.014   22.846    0.000    0.669    0.669
    dpr3              0.303    0.014   21.039    0.000    0.652    0.652
    dpr4              0.356    0.015   23.438    0.000    0.766    0.766
  TRE =~                                                                
    tre1              0.133    0.029    4.579    0.000    0.741    0.741
    tre2              0.124    0.027    4.585    0.000    0.690    0.690
    tre3              0.125    0.028    4.527    0.000    0.698    0.698
    tre4              0.125    0.027    4.601    0.000    0.697    0.697
  SOM =~                                                                
    som1              0.384    0.015   25.084    0.000    0.715    0.715
    som2              0.370    0.015   24.382    0.000    0.689    0.689
    som3              0.374    0.014   27.316    0.000    0.697    0.697
    som4              0.379    0.014   26.655    0.000    0.705    0.705
  IST =~                                                                
    ist1              0.344    0.018   18.652    0.000    0.759    0.759
    ist2              0.292    0.015   19.290    0.000    0.645    0.645
    ist3              0.316    0.016   20.004    0.000    0.698    0.698
    ist4              0.288    0.016   18.078    0.000    0.636    0.636
  SNS =~                                                                
    sns1              0.374    0.017   21.922    0.000    0.705    0.705
    sns2              0.346    0.015   23.810    0.000    0.651    0.651
    sns3              0.289    0.013   21.818    0.000    0.545    0.545
    sns4              0.395    0.019   21.268    0.000    0.744    0.744
  PAR =~                                                                
    par1              0.350    0.015   23.448    0.000    0.576    0.576
    par2              0.319    0.016   20.086    0.000    0.525    0.525
    par3              0.394    0.015   25.655    0.000    0.649    0.649
    par4              0.433    0.017   25.522    0.000    0.714    0.714
  VRG =~                                                                
    vrg1              0.392    0.016   23.769    0.000    0.569    0.569
    vrg2              0.447    0.016   27.292    0.000    0.651    0.651
    vrg3              0.487    0.019   25.008    0.000    0.709    0.709
    vrg4              0.547    0.019   29.444    0.000    0.796    0.796
  SCL28 =~                                                              
    DPR               1.175    0.064   18.282    0.000    0.885    0.885
    TRE               3.390    0.771    4.395    0.000    0.984    0.984
    SOM               0.970    0.047   20.805    0.000    0.844    0.844
    IST               1.214    0.075   16.191    0.000    0.891    0.891
    SNS               0.985    0.053   18.576    0.000    0.847    0.847
    PAR               0.809    0.040   20.405    0.000    0.795    0.795
    VRG               0.652    0.031   21.033    0.000    0.726    0.726
  PTSR =~                                                               
    ptsr1             0.789    0.012   68.362    0.000    0.789    0.789
    ptsr2             0.753    0.012   62.213    0.000    0.753    0.753
    ptsr3             0.810    0.010   81.145    0.000    0.810    0.810
    ptsr4             0.828    0.009   93.489    0.000    0.828    0.828
    ptsr5             0.819    0.010   85.482    0.000    0.819    0.819
  MTRVM =~                                                              
    mtrvm1            0.462    0.017   27.361    0.000    0.605    0.605
    mtrvm2            0.609    0.014   42.033    0.000    0.796    0.796
    mtrvm3            0.605    0.013   46.458    0.000    0.792    0.792
    mtrvm4            0.638    0.014   46.300    0.000    0.835    0.835
    mtrvm5            0.431    0.016   26.568    0.000    0.564    0.564

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  SCL28 ~                                                               
    PTSR    (c_pr)    1.171    0.055   21.279    0.000    0.723    0.723
    MTRVM      (b)    0.116    0.030    3.929    0.000    0.094    0.094
  MTRVM ~                                                               
    PTSR       (a)    0.844    0.037   23.060    0.000    0.645    0.645

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .ptsr2 ~~                                                              
   .ptsr3             0.098    0.011    8.611    0.000    0.098    0.253
 .mtrvm1 ~~                                                             
   .mtrvm2            0.107    0.018    5.901    0.000    0.107    0.222

Thresholds:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    dpr1|t1          -0.966    0.032  -30.132    0.000   -0.966   -0.966
    dpr1|t2           0.507    0.028   18.150    0.000    0.507    0.507
    dpr1|t3           1.564    0.042   37.270    0.000    1.564    1.564
    dpr2|t1          -0.161    0.027   -5.984    0.000   -0.161   -0.161
    dpr2|t2           0.759    0.029   25.840    0.000    0.759    0.759
    dpr2|t3           1.567    0.042   37.378    0.000    1.567    1.567
    dpr3|t1          -0.033    0.027   -1.215    0.224   -0.033   -0.033
    dpr3|t2           0.945    0.032   29.842    0.000    0.945    0.945
    dpr3|t3           1.854    0.052   35.798    0.000    1.854    1.854
    dpr4|t1           0.207    0.027    7.695    0.000    0.207    0.207
    dpr4|t2           1.005    0.032   31.322    0.000    1.005    1.005
    dpr4|t3           1.770    0.049   36.229    0.000    1.770    1.770
    tre1|t1          -0.506    0.028  -18.103    0.000   -0.506   -0.506
    tre1|t2           0.736    0.029   25.090    0.000    0.736    0.736
    tre1|t3           1.746    0.046   37.784    0.000    1.746    1.746
    tre2|t1          -0.980    0.032  -30.742    0.000   -0.980   -0.980
    tre2|t2           0.479    0.028   17.272    0.000    0.479    0.479
    tre2|t3           1.535    0.041   37.673    0.000    1.535    1.535
    tre3|t1          -0.484    0.028  -17.356    0.000   -0.484   -0.484
    tre3|t2           0.857    0.030   28.219    0.000    0.857    0.857
    tre3|t3           1.777    0.047   38.111    0.000    1.777    1.777
    tre4|t1          -1.064    0.033  -31.938    0.000   -1.064   -1.064
    tre4|t2           0.504    0.028   18.175    0.000    0.504    0.504
    tre4|t3           1.649    0.043   37.951    0.000    1.649    1.649
    som1|t1          -1.025    0.031  -32.687    0.000   -1.025   -1.025
    som1|t2           0.368    0.028   13.319    0.000    0.368    0.368
    som1|t3           1.495    0.041   36.613    0.000    1.495    1.495
    som2|t1          -0.911    0.031  -29.684    0.000   -0.911   -0.911
    som2|t2           0.510    0.028   18.031    0.000    0.510    0.510
    som2|t3           1.641    0.045   36.501    0.000    1.641    1.641
    som3|t1          -0.150    0.027   -5.599    0.000   -0.150   -0.150
    som3|t2           0.917    0.032   28.561    0.000    0.917    0.917
    som3|t3           1.903    0.055   34.789    0.000    1.903    1.903
    som4|t1          -0.208    0.027   -7.743    0.000   -0.208   -0.208
    som4|t2           1.041    0.033   31.720    0.000    1.041    1.041
    som4|t3           1.947    0.060   32.251    0.000    1.947    1.947
    ist1|t1          -0.854    0.031  -27.586    0.000   -0.854   -0.854
    ist1|t2           0.537    0.028   18.925    0.000    0.537    0.537
    ist1|t3           1.580    0.043   36.833    0.000    1.580    1.580
    ist2|t1          -0.582    0.029  -20.126    0.000   -0.582   -0.582
    ist2|t2           0.783    0.029   26.553    0.000    0.783    0.783
    ist2|t3           1.751    0.047   36.920    0.000    1.751    1.751
    ist3|t1          -0.863    0.031  -27.844    0.000   -0.863   -0.863
    ist3|t2           0.637    0.028   22.355    0.000    0.637    0.637
    ist3|t3           1.746    0.048   36.472    0.000    1.746    1.746
    ist4|t1          -0.567    0.029  -19.719    0.000   -0.567   -0.567
    ist4|t2           0.586    0.028   20.989    0.000    0.586    0.586
    ist4|t3           1.578    0.042   37.990    0.000    1.578    1.578
    sns1|t1          -0.039    0.027   -1.460    0.144   -0.039   -0.039
    sns1|t2           1.002    0.032   31.461    0.000    1.002    1.002
    sns1|t3           1.715    0.047   36.567    0.000    1.715    1.715
    sns2|t1          -0.676    0.029  -23.568    0.000   -0.676   -0.676
    sns2|t2           0.621    0.029   21.614    0.000    0.621    0.621
    sns2|t3           1.434    0.039   36.448    0.000    1.434    1.434
    sns3|t1          -0.370    0.027  -13.553    0.000   -0.370   -0.370
    sns3|t2           0.877    0.030   28.913    0.000    0.877    0.877
    sns3|t3           1.720    0.047   36.436    0.000    1.720    1.720
    sns4|t1          -1.069    0.033  -32.377    0.000   -1.069   -1.069
    sns4|t2           0.428    0.027   15.588    0.000    0.428    0.428
    sns4|t3           1.337    0.037   36.583    0.000    1.337    1.337
    par1|t1          -1.089    0.032  -33.598    0.000   -1.089   -1.089
    par1|t2           0.158    0.027    5.879    0.000    0.158    0.158
    par1|t3           1.063    0.034   31.599    0.000    1.063    1.063
    par2|t1          -0.783    0.030  -26.429    0.000   -0.783   -0.783
    par2|t2           0.689    0.029   23.574    0.000    0.689    0.689
    par2|t3           1.719    0.048   35.705    0.000    1.719    1.719
    par3|t1          -0.962    0.031  -31.146    0.000   -0.962   -0.962
    par3|t2           0.385    0.027   14.037    0.000    0.385    0.385
    par3|t3           1.354    0.038   36.095    0.000    1.354    1.354
    par4|t1          -0.217    0.027   -8.092    0.000   -0.217   -0.217
    par4|t2           0.945    0.031   30.021    0.000    0.945    0.945
    par4|t3           1.702    0.048   35.183    0.000    1.702    1.702
    vrg1|t1          -0.687    0.029  -23.294    0.000   -0.687   -0.687
    vrg1|t2           0.867    0.030   29.103    0.000    0.867    0.867
    vrg1|t3           1.945    0.056   34.623    0.000    1.945    1.945
    vrg2|t1           0.106    0.027    3.949    0.000    0.106    0.106
    vrg2|t2           1.295    0.035   36.674    0.000    1.295    1.295
    vrg2|t3           2.138    0.062   34.613    0.000    2.138    2.138
    vrg3|t1           0.624    0.028   22.096    0.000    0.624    0.624
    vrg3|t2           1.531    0.040   38.380    0.000    1.531    1.531
    vrg3|t3           2.119    0.070   30.421    0.000    2.119    2.119
    vrg4|t1          -0.360    0.027  -13.216    0.000   -0.360   -0.360
    vrg4|t2           0.994    0.033   30.303    0.000    0.994    0.994
    vrg4|t3           1.840    0.053   34.532    0.000    1.840    1.840
    ptsr1|t1         -0.898    0.031  -28.862    0.000   -0.898   -0.898
    ptsr1|t2         -0.263    0.027   -9.710    0.000   -0.263   -0.263
    ptsr1|t3          1.133    0.034   33.255    0.000    1.133    1.133
    ptsr1|t4          1.893    0.053   36.011    0.000    1.893    1.893
    ptsr2|t1         -0.505    0.028  -18.113    0.000   -0.505   -0.505
    ptsr2|t2          0.118    0.027    4.398    0.000    0.118    0.118
    ptsr2|t3          1.355    0.037   36.418    0.000    1.355    1.355
    ptsr2|t4          1.928    0.055   35.170    0.000    1.928    1.928
    ptsr3|t1         -0.482    0.028  -17.218    0.000   -0.482   -0.482
    ptsr3|t2          0.162    0.027    6.033    0.000    0.162    0.162
    ptsr3|t3          1.434    0.039   37.164    0.000    1.434    1.434
    ptsr3|t4          2.073    0.060   34.667    0.000    2.073    2.073
    ptsr4|t1         -0.856    0.030  -28.319    0.000   -0.856   -0.856
    ptsr4|t2         -0.231    0.027   -8.590    0.000   -0.231   -0.231
    ptsr4|t3          1.077    0.033   32.877    0.000    1.077    1.077
    ptsr4|t4          1.819    0.051   35.894    0.000    1.819    1.819
    ptsr5|t1         -0.480    0.028  -17.384    0.000   -0.480   -0.480
    ptsr5|t2          0.053    0.027    1.983    0.047    0.053    0.053
    ptsr5|t3          1.282    0.036   35.703    0.000    1.282    1.282
    ptsr5|t4          2.004    0.059   34.142    0.000    2.004    2.004
    mtrvm1|t1        -0.566    0.028  -20.233    0.000   -0.566   -0.566
    mtrvm1|t2         0.278    0.027   10.284    0.000    0.278    0.278
    mtrvm1|t3         1.052    0.033   31.929    0.000    1.052    1.052
    mtrvm1|t4         2.040    0.061   33.503    0.000    2.040    2.040
    mtrvm2|t1        -0.857    0.030  -28.278    0.000   -0.857   -0.857
    mtrvm2|t2         0.184    0.027    6.804    0.000    0.184    0.184
    mtrvm2|t3         1.026    0.032   32.152    0.000    1.026    1.026
    mtrvm2|t4         2.043    0.058   35.204    0.000    2.043    2.043
    mtrvm3|t1        -1.267    0.036  -35.652    0.000   -1.267   -1.267
    mtrvm3|t2        -0.241    0.027   -8.914    0.000   -0.241   -0.241
    mtrvm3|t3         0.555    0.028   19.751    0.000    0.555    0.555
    mtrvm3|t4         1.781    0.046   38.612    0.000    1.781    1.781
    mtrvm4|t1        -0.878    0.030  -29.122    0.000   -0.878   -0.878
    mtrvm4|t2         0.122    0.027    4.551    0.000    0.122    0.122
    mtrvm4|t3         0.930    0.031   29.836    0.000    0.930    0.930
    mtrvm4|t4         1.852    0.048   38.371    0.000    1.852    1.852
    mtrvm5|t1        -0.784    0.030  -25.872    0.000   -0.784   -0.784
    mtrvm5|t2         0.154    0.027    5.763    0.000    0.154    0.154
    mtrvm5|t3         1.027    0.032   31.738    0.000    1.027    1.027
    mtrvm5|t4         1.844    0.052   35.424    0.000    1.844    1.844

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .dpr1              0.384                               0.384    0.384
   .dpr2              0.552                               0.552    0.552
   .dpr3              0.575                               0.575    0.575
   .dpr4              0.414                               0.414    0.414
   .tre1              0.450                               0.450    0.450
   .tre2              0.524                               0.524    0.524
   .tre3              0.513                               0.513    0.513
   .tre4              0.515                               0.515    0.515
   .som1              0.488                               0.488    0.488
   .som2              0.525                               0.525    0.525
   .som3              0.515                               0.515    0.515
   .som4              0.503                               0.503    0.503
   .ist1              0.423                               0.423    0.423
   .ist2              0.585                               0.585    0.585
   .ist3              0.513                               0.513    0.513
   .ist4              0.596                               0.596    0.596
   .sns1              0.503                               0.503    0.503
   .sns2              0.576                               0.576    0.576
   .sns3              0.703                               0.703    0.703
   .sns4              0.446                               0.446    0.446
   .par1              0.668                               0.668    0.668
   .par2              0.724                               0.724    0.724
   .par3              0.579                               0.579    0.579
   .par4              0.490                               0.490    0.490
   .vrg1              0.676                               0.676    0.676
   .vrg2              0.577                               0.577    0.577
   .vrg3              0.497                               0.497    0.497
   .vrg4              0.366                               0.366    0.366
   .ptsr1             0.377                               0.377    0.377
   .ptsr2             0.432                               0.432    0.432
   .ptsr3             0.345                               0.345    0.345
   .ptsr4             0.314                               0.314    0.314
   .ptsr5             0.329                               0.329    0.329
   .mtrvm1            0.634                               0.634    0.634
   .mtrvm2            0.366                               0.366    0.366
   .mtrvm3            0.373                               0.373    0.373
   .mtrvm4            0.303                               0.303    0.303
   .mtrvm5            0.682                               0.682    0.682
   .DPR               1.000                               0.216    0.216
   .TRE               1.000                               0.032    0.032
   .SOM               1.000                               0.288    0.288
   .IST               1.000                               0.205    0.205
   .SNS               1.000                               0.282    0.282
   .PAR               1.000                               0.368    0.368
   .VRG               1.000                               0.473    0.473
   .SCL28             1.000                               0.381    0.381
    PTSR              1.000                               1.000    1.000
   .MTRVM             1.000                               0.584    0.584

R-Square:
                   Estimate
    dpr1              0.616
    dpr2              0.448
    dpr3              0.425
    dpr4              0.586
    tre1              0.550
    tre2              0.476
    tre3              0.487
    tre4              0.485
    som1              0.512
    som2              0.475
    som3              0.485
    som4              0.497
    ist1              0.577
    ist2              0.415
    ist3              0.487
    ist4              0.404
    sns1              0.497
    sns2              0.424
    sns3              0.297
    sns4              0.554
    par1              0.332
    par2              0.276
    par3              0.421
    par4              0.510
    vrg1              0.324
    vrg2              0.423
    vrg3              0.503
    vrg4              0.634
    ptsr1             0.623
    ptsr2             0.568
    ptsr3             0.655
    ptsr4             0.686
    ptsr5             0.671
    mtrvm1            0.366
    mtrvm2            0.634
    mtrvm3            0.627
    mtrvm4            0.697
    mtrvm5            0.318
    DPR               0.784
    TRE               0.968
    SOM               0.712
    IST               0.795
    SNS               0.718
    PAR               0.632
    VRG               0.527
    SCL28             0.619
    MTRVM             0.416

Defined Parameters:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
    direct            1.171    0.055   21.279    0.000    0.723    0.723
    indirect          0.098    0.025    3.963    0.000    0.060    0.060
    total             1.269    0.047   27.048    0.000    0.783    0.783
    prop_mediated     0.077    0.020    3.869    0.000    0.077    0.077

Reproducibility

Show / Hide Code
sessioninfo::session_info()
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.5.2 (2025-10-31 ucrt)
 os       Windows 11 x64 (build 26200)
 system   x86_64, mingw32
 ui       RTerm
 language (EN)
 collate  Ukrainian_Ukraine.utf8
 ctype    Ukrainian_Ukraine.utf8
 tz       Europe/Kiev
 date     2026-02-27
 pandoc   3.6.3 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
 quarto   NA @ C:\\PROGRA~1\\RStudio\\RESOUR~1\\app\\bin\\quarto\\bin\\quarto.exe

─ Packages ───────────────────────────────────────────────────────────────────
 ! package                   * version   date (UTC) lib source
   abind                       1.4-8     2024-09-12 [1] CRAN (R 4.5.2)
   arm                         1.14-4    2024-04-01 [1] CRAN (R 4.5.2)
   backports                   1.5.0     2024-05-23 [1] CRAN (R 4.5.2)
   base64enc                   0.1-6     2026-02-02 [1] CRAN (R 4.5.2)
   BifactorIndicesCalculator * 0.2.2     2021-05-12 [1] CRAN (R 4.5.2)
   boot                        1.3-32    2025-08-29 [2] CRAN (R 4.5.2)
   carData                     3.0-6     2026-01-30 [1] CRAN (R 4.5.2)
   checkmate                   2.3.4     2026-02-03 [1] CRAN (R 4.5.2)
   cli                         3.6.5     2025-04-23 [1] CRAN (R 4.5.2)
   cluster                     2.1.8.1   2025-03-12 [2] CRAN (R 4.5.2)
   coda                        0.19-4.1  2024-01-31 [1] CRAN (R 4.5.2)
   colorspace                  2.1-2     2025-09-22 [1] CRAN (R 4.5.2)
   corpcor                     1.6.10    2021-09-16 [1] CRAN (R 4.5.2)
   curl                        7.0.0     2025-08-19 [1] CRAN (R 4.5.2)
   data.table                  1.18.2.1  2026-01-27 [1] CRAN (R 4.5.2)
   datawizard                  1.3.0     2025-10-11 [1] CRAN (R 4.5.2)
   DiagrammeR                * 1.0.11    2024-02-02 [1] CRAN (R 4.5.2)
   DiagrammeRsvg               0.1       2016-02-04 [1] CRAN (R 4.5.2)
   digest                      0.6.39    2025-11-19 [1] CRAN (R 4.5.2)
   dplyr                     * 1.2.0     2026-02-03 [1] CRAN (R 4.5.2)
   emmeans                     2.0.1     2025-12-16 [1] CRAN (R 4.5.2)
   estimability                1.5.1     2024-05-12 [1] CRAN (R 4.5.2)
   evaluate                    1.0.5     2025-08-27 [1] CRAN (R 4.5.2)
   farver                      2.1.2     2024-05-13 [1] CRAN (R 4.5.2)
   fastmap                     1.2.0     2024-05-15 [1] CRAN (R 4.5.2)
   fdrtool                     1.2.18    2024-08-20 [1] CRAN (R 4.5.2)
   forcats                     1.0.1     2025-09-25 [1] CRAN (R 4.5.2)
   foreign                     0.8-90    2025-03-31 [2] CRAN (R 4.5.2)
   Formula                     1.2-5     2023-02-24 [1] CRAN (R 4.5.2)
   generics                    0.1.4     2025-05-09 [1] CRAN (R 4.5.2)
   ggcorrplot                * 0.1.4.1   2023-09-05 [1] CRAN (R 4.5.2)
   ggplot2                   * 4.0.2     2026-02-03 [1] CRAN (R 4.5.2)
   glasso                      1.11      2019-10-01 [1] CRAN (R 4.5.2)
   glue                        1.8.0     2024-09-30 [1] CRAN (R 4.5.2)
   GPArotation                 2025.3-1  2025-04-12 [1] CRAN (R 4.5.2)
   gridExtra                 * 2.3       2017-09-09 [1] CRAN (R 4.5.2)
   gtable                      0.3.6     2024-10-25 [1] CRAN (R 4.5.2)
   gtools                      3.9.5     2023-11-20 [1] CRAN (R 4.5.2)
   haven                     * 2.5.5     2025-05-30 [1] CRAN (R 4.5.2)
   here                      * 1.0.2     2025-09-15 [1] CRAN (R 4.5.2)
   Hmisc                       5.2-5     2026-01-09 [1] CRAN (R 4.5.2)
   hms                         1.1.4     2025-10-17 [1] CRAN (R 4.5.2)
   htmlTable                   2.4.3     2024-07-21 [1] CRAN (R 4.5.2)
   htmltools                   0.5.9     2025-12-04 [1] CRAN (R 4.5.2)
   htmlwidgets                 1.6.4     2023-12-06 [1] CRAN (R 4.5.2)
   igraph                      2.2.2     2026-02-12 [1] CRAN (R 4.5.2)
   insight                     1.4.6     2026-02-04 [1] CRAN (R 4.5.2)
   jpeg                        0.1-11    2025-03-21 [1] CRAN (R 4.5.2)
   jsonlite                    2.0.0     2025-03-27 [1] CRAN (R 4.5.2)
   kableExtra                * 1.4.0     2024-01-24 [1] CRAN (R 4.5.2)
   knitr                     * 1.51      2025-12-20 [1] CRAN (R 4.5.2)
   kutils                      1.73      2023-09-17 [1] CRAN (R 4.5.2)
   labeling                    0.4.3     2023-08-29 [1] CRAN (R 4.5.2)
   lattice                     0.22-7    2025-04-02 [2] CRAN (R 4.5.2)
   lavaan                    * 0.6-21    2025-12-21 [1] CRAN (R 4.5.2)
   lavaanExtra               * 0.2.2     2025-09-15 [1] CRAN (R 4.5.2)
   lavaanPlot                * 0.8.1     2024-01-29 [1] CRAN (R 4.5.2)
   lifecycle                   1.0.5     2026-01-08 [1] CRAN (R 4.5.2)
   lisrelToR                   0.3       2024-02-07 [1] CRAN (R 4.5.2)
   lme4                        1.1-38    2025-12-02 [1] CRAN (R 4.5.2)
   magrittr                    2.0.4     2025-09-12 [1] CRAN (R 4.5.2)
   MASS                        7.3-65    2025-02-28 [2] CRAN (R 4.5.2)
   Matrix                      1.7-4     2025-08-28 [2] CRAN (R 4.5.2)
   mi                          1.2       2025-09-02 [1] CRAN (R 4.5.2)
   minqa                       1.2.8     2024-08-17 [1] CRAN (R 4.5.2)
   mnormt                      2.1.2     2026-01-27 [1] CRAN (R 4.5.2)
   mvtnorm                     1.3-3     2025-01-10 [1] CRAN (R 4.5.2)
   nlme                        3.1-168   2025-03-31 [2] CRAN (R 4.5.2)
   nloptr                      2.2.1     2025-03-17 [1] CRAN (R 4.5.2)
   nnet                        7.3-20    2025-01-01 [2] CRAN (R 4.5.2)
   OpenMx                      2.22.10   2025-11-07 [1] CRAN (R 4.5.2)
   openxlsx                    4.2.8.1   2025-10-31 [1] CRAN (R 4.5.2)
   patchwork                 * 1.3.2     2025-08-25 [1] CRAN (R 4.5.2)
   pbapply                     1.7-4     2025-07-20 [1] CRAN (R 4.5.2)
   pbivnorm                    0.6.0     2015-01-23 [1] CRAN (R 4.5.2)
   pillar                      1.11.1    2025-09-17 [1] CRAN (R 4.5.2)
   pkgconfig                   2.0.3     2019-09-22 [1] CRAN (R 4.5.2)
   plyr                        1.8.9     2023-10-02 [1] CRAN (R 4.5.2)
   png                         0.1-8     2022-11-29 [1] CRAN (R 4.5.2)
   psych                     * 2.6.1     2026-02-03 [1] CRAN (R 4.5.2)
   purrr                     * 1.2.1     2026-01-09 [1] CRAN (R 4.5.2)
   qgraph                      1.9.8     2023-11-03 [1] CRAN (R 4.5.2)
   quadprog                    1.5-8     2019-11-20 [1] CRAN (R 4.5.2)
   R6                          2.6.1     2025-02-15 [1] CRAN (R 4.5.2)
   ragg                        1.5.0     2025-09-02 [1] CRAN (R 4.5.2)
   rbibutils                   2.4.1     2026-01-21 [1] CRAN (R 4.5.2)
   RColorBrewer                1.1-3     2022-04-03 [1] CRAN (R 4.5.2)
   Rcpp                        1.1.1     2026-01-10 [1] CRAN (R 4.5.2)
 D RcppParallel                5.1.11-1  2025-08-27 [1] CRAN (R 4.5.2)
   Rdpack                      2.6.6     2026-02-08 [1] CRAN (R 4.5.2)
   readr                       2.2.0     2026-02-19 [1] CRAN (R 4.5.2)
   reformulas                  0.4.4     2026-02-02 [1] CRAN (R 4.5.2)
   reshape2                    1.4.5     2025-11-12 [1] CRAN (R 4.5.2)
   rlang                       1.1.7     2026-01-09 [1] CRAN (R 4.5.2)
   rmarkdown                   2.30      2025-09-28 [1] CRAN (R 4.5.2)
   rockchalk                   1.8.157   2022-08-06 [1] CRAN (R 4.5.2)
   rpart                       4.1.24    2025-01-07 [2] CRAN (R 4.5.2)
   rprojroot                   2.1.1     2025-08-26 [1] CRAN (R 4.5.2)
   rstudioapi                  0.18.0    2026-01-16 [1] CRAN (R 4.5.2)
   rsvg                        2.7.0     2025-09-08 [1] CRAN (R 4.5.2)
   S7                          0.2.1     2025-11-14 [1] CRAN (R 4.5.2)
   scales                      1.4.0     2025-04-24 [1] CRAN (R 4.5.2)
   sem                         3.1-16    2024-08-28 [1] CRAN (R 4.5.2)
   semPlot                   * 1.1.8     2026-02-11 [1] CRAN (R 4.5.2)
   semTools                  * 0.5-8.902 2026-02-16 [1] https://simsem.r-universe.dev (R 4.5.2)
   sessioninfo                 1.2.3     2025-02-05 [1] CRAN (R 4.5.2)
   sjlabelled                  1.2.0     2022-04-10 [1] CRAN (R 4.5.2)
   sjmisc                    * 2.8.11    2025-07-30 [1] CRAN (R 4.5.2)
   stringi                     1.8.7     2025-03-27 [1] CRAN (R 4.5.2)
   stringr                   * 1.6.0     2025-11-04 [1] CRAN (R 4.5.2)
   svglite                     2.2.2     2025-10-21 [1] CRAN (R 4.5.2)
   systemfonts                 1.3.1     2025-10-01 [1] CRAN (R 4.5.2)
   textshaping                 1.0.4     2025-10-10 [1] CRAN (R 4.5.2)
   tibble                    * 3.3.1     2026-01-11 [1] CRAN (R 4.5.2)
   tidyselect                  1.2.1     2024-03-11 [1] CRAN (R 4.5.2)
   tzdb                        0.5.0     2025-03-15 [1] CRAN (R 4.5.2)
   V8                          8.0.1     2025-10-10 [1] CRAN (R 4.5.2)
   vctrs                       0.7.1     2026-01-23 [1] CRAN (R 4.5.2)
   viridisLite                 0.4.3     2026-02-04 [1] CRAN (R 4.5.2)
   visNetwork                  2.1.4     2025-09-04 [1] CRAN (R 4.5.2)
   webshot                     0.5.5     2023-06-26 [1] CRAN (R 4.5.2)
   withr                       3.0.2     2024-10-28 [1] CRAN (R 4.5.2)
   xfun                        0.56      2026-01-18 [1] CRAN (R 4.5.2)
   XML                         3.99-0.22 2026-02-10 [1] CRAN (R 4.5.2)
   xml2                        1.5.2     2026-01-17 [1] CRAN (R 4.5.2)
   xtable                      1.8-8     2026-02-22 [1] CRAN (R 4.5.2)
   yaml                        2.3.12    2025-12-10 [1] CRAN (R 4.5.2)
   zip                         2.3.3     2025-05-13 [1] CRAN (R 4.5.2)

 [1] C:/Users/Admin/AppData/Local/R/win-library/4.5
 [2] C:/Program Files/R/R-4.5.2/library

 * ── Packages attached to the search path.
 D ── DLL MD5 mismatch, broken installation.

──────────────────────────────────────────────────────────────────────────────

How to cite (APA 7th ed.):
Bova, A. A. (2026). PTSD and distress among the Ukrainian population during the war: Does media traumatization play a mediating role? [Analytical Code Report — Working Version] RPubs. https://rpubs.com/abova/mediation-analysis

BibTeX:

@misc{bova2026,
  author = {Bova, Andrii A.},
  title  = {PTSD and Distress Among the Ukrainian Population During the War:
             Does Media Traumatization Play a Mediating Role?},
  subtitle = {Analytical Code Report — Working Version},
  year   = {2026},
  url    = {https://rpubs.com/abova/mediation-analysis}
}

Document last updated: 27 February 2026