library(readr)
setwd("/Users/melissalagunas/Desktop/Yarns Research Project")
EAET_mediation_data <- read_csv("EAET_mediation_data.csv")
## Rows: 66 Columns: 86
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (86): id, group, eaet, dropout, PCS_bT, PCS_pT, PCScha_p_b, PCScha_6m_b,...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
View(EAET_mediation_data)
library(apaTables)
library(lavaan)
## This is lavaan 0.6-16
## lavaan is FREE software! Please report any bugs.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ purrr     1.0.2
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(psych)
## 
## Attaching package: 'psych'
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## 
## The following object is masked from 'package:lavaan':
## 
##     cor2cov
library(jtools)
library(broom)
library(interactions)
library(tidySEM)
## Loading required package: OpenMx
## OpenMx may run faster if it is compiled to take advantage of multiple cores.
## 
## Attaching package: 'OpenMx'
## 
## The following object is masked from 'package:psych':
## 
##     tr
## 
## Registered S3 method overwritten by 'tidySEM':
##   method          from  
##   predict.MxModel OpenMx
## 
## Attaching package: 'tidySEM'
## 
## The following object is masked from 'package:jtools':
## 
##     get_data
eaet_data <- EAET_mediation_data %>%
  select(
    # ID
    id,
    
    # Outcomes at post-treatment (p)
    meanpain_p,      # Pain severity - mean pain severity at post treatment
    painint_p,       # Pain interference  - mean pain interference at post treatment
    depress_p,       # Depression - total raw scores
    anxiety_p,       # Anxiety - total raw scores
    
    # Outcomes at 6-month (for sensitivity analyses)
    meanpain_6m,
    painint_6m,
    depress_6m,
    anxiety_6m,
    
    # Change scores (alternative outcome specification)
    paincha_p_b,
    painintcha_p_b,
    depresscha_p_b,
    anxietycha_p_b,
    
    # Baseline outcomes (for controlling)
    meanpain_b,
    painint_b,
    depress_b,
    anxiety_b,
    
    # Treatment variable (note: all participants are in EAET, so this is actually group)
    group,
    eaet,
    
    # Treatment engagement variables (potential moderators)
    attend,          # Session attendance (0-8)
    wai,             # Working alliance
    
    # Baseline symptom moderators
    PCS_bT,          # Pain catastrophizing
    ADS_bT,          # Anger discomfort (baseline)
    
    # Emotional processing moderators
    SOPA_bEmot,      # Emotional approach to pain (baseline)
    EAC_bT,          # Emotional approach coping - Total
    EAC_bEX,         # Emotional approach - Expression
    EAC_bEP,         # Emotional approach - Processing
    AEQ_bT,          # Ambivalence over emotional expression
    
    # Coping style moderators  
    Coping_bCat,     # Catastrophizing coping
    Coping_bDA,      # Distraction/avoidance coping
    Coping_bRPS,     # Reappraisal/positive thinking
    
    # Comorbidity moderators
    PCL_bT           # PTSD symptoms (baseline)
  )
# Descriptive statistics ----
cat("\n=== DESCRIPTIVE STATISTICS ===\n")
## 
## === DESCRIPTIVE STATISTICS ===
descriptives <- eaet_data %>%
  select(meanpain_p, painint_p, depress_p, anxiety_p,
         attend, wai, PCS_bT, SOPA_bEmot, EAC_bT, AEQ_bT) %>%
  psych::describe()
print(descriptives)
##            vars  n  mean    sd median trimmed   mad min max range  skew
## meanpain_p    1 57  3.70  1.96    3.5    3.65  2.22   0   8     8  0.24
## painint_p     2 57 21.98  8.53   23.0   21.74 10.38   8  40    32  0.19
## depress_p     3 57 15.37  6.82   13.0   14.77  5.93   5  34    29  0.64
## anxiety_p     4 57 15.79  5.73   16.0   15.68  7.41   7  28    21  0.11
## attend        5 66  5.32  2.77    6.0    5.61  2.97   0   8     8 -0.70
## wai           6 57 63.89 14.85   67.0   65.19 13.34  19  84    65 -0.83
## PCS_bT        7 66 22.73 13.15   21.0   22.09 14.08   2  52    50  0.40
## SOPA_bEmot    8 66  5.18  2.27    5.0    5.41  2.97   0   8     8 -0.74
## EAC_bT        9 66 21.94  5.59   23.0   22.43  4.45   2  32    30 -1.05
## AEQ_bT       10 66 37.44 10.92   36.0   37.04  9.64  15  70    55  0.47
##            kurtosis   se
## meanpain_p    -0.86 0.26
## painint_p     -1.06 1.13
## depress_p     -0.58 0.90
## anxiety_p     -1.10 0.76
## attend        -0.95 0.34
## wai            0.14 1.97
## PCS_bT        -0.96 1.62
## SOPA_bEmot    -0.29 0.28
## EAC_bT         1.70 0.69
## AEQ_bT         0.37 1.34
# ===================================================================
# ANGER DISCOMFORT MODERATING PAIN SEVERITY
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline anger discomfort on post-treatment pain severity?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → PAIN SEVERITY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    ADS_attend = ADS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain severity
pain_mod_ols <- lm(meanpain_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                     meanpain_b, 
                   data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ols, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 3.350, p = 0.019
## R² = 0.256
## Adj. R² = 0.179 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                1.632   -0.155    3.419    1.847   0.072
## ADS_bT_c                   0.031   -0.031    0.093    1.003   0.322
## attend_c                  -0.225   -0.428   -0.022   -2.241   0.031
## meanpain_b                 0.323    0.044    0.602    2.343   0.024
## ADS_bT_c:attend_c         -0.002   -0.025    0.022   -0.161   0.873
## -------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Anger Discomfort → Pain Severity")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.04     0.77   0.44
## 
## Slope of ADS_bT_c when attend_c =  0.5909091 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.03     1.03   0.31
## 
## Slope of ADS_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.04     0.67   0.51
# ===================================================================
# ANGER DISCOMFORT MODERATING PAIN INTERFERENCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline anger discomfort on post-treatment pain interference?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → PAIN INTERFERENCE ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    ADS_attend = ADS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain interference
painint_mod_ols <- lm(painint_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                        painint_b, 
                      data = eaet_data)

# Display results
painint_mod_summary <- jtools::summ(painint_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 7.863, p = 0.000
## R² = 0.446
## Adj. R² = 0.390 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                7.279   -0.619   15.177    1.864   0.070
## ADS_bT_c                   0.302    0.052    0.553    2.442   0.019
## attend_c                  -0.763   -1.618    0.092   -1.805   0.079
## painint_b                  0.539    0.265    0.813    3.976   0.000
## ADS_bT_c:attend_c         -0.004   -0.101    0.093   -0.091   0.928
## -------------------------------------------------------------------
# Interaction plot
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Anger Discomfort → Pain Interference")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(painint_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is INSIDE the interval [-1.11, 2.76], the slope of ADS_bT_c
## is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.31   0.18     1.72   0.09
## 
## Slope of ADS_bT_c when attend_c =  0.5909091 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.30   0.12     2.58   0.01
## 
## Slope of ADS_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.29   0.15     1.87   0.07
# ===================================================================
# ANGER DISCOMFORT MODERATING ANXIETY
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline anger discomfort on post-treatment anxiety?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → ANXIETY ===\n")
## 
## 
## === MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → ANXIETY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    ADS_attend = ADS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment anxiety
anxiety_mod_ols <- lm(anxiety_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                        anxiety_b, 
                      data = eaet_data)

# Display results
anxiety_mod_summary <- jtools::summ(anxiety_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 9.238, p = 0.000
## R² = 0.487
## Adj. R² = 0.434 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                5.183    0.529    9.837    2.253   0.030
## ADS_bT_c                   0.073   -0.096    0.242    0.871   0.389
## attend_c                  -0.635   -1.159   -0.110   -2.449   0.019
## anxiety_b                  0.553    0.319    0.788    4.775   0.000
## ADS_bT_c:attend_c         -0.053   -0.113    0.008   -1.766   0.085
## -------------------------------------------------------------------
# Interaction plot
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Anger Discomfort → Anxiety")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(anxiety_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.17   0.12     1.50   0.14
## 
## Slope of ADS_bT_c when attend_c =  0.5909091 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.08     0.53   0.60
## 
## Slope of ADS_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.09   0.10    -0.90   0.37
# ===================================================================
# ANGER DISCOMFORT MODERATING DEPRESSION
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline anger discomfort on post-treatment depression?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → DEPRESSION ===\n")
## 
## 
## === MODERATION EXAMPLE 4: ATTENDANCE × ANGER DISCOMFORT → DEPRESSION ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    ADS_attend = ADS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment depression
depress_mod_ols <- lm(depress_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                        depress_b, 
                      data = eaet_data)

# Display results
depress_mod_summary <- jtools::summ(depress_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 9.013, p = 0.000
## R² = 0.480
## Adj. R² = 0.427 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                2.559   -2.546   7.664    1.014   0.317
## ADS_bT_c                   0.025   -0.176   0.226    0.254   0.801
## attend_c                  -0.500   -1.161   0.162   -1.527   0.135
## depress_b                  0.638    0.400   0.876    5.413   0.000
## ADS_bT_c:attend_c         -0.065   -0.142   0.011   -1.732   0.091
## ------------------------------------------------------------------
# Interaction plot
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Anger Discomfort → Depression")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(depress_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ols, 
  pred = ADS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.15   0.14     1.06   0.30
## 
## Slope of ADS_bT_c when attend_c =  0.5909091 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.01   0.09    -0.14   0.89
## 
## Slope of ADS_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.18   0.12    -1.46   0.15
# ===================================================================
# ANGER DISCOMFORT WITH WORKING ALLIANCE MODERATING PAIN SEVERITY
# ===================================================================
# Research Question: Does working alliance moderate the effect of 
# baseline anger discomfort on post-treatment pain severity?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → PAIN SEVERITY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    wai_c = scale(wai, scale = FALSE),             # Mean-centered working alliance
    ADS_wai = ADS_bT_c * wai_c                     # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain severity
pain_mod_ols <- lm(meanpain_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                     meanpain_b, 
                   data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ols, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 3.412, p = 0.017
## R² = 0.259
## Adj. R² = 0.183 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             1.733   -0.129    3.595    1.882   0.067
## ADS_bT_c                0.034   -0.028    0.096    1.098   0.279
## wai_c                  -0.041   -0.077   -0.005   -2.307   0.026
## meanpain_b              0.292    0.003    0.582    2.042   0.048
## ADS_bT_c:wai_c         -0.000   -0.004    0.004   -0.169   0.866
## ----------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Anger Discomfort → Pain Severity")

print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.05     0.81   0.42
## 
## Slope of ADS_bT_c when wai_c =   1.105263 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.03     1.11   0.27
## 
## Slope of ADS_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.03     0.84   0.41
# ===================================================================
# ANGER DISCOMFORT WITH WORKING ALLIANCE MODERATING PAIN INTERFERENCE
# ===================================================================
# Research Question: Does working alliance moderate the effect of 
# baseline anger discomfort on post-treatment pain interference?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → PAIN INTERFERENCE ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    wai_c = scale(wai, scale = FALSE),             # Mean-centered working alliance
    ADS_wai = ADS_bT_c * wai_c                     # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain interference
painint_mod_ols <- lm(painint_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                        painint_b, 
                      data = eaet_data)

# Display results
painint_mod_summary <- jtools::summ(painint_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 9.572, p = 0.000
## R² = 0.495
## Adj. R² = 0.444 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             6.510   -1.160   14.179    1.717   0.094
## ADS_bT_c                0.308    0.074    0.543    2.661   0.011
## wai_c                  -0.193   -0.336   -0.050   -2.726   0.010
## painint_b               0.557    0.294    0.821    4.274   0.000
## ADS_bT_c:wai_c          0.000   -0.015    0.016    0.035   0.973
## ----------------------------------------------------------------
# Interaction plot
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Anger Discomfort → Pain Interference")

print(painint_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## When wai_c is INSIDE the interval [-8.85, 19.33], the slope of ADS_bT_c is
## p < .05.
## 
## Note: The range of observed values of wai_c is [-30.89, 20.11]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.30   0.17     1.75   0.09
## 
## Slope of ADS_bT_c when wai_c =   1.105263 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.31   0.11     2.72   0.01
## 
## Slope of ADS_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.31   0.13     2.31   0.03
# ===================================================================
# ANGER DISCOMFORT WITH WORKING ALLIANCE MODERATING ANXIETY
# ===================================================================
# Research Question: Does working alliance moderate the effect of 
# baseline anger discomfort on post-treatment anxiety?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → ANXIETY ===\n")
## 
## 
## === MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → ANXIETY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    wai_c = scale(wai, scale = FALSE),             # Mean-centered working alliance
    ADS_wai = ADS_bT_c * wai_c                     # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment anxiety
anxiety_mod_ols <- lm(anxiety_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                        anxiety_b, 
                      data = eaet_data)

# Display results
anxiety_mod_summary <- jtools::summ(anxiety_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 9.586, p = 0.000
## R² = 0.496
## Adj. R² = 0.444 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             4.409   -0.437    9.255    1.840   0.073
## ADS_bT_c                0.056   -0.110    0.222    0.678   0.502
## wai_c                  -0.108   -0.203   -0.013   -2.292   0.027
## anxiety_b               0.581    0.336    0.825    4.807   0.000
## ADS_bT_c:wai_c         -0.009   -0.019    0.001   -1.829   0.075
## ----------------------------------------------------------------
# Interaction plot
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Anger Discomfort → Anxiety")

print(anxiety_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.17   0.12     1.45   0.16
## 
## Slope of ADS_bT_c when wai_c =   1.105263 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.05   0.08     0.57   0.57
## 
## Slope of ADS_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.08   0.09    -0.88   0.38
# ===================================================================
# ANGER DISCOMFORT WITH WORKING ALLIANCE MODERATING DEPRESSION
# ===================================================================
# Research Question: Does working alliance moderate the effect of 
# baseline anger discomfort on post-treatment depression?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → DEPRESSION ===\n")
## 
## 
## === MODERATION EXAMPLE 5: WORKING ALLIANCE × ANGER DISCOMFORT → DEPRESSION ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    wai_c = scale(wai, scale = FALSE),             # Mean-centered working alliance
    ADS_wai = ADS_bT_c * wai_c                     # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment depression
depress_mod_ols <- lm(depress_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                        depress_b, 
                      data = eaet_data)

# Display results
depress_mod_summary <- jtools::summ(depress_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 9.452, p = 0.000
## R² = 0.492
## Adj. R² = 0.440 
## 
## Standard errors: OLS
## ---------------------------------------------------------------
##                          Est.     2.5%   97.5%   t val.       p
## -------------------- -------- -------- ------- -------- -------
## (Intercept)             2.364   -2.885   7.613    0.911   0.368
## ADS_bT_c                0.009   -0.188   0.205    0.090   0.929
## wai_c                  -0.114   -0.230   0.001   -1.998   0.053
## depress_b               0.637    0.392   0.881    5.273   0.000
## ADS_bT_c:wai_c         -0.008   -0.021   0.005   -1.246   0.220
## ---------------------------------------------------------------
# Interaction plot
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Anger Discomfort → Depression")

print(depress_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ols, 
  pred = ADS_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.11   0.15     0.75   0.46
## 
## Slope of ADS_bT_c when wai_c =   1.105263 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.00   0.10     0.00   1.00
## 
## Slope of ADS_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.11   0.11    -1.01   0.32
# ===================================================================
# SESSION ATTENDANCE MODERATING PAIN OUTCOMES
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline pain catastrophizing on post-treatment pain severity?
# 
# Conceptual model: Does attending more sessions strengthen the 
# relationship between initial catastrophizing and pain improvement?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 1: ATTENDANCE × CATASTROPHIZING → PAIN ===\n")
## 
## 
## === MODERATION EXAMPLE 1: ATTENDANCE × CATASTROPHIZING → PAIN ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    PCS_attend = PCS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain severity
pain_mod_ols <- lm(meanpain_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                     meanpain_b, 
                   data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ols, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.627, p = 0.003
## R² = 0.263
## Adj. R² = 0.206 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                2.474    0.753    4.194    2.885   0.006
## PCS_bT_c                   0.026   -0.020    0.072    1.142   0.259
## attend_c                  -0.331   -0.531   -0.132   -3.336   0.002
## meanpain_b                 0.248   -0.034    0.531    1.765   0.083
## PCS_bT_c:attend_c         -0.005   -0.022    0.011   -0.641   0.524
## -------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing → Pain Severity")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.03     1.14   0.26
## 
## Slope of PCS_bT_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.02     1.06   0.29
## 
## Slope of PCS_bT_c when attend_c =  3.045536 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.03     0.36   0.72
# ===================================================================
# SESSION ATTENDANCE MODERATING PAIN OUTCOMES
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline pain catastrophizing on post-treatment pain interference?
# 
# Conceptual model: Does attending more sessions strengthen the 
# relationship between initial catastrophizing and pain improvement?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 1: ATTENDANCE × CATASTROPHIZING → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION EXAMPLE 1: ATTENDANCE × CATASTROPHIZING → PAIN INTERFERENCE ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    PCS_attend = PCS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain interference
painint_mod_ols <- lm(painint_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                        painint_b, 
                      data = eaet_data)

# Display results
painint_mod_summary <- jtools::summ(painint_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 6.816, p = 0.000
## R² = 0.344
## Adj. R² = 0.293 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                7.281   -1.298   15.860    1.703   0.095
## PCS_bT_c                   0.034   -0.170    0.239    0.336   0.738
## attend_c                  -1.073   -1.895   -0.251   -2.618   0.012
## painint_b                  0.565    0.260    0.871    3.711   0.001
## PCS_bT_c:attend_c         -0.028   -0.097    0.040   -0.836   0.407
## -------------------------------------------------------------------
# Interaction plot
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing → Pain Interference")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(painint_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.09   0.14     0.63   0.53
## 
## Slope of PCS_bT_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.10     0.19   0.85
## 
## Slope of PCS_bT_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.05   0.11    -0.46   0.65
# ===================================================================
# SESSION ATTENDANCE MODERATING PAIN OUTCOMES
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline pain catastrophizing on post-treatment anxiety?
# 
# Conceptual model: Does attending more sessions strengthen the 
# relationship between initial catastrophizing and pain improvement?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE: ATTENDANCE × CATASTROPHIZING → ANXIETY ===\n")
## 
## 
## === MODERATION EXAMPLE: ATTENDANCE × CATASTROPHIZING → ANXIETY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    PCS_attend = PCS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment anxiety
anxiety_mod_ols <- lm(anxiety_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                        anxiety_b, 
                      data = eaet_data)

# Display results
anxiety_mod_summary <- jtools::summ(anxiety_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 10.096, p = 0.000
## R² = 0.437
## Adj. R² = 0.394 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                7.511    3.029   11.993    3.362   0.001
## PCS_bT_c                   0.088   -0.034    0.210    1.450   0.153
## attend_c                  -0.687   -1.200   -0.175   -2.691   0.010
## anxiety_b                  0.468    0.240    0.696    4.117   0.000
## PCS_bT_c:attend_c         -0.059   -0.101   -0.017   -2.790   0.007
## -------------------------------------------------------------------
# Interaction plot
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing → Anxiety")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(anxiety_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is OUTSIDE the interval [-0.88, 4.87], the slope of PCS_bT_c
## is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.20   0.08     2.38   0.02
## 
## Slope of PCS_bT_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.05   0.06     0.94   0.35
## 
## Slope of PCS_bT_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.09   0.07    -1.28   0.21
# ===================================================================
# SESSION ATTENDANCE MODERATING PAIN OUTCOMES
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline pain catastrophizing on post-treatment depression?
# 
# Conceptual model: Does attending more sessions strengthen the 
# relationship between initial catastrophizing and pain improvement?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE: ATTENDANCE × CATASTROPHIZING → DEPRESSION ===\n")
## 
## 
## === MODERATION EXAMPLE: ATTENDANCE × CATASTROPHIZING → DEPRESSION ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    attend_c = scale(attend, scale = FALSE),       # Mean-centered attendance
    PCS_attend = PCS_bT_c * attend_c               # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment depression
depress_mod_ols <- lm(depress_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                        depress_b, 
                      data = eaet_data)

# Display results
depress_mod_summary <- jtools::summ(depress_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 11.821, p = 0.000
## R² = 0.476
## Adj. R² = 0.436 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                2.527   -2.605    7.659    0.988   0.328
## PCS_bT_c                  -0.024   -0.168    0.120   -0.333   0.741
## attend_c                  -0.785   -1.370   -0.200   -2.692   0.010
## depress_b                  0.655    0.415    0.894    5.482   0.000
## PCS_bT_c:attend_c         -0.056   -0.105   -0.007   -2.303   0.025
## -------------------------------------------------------------------
# Interaction plot
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing → Depression")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(depress_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ols, 
  pred = PCS_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is OUTSIDE the interval [-12.68, 2.12], the slope of PCS_bT_c
## is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.08   0.10     0.83   0.41
## 
## Slope of PCS_bT_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.06   0.07    -0.83   0.41
## 
## Slope of PCS_bT_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.19   0.08    -2.38   0.02
# ===================================================================
# EMOTIONAL PROCESSING MODERATING PAIN OUTCOMES  
# ===================================================================
# Research Question: Does baseline emotional approach coping moderate
# the effect of baseline pain catastrophizing on pain severity?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    EAC_bT_c = scale(EAC_bT, scale = FALSE),      # Mean-centered emotional coping
    PCS_EAC = PCS_bT_c * EAC_bT_c                  # Interaction term
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
pain_mod_ols <- lm(meanpain_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                     meanpain_b, 
                   data = eaet_data)

pain_mod_summary <- jtools::summ(pain_mod_ols, 
                                  digits = 3,
                                  confint = TRUE)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 2.016, p = 0.106
## R² = 0.134
## Adj. R² = 0.068 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                1.992    0.087   3.897    2.099   0.041
## PCS_bT_c                   0.015   -0.032   0.061    0.624   0.535
## EAC_bT_c                  -0.055   -0.146   0.036   -1.207   0.233
## meanpain_b                 0.294   -0.021   0.609    1.875   0.066
## PCS_bT_c:EAC_bT_c          0.002   -0.006   0.010    0.492   0.625
## ------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Emotional Approach Coping"
) + 
  theme_minimal() +
  ggtitle("Moderation: Emotional Coping × Catastrophizing → Pain Severity")

print(pain_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when EAC_bT_c = -5.6773588 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.00   0.04     0.08   0.93
## 
## Slope of PCS_bT_c when EAC_bT_c =  0.1483254 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.02     0.64   0.53
## 
## Slope of PCS_bT_c when EAC_bT_c =  5.9740096 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.03     0.83   0.41
# ===================================================================
# EMOTIONAL PROCESSING MODERATING PAIN OUTCOMES  
# ===================================================================
# Research Question: Does baseline emotional approach coping moderate
# the effect of baseline pain catastrophizing on pain interference?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → PAIN INTERFERENCE ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    EAC_bT_c = scale(EAC_bT, scale = FALSE),      # Mean-centered emotional coping
    PCS_EAC = PCS_bT_c * EAC_bT_c                  # Interaction term
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
painint_mod_ols <- lm(painint_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                        painint_b, 
                      data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_ols, 
                                     digits = 3,
                                     confint = TRUE)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 5.166, p = 0.001
## R² = 0.284
## Adj. R² = 0.229 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                7.882   -0.956   16.721    1.790   0.079
## PCS_bT_c                   0.006   -0.192    0.205    0.065   0.948
## EAC_bT_c                  -0.082   -0.432    0.268   -0.471   0.639
## painint_b                  0.512    0.197    0.826    3.266   0.002
## PCS_bT_c:EAC_bT_c          0.021   -0.013    0.054    1.247   0.218
## -------------------------------------------------------------------
# Interaction plot
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Emotional Approach Coping"
) + 
  theme_minimal() +
  ggtitle("Moderation: Emotional Coping × Catastrophizing → Pain Interference")

print(painint_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when EAC_bT_c = -5.6773588 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.11   0.14    -0.78   0.44
## 
## Slope of PCS_bT_c when EAC_bT_c =  0.1483254 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.10     0.10   0.92
## 
## Slope of PCS_bT_c when EAC_bT_c =  5.9740096 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.13   0.13     0.96   0.34
# ===================================================================
# EMOTIONAL PROCESSING MODERATING PAIN OUTCOMES  
# ===================================================================
# Research Question: Does baseline emotional approach coping moderate
# the effect of baseline pain catastrophizing on anxiety?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → ANXIETY ===\n")
## 
## 
## === MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → ANXIETY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    EAC_bT_c = scale(EAC_bT, scale = FALSE),      # Mean-centered emotional coping
    PCS_EAC = PCS_bT_c * EAC_bT_c                  # Interaction term
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
anxiety_mod_ols <- lm(anxiety_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                        anxiety_b, 
                      data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_ols, 
                                     digits = 3,
                                     confint = TRUE)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 7.913, p = 0.000
## R² = 0.378
## Adj. R² = 0.331 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                7.329    2.474   12.183    3.029   0.004
## PCS_bT_c                   0.045   -0.079    0.169    0.733   0.467
## EAC_bT_c                  -0.070   -0.296    0.157   -0.618   0.539
## anxiety_b                  0.461    0.215    0.708    3.754   0.000
## PCS_bT_c:EAC_bT_c         -0.024   -0.045   -0.004   -2.352   0.023
## -------------------------------------------------------------------
# Interaction plot
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Emotional Approach Coping"
) + 
  theme_minimal() +
  ggtitle("Moderation: Emotional Coping × Catastrophizing → Anxiety")

print(anxiety_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## When EAC_bT_c is OUTSIDE the interval [-4.96, 16.67], the slope of PCS_bT_c
## is p < .05.
## 
## Note: The range of observed values of EAC_bT_c is [-19.94, 10.06]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when EAC_bT_c = -5.6773588 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.18   0.09     2.09   0.04
## 
## Slope of PCS_bT_c when EAC_bT_c =  0.1483254 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.06     0.67   0.50
## 
## Slope of PCS_bT_c when EAC_bT_c =  5.9740096 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.10   0.08    -1.18   0.24
# ===================================================================
# EMOTIONAL PROCESSING MODERATING PAIN OUTCOMES  
# ===================================================================
# Research Question: Does baseline emotional approach coping moderate
# the effect of baseline pain catastrophizing on depression?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → DEPRESSION ===\n")
## 
## 
## === MODERATION EXAMPLE 2: EMOTIONAL COPING × CATASTROPHIZING → DEPRESSION ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    EAC_bT_c = scale(EAC_bT, scale = FALSE),      # Mean-centered emotional coping
    PCS_EAC = PCS_bT_c * EAC_bT_c                  # Interaction term
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
depress_mod_ols <- lm(depress_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                        depress_b, 
                      data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_ols, 
                                     digits = 3,
                                     confint = TRUE)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 10.090, p = 0.000
## R² = 0.437
## Adj. R² = 0.394 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                3.918   -1.887    9.723    1.354   0.181
## PCS_bT_c                  -0.033   -0.183    0.117   -0.442   0.660
## EAC_bT_c                  -0.166   -0.438    0.106   -1.221   0.227
## depress_b                  0.571    0.301    0.841    4.238   0.000
## PCS_bT_c:EAC_bT_c         -0.026   -0.049   -0.002   -2.180   0.034
## -------------------------------------------------------------------
# Interaction plot
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Emotional Approach Coping"
) + 
  theme_minimal() +
  ggtitle("Moderation: Emotional Coping × Catastrophizing → Depression")

print(depress_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ols, 
  pred = PCS_bT_c, 
  modx = EAC_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## When EAC_bT_c is OUTSIDE the interval [-36.16, 5.90], the slope of PCS_bT_c
## is p < .05.
## 
## Note: The range of observed values of EAC_bT_c is [-19.94, 10.06]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when EAC_bT_c = -5.6773588 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.11   0.11     1.03   0.31
## 
## Slope of PCS_bT_c when EAC_bT_c =  0.1483254 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.04   0.07    -0.49   0.62
## 
## Slope of PCS_bT_c when EAC_bT_c =  5.9740096 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.19   0.09    -2.02   0.05
# ===================================================================
# EXAMPLE 3: WORKING ALLIANCE MODERATING PAIN SEVERITY
# ===================================================================
# Research Question: Does therapeutic alliance (WAI) moderate the 
# effect of baseline emotional ambivalence on pain severity?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    AEQ_bT_c = scale(AEQ_bT, scale = FALSE),
    wai_c = scale(wai, scale = FALSE),
    AEQ_wai = AEQ_bT_c * wai_c
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
pain_mod_ols <- lm(meanpain_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                     meanpain_b, 
                   data = eaet_data)

pain_mod_summary <- jtools::summ(pain_mod_ols, 
                                  digits = 3,
                                  confint = TRUE)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.471, p = 0.004
## R² = 0.256
## Adj. R² = 0.199 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             1.982    0.450    3.514    2.596   0.012
## AEQ_bT_c                0.031   -0.013    0.076    1.406   0.166
## wai_c                  -0.050   -0.082   -0.018   -3.129   0.003
## meanpain_b              0.300    0.049    0.551    2.401   0.020
## AEQ_bT_c:wai_c         -0.001   -0.004    0.002   -0.577   0.566
## ----------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  x.label = "Baseline Emotional Ambivalence (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Ambivalence → Pain Severity")

print(pain_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of AEQ_bT_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.03     1.34   0.19
## 
## Slope of AEQ_bT_c when wai_c =  2.991759e-15 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.02     1.41   0.17
## 
## Slope of AEQ_bT_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.03     0.63   0.53
# ===================================================================
# EXAMPLE 3: WORKING ALLIANCE MODERATING PAIN INTERFERENCE
# ===================================================================
# Research Question: Does therapeutic alliance (WAI) moderate the 
# effect of baseline emotional ambivalence on pain interference?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → PAIN INTERFERENCE ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    AEQ_bT_c = scale(AEQ_bT, scale = FALSE),
    wai_c = scale(wai, scale = FALSE),
    AEQ_wai = AEQ_bT_c * wai_c
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
painint_mod_ols <- lm(painint_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                        painint_b, 
                      data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_ols, 
                                     digits = 3,
                                     confint = TRUE)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 11.648, p = 0.000
## R² = 0.473
## Adj. R² = 0.432 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             6.808    0.288   13.328    2.095   0.041
## AEQ_bT_c                0.225    0.061    0.388    2.754   0.008
## wai_c                  -0.228   -0.349   -0.106   -3.765   0.000
## painint_b               0.559    0.328    0.790    4.858   0.000
## AEQ_bT_c:wai_c         -0.000   -0.011    0.010   -0.072   0.943
## ----------------------------------------------------------------
# Interaction plot
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  x.label = "Baseline Emotional Ambivalence (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Ambivalence → Pain Interference")

print(painint_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## When wai_c is INSIDE the interval [-13.69, 14.86], the slope of AEQ_bT_c is
## p < .05.
## 
## Note: The range of observed values of wai_c is [-44.89, 20.11]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of AEQ_bT_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.23   0.12     1.94   0.06
## 
## Slope of AEQ_bT_c when wai_c =  2.991759e-15 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.22   0.08     2.75   0.01
## 
## Slope of AEQ_bT_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.22   0.11     2.01   0.05
# ===================================================================
# EXAMPLE 3: WORKING ALLIANCE MODERATING ANXIETY OUTCOMES
# ===================================================================
# Research Question: Does therapeutic alliance (WAI) moderate the 
# effect of baseline emotional ambivalence on anxiety outcomes?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → ANXIETY ===\n")
## 
## 
## === MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → ANXIETY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    AEQ_bT_c = scale(AEQ_bT, scale = FALSE),
    wai_c = scale(wai, scale = FALSE),
    AEQ_wai = AEQ_bT_c * wai_c
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
anxiety_mod_ols <- lm(anxiety_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                        anxiety_b, 
                      data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_ols, 
                                     digits = 3,
                                     confint = TRUE)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 9.134, p = 0.000
## R² = 0.413
## Adj. R² = 0.367 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             6.178    1.960   10.396    2.939   0.005
## AEQ_bT_c                0.036   -0.085    0.157    0.599   0.552
## wai_c                  -0.099   -0.185   -0.013   -2.302   0.025
## anxiety_b               0.517    0.304    0.729    4.877   0.000
## AEQ_bT_c:wai_c         -0.007   -0.015    0.000   -1.917   0.061
## ----------------------------------------------------------------
# Interaction plot
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  x.label = "Baseline Emotional Ambivalence (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Ambivalence → Anxiety")

print(anxiety_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of AEQ_bT_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.15   0.09     1.64   0.11
## 
## Slope of AEQ_bT_c when wai_c =  2.991759e-15 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.06     0.60   0.55
## 
## Slope of AEQ_bT_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.07   0.08    -0.95   0.34
# ===================================================================
# EXAMPLE 3: WORKING ALLIANCE MODERATING DEPRESSION OUTCOMES
# ===================================================================
# Research Question: Does therapeutic alliance (WAI) moderate the 
# effect of baseline emotional ambivalence on depression outcomes?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → DEPRESSION ===\n")
## 
## 
## === MODERATION EXAMPLE 3: WORKING ALLIANCE × AMBIVALENCE → DEPRESSION ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    AEQ_bT_c = scale(AEQ_bT, scale = FALSE),
    wai_c = scale(wai, scale = FALSE),
    AEQ_wai = AEQ_bT_c * wai_c
  )

# --- OLS Approach ---
cat("\n--- OLS RESULTS ---\n")
## 
## --- OLS RESULTS ---
depress_mod_ols <- lm(depress_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                        depress_b, 
                      data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_ols, 
                                     digits = 3,
                                     confint = TRUE)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 10.609, p = 0.000
## R² = 0.449
## Adj. R² = 0.407 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             2.860   -1.799    7.520    1.232   0.224
## AEQ_bT_c               -0.037   -0.177    0.103   -0.531   0.598
## wai_c                  -0.112   -0.208   -0.015   -2.310   0.025
## depress_b               0.617    0.401    0.832    5.744   0.000
## AEQ_bT_c:wai_c         -0.007   -0.015    0.002   -1.481   0.145
## ----------------------------------------------------------------
# Interaction plot
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  x.label = "Baseline Emotional Ambivalence (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Ambivalence → Depression")

print(depress_interact_plot)

# Simple slopes
cat("\n--- SIMPLE SLOPES ---\n")
## 
## --- SIMPLE SLOPES ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ols, 
  pred = AEQ_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of AEQ_bT_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.06   0.10     0.59   0.56
## 
## Slope of AEQ_bT_c when wai_c =  2.991759e-15 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.04   0.07    -0.53   0.60
## 
## Slope of AEQ_bT_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.13   0.09    -1.52   0.13
# ===================================================================
# PCL (PTSD) MODERATING ANGER DISCOMFORT
# ===================================================================

# ===================================================================
# PCL MODERATING ANGER DISCOMFORT → PAIN SEVERITY
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline anger discomfort on post-treatment pain severity?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → PAIN SEVERITY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    ADS_PCL = ADS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain severity
pain_mod_ols <- lm(meanpain_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                     meanpain_b, 
                   data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ols, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 2.842, p = 0.037
## R² = 0.226
## Adj. R² = 0.146 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                0.939   -1.084   2.962    0.938   0.354
## ADS_bT_c                  -0.002   -0.069   0.064   -0.066   0.948
## PCL_bT_c                   0.003   -0.030   0.036    0.193   0.848
## meanpain_b                 0.377    0.071   0.683    2.491   0.017
## ADS_bT_c:PCL_bT_c          0.003   -0.000   0.006    1.807   0.078
## ------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Anger Discomfort → Pain Severity")

print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.06   0.05    -1.11   0.27
## 
## Slope of ADS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.00   0.03    -0.15   0.89
## 
## Slope of ADS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.05   0.04     1.31   0.20
# ===================================================================
# PCL MODERATING ANGER DISCOMFORT → PAIN INTERFERENCE
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline anger discomfort on post-treatment pain interference?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → PAIN INTERFERENCE ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    ADS_PCL = ADS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain interference
painint_mod_ols <- lm(painint_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                        painint_b, 
                      data = eaet_data)

# Display results
painint_mod_summary <- jtools::summ(painint_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 6.991, p = 0.000
## R² = 0.418
## Adj. R² = 0.358 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                            Est.     2.5%    97.5%   t val.       p
## ----------------------- ------- -------- -------- -------- -------
## (Intercept)               8.571   -0.398   17.540    1.933   0.061
## ADS_bT_c                  0.226   -0.042    0.493    1.703   0.097
## PCL_bT_c                  0.030   -0.114    0.174    0.424   0.674
## painint_b                 0.459    0.152    0.766    3.023   0.004
## ADS_bT_c:PCL_bT_c         0.006   -0.006    0.019    1.022   0.313
## ------------------------------------------------------------------
# Interaction plot
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Anger Discomfort → Pain Interference")

print(painint_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## When PCL_bT_c is INSIDE the interval [5.37, 34.35], the slope of ADS_bT_c
## is p < .05.
## 
## Note: The range of observed values of PCL_bT_c is [-28.88, 40.12]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.10   0.20     0.51   0.61
## 
## Slope of ADS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.22   0.13     1.64   0.11
## 
## Slope of ADS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.34   0.15     2.27   0.03
# ===================================================================
# PCL MODERATING ANGER DISCOMFORT → ANXIETY
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline anger discomfort on post-treatment anxiety?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → ANXIETY ===\n")
## 
## 
## === MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → ANXIETY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    ADS_PCL = ADS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment anxiety
anxiety_mod_ols <- lm(anxiety_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                        anxiety_b, 
                      data = eaet_data)

# Display results
anxiety_mod_summary <- jtools::summ(anxiety_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 6.373, p = 0.000
## R² = 0.395
## Adj. R² = 0.333 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                5.437   -1.013   11.887    1.705   0.096
## ADS_bT_c                   0.032   -0.152    0.215    0.349   0.729
## PCL_bT_c                  -0.001   -0.108    0.106   -0.023   0.982
## anxiety_b                  0.525    0.206    0.845    3.325   0.002
## ADS_bT_c:PCL_bT_c         -0.003   -0.011    0.005   -0.793   0.433
## -------------------------------------------------------------------
# Interaction plot
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Anger Discomfort → Anxiety")

print(anxiety_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.09   0.14     0.69   0.49
## 
## Slope of ADS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.09     0.38   0.71
## 
## Slope of ADS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.03   0.10    -0.26   0.80
# ===================================================================
# PCL MODERATING ANGER DISCOMFORT → DEPRESSION
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline anger discomfort on post-treatment depression?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → DEPRESSION ===\n")
## 
## 
## === MODERATION EXAMPLE 6: PCL × ANGER DISCOMFORT → DEPRESSION ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    ADS_bT_c = scale(ADS_bT, scale = FALSE),      # Mean-centered anger discomfort
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    ADS_PCL = ADS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment depression
depress_mod_ols <- lm(depress_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                        depress_b, 
                      data = eaet_data)

# Display results
depress_mod_summary <- jtools::summ(depress_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 8.603, p = 0.000
## R² = 0.469
## Adj. R² = 0.414 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                3.542   -2.661   9.745    1.155   0.255
## ADS_bT_c                   0.019   -0.192   0.229    0.180   0.858
## PCL_bT_c                  -0.008   -0.123   0.106   -0.146   0.885
## depress_b                  0.601    0.320   0.881    4.335   0.000
## ADS_bT_c:PCL_bT_c         -0.009   -0.019   0.001   -1.831   0.075
## ------------------------------------------------------------------
# Interaction plot
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Anger Discomfort (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Anger Discomfort → Depression")

print(depress_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ols, 
  pred = ADS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of ADS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.19   0.16     1.21   0.23
## 
## Slope of ADS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.11     0.26   0.80
## 
## Slope of ADS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.14   0.11    -1.22   0.23
# ===================================================================
# PCL (PTSD) MODERATING CATASTROPHIZING
# ===================================================================

# ===================================================================
# PCL MODERATING CATASTROPHIZING → PAIN SEVERITY
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline catastrophizing on post-treatment pain severity?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → PAIN SEVERITY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    PCS_PCL = PCS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain severity
pain_mod_ols <- lm(meanpain_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                     meanpain_b, 
                   data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ols, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 2.288, p = 0.077
## R² = 0.190
## Adj. R² = 0.107 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                1.862   -0.284   4.007    1.755   0.087
## PCS_bT_c                   0.028   -0.028   0.083    1.014   0.317
## PCL_bT_c                  -0.002   -0.037   0.033   -0.118   0.906
## meanpain_b                 0.243   -0.092   0.578    1.465   0.151
## PCS_bT_c:PCL_bT_c          0.001   -0.002   0.003    0.707   0.484
## ------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Catastrophizing → Pain Severity")

print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.04     0.27   0.79
## 
## Slope of PCS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.03     0.98   0.33
## 
## Slope of PCS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.03     1.28   0.21
# ===================================================================
# PCL MODERATING CATASTROPHIZING → PAIN INTERFERENCE
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline catastrophizing on post-treatment pain interference?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → PAIN INTERFERENCE ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    PCS_PCL = PCS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment pain interference
painint_mod_ols <- lm(painint_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                        painint_b, 
                      data = eaet_data)

# Display results
painint_mod_summary <- jtools::summ(painint_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 5.960, p = 0.001
## R² = 0.379
## Adj. R² = 0.316 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)               12.086    1.565   22.608    2.323   0.025
## PCS_bT_c                   0.164   -0.075    0.403    1.389   0.173
## PCL_bT_c                   0.067   -0.083    0.217    0.901   0.373
## painint_b                  0.372    0.006    0.738    2.056   0.046
## PCS_bT_c:PCL_bT_c         -0.004   -0.015    0.007   -0.775   0.443
## -------------------------------------------------------------------
# Interaction plot
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Catastrophizing → Pain Interference")

print(painint_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.24   0.16     1.53   0.13
## 
## Slope of PCS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.17   0.12     1.42   0.16
## 
## Slope of PCS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.09   0.15     0.62   0.54
# ===================================================================
# PCL MODERATING CATASTROPHIZING → ANXIETY
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline catastrophizing on post-treatment anxiety?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → ANXIETY ===\n")
## 
## 
## === MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → ANXIETY ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    PCS_PCL = PCS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment anxiety
anxiety_mod_ols <- lm(anxiety_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                        anxiety_b, 
                      data = eaet_data)

# Display results
anxiety_mod_summary <- jtools::summ(anxiety_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 7.727, p = 0.000
## R² = 0.442
## Adj. R² = 0.385 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                6.196   -0.033   12.424    2.012   0.051
## PCS_bT_c                   0.126   -0.007    0.259    1.917   0.063
## PCL_bT_c                  -0.037   -0.145    0.070   -0.701   0.487
## anxiety_b                  0.461    0.153    0.770    3.024   0.004
## PCS_bT_c:PCL_bT_c          0.001   -0.005    0.008    0.357   0.723
## -------------------------------------------------------------------
# Interaction plot
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Catastrophizing → Anxiety")

print(anxiety_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.10   0.10     1.08   0.29
## 
## Slope of PCS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.12   0.07     1.89   0.07
## 
## Slope of PCS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.15   0.08     1.77   0.08
# ===================================================================
# PCL MODERATING CATASTROPHIZING → DEPRESSION
# ===================================================================
# Research Question: Does baseline PTSD moderate the effect of 
# baseline catastrophizing on post-treatment depression?
# ===================================================================

cat("\n\n=== MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → DEPRESSION ===\n")
## 
## 
## === MODERATION EXAMPLE 7: PCL × CATASTROPHIZING → DEPRESSION ===
# Prepare data: mean-center continuous predictors
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),      # Mean-centered catastrophizing
    PCL_bT_c = scale(PCL_bT, scale = FALSE),       # Mean-centered PTSD symptoms
    PCS_PCL = PCS_bT_c * PCL_bT_c                  # Interaction term
  )

# --- OLS Approach with lm() ---
cat("\n--- OLS RESULTS (using lm) ---\n")
## 
## --- OLS RESULTS (using lm) ---
# Model predicting post-treatment depression
depress_mod_ols <- lm(depress_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                        depress_b, 
                      data = eaet_data)

# Display results
depress_mod_summary <- jtools::summ(depress_mod_ols, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 7.254, p = 0.000
## R² = 0.427
## Adj. R² = 0.368 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                1.929   -4.689   8.548    0.590   0.559
## PCS_bT_c                  -0.006   -0.182   0.171   -0.065   0.949
## PCL_bT_c                  -0.018   -0.139   0.103   -0.304   0.763
## depress_b                  0.659    0.352   0.966    4.341   0.000
## PCS_bT_c:PCL_bT_c         -0.002   -0.011   0.006   -0.590   0.559
## ------------------------------------------------------------------
# Interaction plot
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  modx.labels = c("Low PTSD (-1 SD)", 
                  "Mean PTSD", 
                  "High PTSD (+1 SD)"),
  x.label = "Baseline Pain Catastrophizing (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "PTSD Symptoms"
) + 
  theme_minimal() +
  ggtitle("Moderation: PTSD × Catastrophizing → Depression")

print(depress_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ols, 
  pred = PCS_bT_c, 
  modx = PCL_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCS_bT_c when PCL_bT_c = -19.6773689 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.12     0.34   0.74
## 
## Slope of PCS_bT_c when PCL_bT_c =  -0.9755245 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.00   0.09    -0.04   0.97
## 
## Slope of PCS_bT_c when PCL_bT_c =  17.7263200 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.05   0.11    -0.45   0.66
# ===================================================================
# ADDITIONAL PRIORITY MODERATION ANALYSES
# ===================================================================

# Prepare all centered variables
eaet_data <- eaet_data %>%
  mutate(
    # Emotional processing subscales
    EAC_bEX_c = scale(EAC_bEX, scale = FALSE),      # Expression
    EAC_bEP_c = scale(EAC_bEP, scale = FALSE),      # Processing
    
    # Alternative coping styles
    Coping_bDA_c = scale(Coping_bDA, scale = FALSE),   # Distraction/Avoidance
    Coping_bRPS_c = scale(Coping_bRPS, scale = FALSE), # Reappraisal
    Coping_bCat_c = scale(Coping_bCat, scale = FALSE), # Catastrophizing coping
    
    # Emotional approach to pain
    SOPA_bEmot_c = scale(SOPA_bEmot, scale = FALSE)
  )
# ===================================================================
# PRIORITY 1: EMOTIONAL EXPRESSION × ATTENDANCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline emotional expression on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    EAC_bEX_c = scale(EAC_bEX, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    EX_attend = EAC_bEX_c * attend_c
  )

# Model predicting post-treatment pain severity
pain_mod_ex_attend <- lm(meanpain_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                          meanpain_b, 
                        data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ex_attend, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.610, p = 0.003
## R² = 0.262
## Adj. R² = 0.205 
## 
## Standard errors: OLS
## --------------------------------------------------------------------
##                              Est.     2.5%    97.5%   t val.       p
## ------------------------ -------- -------- -------- -------- -------
## (Intercept)                 2.022    0.509    3.535    2.681   0.010
## EAC_bEX_c                   0.029   -0.161    0.220    0.310   0.758
## attend_c                   -0.300   -0.493   -0.106   -3.107   0.003
## meanpain_b                  0.329    0.080    0.578    2.651   0.011
## EAC_bEX_c:attend_c         -0.046   -0.127    0.035   -1.146   0.257
## --------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Expression → Pain Severity")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.12   0.14     0.83   0.41
## 
## Slope of EAC_bEX_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.00   0.09     0.03   0.97
## 
## Slope of EAC_bEX_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.11   0.13    -0.88   0.38
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → PAIN INTERFERENCE ===
painint_mod_ex_attend <- lm(painint_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                             painint_b, 
                           data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_ex_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 7.188, p = 0.000
## R² = 0.356
## Adj. R² = 0.307 
## 
## Standard errors: OLS
## --------------------------------------------------------------------
##                              Est.     2.5%    97.5%   t val.       p
## ------------------------ -------- -------- -------- -------- -------
## (Intercept)                 6.664   -0.197   13.525    1.949   0.057
## EAC_bEX_c                  -0.198   -0.964    0.569   -0.518   0.607
## attend_c                   -0.900   -1.692   -0.107   -2.278   0.027
## painint_b                   0.591    0.348    0.834    4.874   0.000
## EAC_bEX_c:attend_c         -0.148   -0.477    0.181   -0.901   0.372
## --------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Expression → Pain Interference")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.08   0.58     0.14   0.89
## 
## Slope of EAC_bEX_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.28   0.36    -0.79   0.43
## 
## Slope of EAC_bEX_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.65   0.50    -1.30   0.20
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → ANXIETY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → ANXIETY ===
anxiety_mod_ex_attend <- lm(anxiety_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                             anxiety_b, 
                           data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_ex_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 7.995, p = 0.000
## R² = 0.381
## Adj. R² = 0.333 
## 
## Standard errors: OLS
## --------------------------------------------------------------------
##                              Est.     2.5%    97.5%   t val.       p
## ------------------------ -------- -------- -------- -------- -------
## (Intercept)                 6.530    2.682   10.378    3.405   0.001
## EAC_bEX_c                  -0.020   -0.513    0.474   -0.080   0.936
## attend_c                   -0.438   -0.963    0.086   -1.676   0.100
## anxiety_b                   0.516    0.321    0.710    5.318   0.000
## EAC_bEX_c:attend_c         -0.156   -0.371    0.060   -1.452   0.153
## --------------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Expression → Anxiety")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.28   0.37     0.74   0.46
## 
## Slope of EAC_bEX_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.11   0.23    -0.48   0.64
## 
## Slope of EAC_bEX_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.49   0.33    -1.51   0.14
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → DEPRESSION ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL EXPRESSION → DEPRESSION ===
depress_mod_ex_attend <- lm(depress_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                             depress_b, 
                           data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_ex_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 11.375, p = 0.000
## R² = 0.467
## Adj. R² = 0.426 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                              Est.     2.5%   97.5%   t val.       p
## ------------------------ -------- -------- ------- -------- -------
## (Intercept)                 4.449    0.221   8.677    2.112   0.040
## EAC_bEX_c                  -0.172   -0.729   0.385   -0.619   0.538
## attend_c                   -0.482   -1.061   0.098   -1.669   0.101
## depress_b                   0.565    0.369   0.761    5.774   0.000
## EAC_bEX_c:attend_c         -0.232   -0.470   0.007   -1.951   0.056
## -------------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Expression → Depression")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ex_attend, 
  pred = EAC_bEX_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is INSIDE the interval [1.62, 55.93], the slope of EAC_bEX_c
## is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.27   0.42     0.64   0.53
## 
## Slope of EAC_bEX_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.31   0.26    -1.18   0.25
## 
## Slope of EAC_bEX_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.88   0.36    -2.41   0.02
# ===================================================================
# PRIORITY 1: EMOTIONAL PROCESSING × ATTENDANCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline emotional processing on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    EAC_bEP_c = scale(EAC_bEP, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    EP_attend = EAC_bEP_c * attend_c
  )

# Model predicting post-treatment pain severity
pain_mod_ep_attend <- lm(meanpain_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                          meanpain_b, 
                        data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ep_attend, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 5.985, p = 0.000
## R² = 0.315
## Adj. R² = 0.263 
## 
## Standard errors: OLS
## --------------------------------------------------------------------
##                              Est.     2.5%    97.5%   t val.       p
## ------------------------ -------- -------- -------- -------- -------
## (Intercept)                 2.416    0.965    3.866    3.342   0.002
## EAC_bEP_c                   0.152   -0.022    0.327    1.750   0.086
## attend_c                   -0.355   -0.544   -0.166   -3.773   0.000
## meanpain_b                  0.277    0.044    0.511    2.388   0.021
## EAC_bEP_c:attend_c         -0.091   -0.172   -0.010   -2.258   0.028
## --------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Processing (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Processing → Pain Severity")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is OUTSIDE the interval [-0.55, 7.68], the slope of EAC_bEP_c
## is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEP_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.32   0.14     2.26   0.03
## 
## Slope of EAC_bEP_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.10   0.08     1.30   0.20
## 
## Slope of EAC_bEP_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.12   0.10    -1.19   0.24
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → PAIN INTERFERENCE ===
painint_mod_ep_attend <- lm(painint_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                             painint_b, 
                           data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_ep_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 6.766, p = 0.000
## R² = 0.342
## Adj. R² = 0.292 
## 
## Standard errors: OLS
## --------------------------------------------------------------------
##                              Est.     2.5%    97.5%   t val.       p
## ------------------------ -------- -------- -------- -------- -------
## (Intercept)                 7.326    0.080   14.573    2.029   0.048
## EAC_bEP_c                   0.278   -0.466    1.022    0.750   0.457
## attend_c                   -1.044   -1.854   -0.234   -2.587   0.013
## painint_b                   0.565    0.312    0.817    4.493   0.000
## EAC_bEP_c:attend_c         -0.082   -0.440    0.275   -0.461   0.647
## --------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Processing (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Processing → Pain Interference")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEP_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.43   0.62     0.70   0.49
## 
## Slope of EAC_bEP_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.23   0.33     0.71   0.48
## 
## Slope of EAC_bEP_c when attend_c =  3.045536 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.46     0.06   0.95
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → ANXIETY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → ANXIETY ===
anxiety_mod_ep_attend <- lm(anxiety_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                             anxiety_b, 
                           data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_ep_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 8.226, p = 0.000
## R² = 0.388
## Adj. R² = 0.340 
## 
## Standard errors: OLS
## --------------------------------------------------------------------
##                              Est.     2.5%    97.5%   t val.       p
## ------------------------ -------- -------- -------- -------- -------
## (Intercept)                 6.541    2.533   10.550    3.274   0.002
## EAC_bEP_c                   0.419   -0.058    0.897    1.762   0.084
## attend_c                   -0.601   -1.129   -0.073   -2.284   0.026
## anxiety_b                   0.517    0.317    0.717    5.187   0.000
## EAC_bEP_c:attend_c         -0.124   -0.349    0.101   -1.102   0.275
## --------------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Processing (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Processing → Anxiety")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEP_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.65   0.39     1.67   0.10
## 
## Slope of EAC_bEP_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.35   0.21     1.64   0.11
## 
## Slope of EAC_bEP_c when attend_c =  3.045536 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.30     0.14   0.89
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → DEPRESSION ===\n")
## 
## 
## === MODERATION: ATTENDANCE × EMOTIONAL PROCESSING → DEPRESSION ===
depress_mod_ep_attend <- lm(depress_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                             depress_b, 
                           data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_ep_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 9.437, p = 0.000
## R² = 0.421
## Adj. R² = 0.376 
## 
## Standard errors: OLS
## --------------------------------------------------------------------
##                              Est.     2.5%    97.5%   t val.       p
## ------------------------ -------- -------- -------- -------- -------
## (Intercept)                 3.962   -0.520    8.444    1.774   0.082
## EAC_bEP_c                   0.264   -0.293    0.821    0.950   0.346
## attend_c                   -0.673   -1.283   -0.063   -2.214   0.031
## depress_b                   0.585    0.379    0.792    5.686   0.000
## EAC_bEP_c:attend_c         -0.133   -0.390    0.125   -1.034   0.306
## --------------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Processing (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Emotional Processing → Depression")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ep_attend, 
  pred = EAC_bEP_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEP_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.51   0.45     1.14   0.26
## 
## Slope of EAC_bEP_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.19   0.25     0.75   0.45
## 
## Slope of EAC_bEP_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.14   0.35    -0.41   0.69
# ===================================================================
# PRIORITY 1: EMOTIONAL EXPRESSION × WORKING ALLIANCE
# ===================================================================
# Research Question: Does working alliance moderate the effect of 
# baseline emotional expression on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    EAC_bEX_c = scale(EAC_bEX, scale = FALSE),
    wai_c = scale(wai, scale = FALSE),
    EX_wai = EAC_bEX_c * wai_c
  )

# Model predicting post-treatment pain severity
pain_mod_ex_wai <- lm(meanpain_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                       meanpain_b, 
                     data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_ex_wai, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.573, p = 0.003
## R² = 0.260
## Adj. R² = 0.203 
## 
## Standard errors: OLS
## -----------------------------------------------------------------
##                           Est.     2.5%    97.5%   t val.       p
## --------------------- -------- -------- -------- -------- -------
## (Intercept)              1.572    0.058    3.087    2.083   0.042
## EAC_bEX_c               -0.062   -0.240    0.116   -0.699   0.488
## wai_c                   -0.049   -0.081   -0.017   -3.083   0.003
## meanpain_b               0.374    0.124    0.625    2.999   0.004
## EAC_bEX_c:wai_c         -0.007   -0.017    0.002   -1.502   0.139
## -----------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Emotional Expression → Pain Severity")

print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.05   0.11     0.45   0.65
## 
## Slope of EAC_bEX_c when wai_c =  2.991759e-15 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.06   0.09    -0.70   0.49
## 
## Slope of EAC_bEX_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.17   0.12    -1.39   0.17
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → PAIN INTERFERENCE ===
painint_mod_ex_wai <- lm(painint_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                          painint_b, 
                        data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_ex_wai, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 11.101, p = 0.000
## R² = 0.461
## Adj. R² = 0.419 
## 
## Standard errors: OLS
## -----------------------------------------------------------------
##                           Est.     2.5%    97.5%   t val.       p
## --------------------- -------- -------- -------- -------- -------
## (Intercept)              4.144   -2.300   10.588    1.290   0.203
## EAC_bEX_c               -0.503   -1.148    0.143   -1.563   0.124
## wai_c                   -0.226   -0.349   -0.103   -3.693   0.001
## painint_b                0.665    0.436    0.894    5.838   0.000
## EAC_bEX_c:wai_c         -0.039   -0.076   -0.003   -2.144   0.037
## -----------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Emotional Expression → Pain Interference")

print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## When wai_c is OUTSIDE the interval [-180.52, 4.79], the slope of EAC_bEX_c
## is p < .05.
## 
## Note: The range of observed values of wai_c is [-44.89, 20.11]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.08   0.39     0.20   0.85
## 
## Slope of EAC_bEX_c when wai_c =  2.991759e-15 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.50   0.32    -1.56   0.12
## 
## Slope of EAC_bEX_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -1.08   0.45    -2.43   0.02
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → ANXIETY ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → ANXIETY ===
anxiety_mod_ex_wai <- lm(anxiety_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                          anxiety_b, 
                        data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_ex_wai, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 9.028, p = 0.000
## R² = 0.410
## Adj. R² = 0.364 
## 
## Standard errors: OLS
## -----------------------------------------------------------------
##                           Est.     2.5%    97.5%   t val.       p
## --------------------- -------- -------- -------- -------- -------
## (Intercept)              5.579    1.672    9.486    2.866   0.006
## EAC_bEX_c               -0.229   -0.675    0.216   -1.032   0.307
## wai_c                   -0.101   -0.188   -0.014   -2.339   0.023
## anxiety_b                0.548    0.352    0.744    5.605   0.000
## EAC_bEX_c:wai_c         -0.022   -0.047    0.004   -1.695   0.096
## -----------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Emotional Expression → Anxiety")

print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.09   0.27     0.34   0.73
## 
## Slope of EAC_bEX_c when wai_c =  2.991759e-15 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.23   0.22    -1.03   0.31
## 
## Slope of EAC_bEX_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.55   0.31    -1.77   0.08
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → DEPRESSION ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × EMOTIONAL EXPRESSION → DEPRESSION ===
depress_mod_ex_wai <- lm(depress_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                          depress_b, 
                        data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_ex_wai, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 13.124, p = 0.000
## R² = 0.502
## Adj. R² = 0.464 
## 
## Standard errors: OLS
## -----------------------------------------------------------------
##                           Est.     2.5%    97.5%   t val.       p
## --------------------- -------- -------- -------- -------- -------
## (Intercept)              3.457   -0.711    7.624    1.664   0.102
## EAC_bEX_c               -0.468   -0.964    0.029   -1.891   0.064
## wai_c                   -0.113   -0.206   -0.019   -2.424   0.019
## depress_b                0.594    0.402    0.786    6.202   0.000
## EAC_bEX_c:wai_c         -0.034   -0.063   -0.006   -2.460   0.017
## -----------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline Emotional Expression (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × Emotional Expression → Depression")

print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_ex_wai, 
  pred = EAC_bEX_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## When wai_c is OUTSIDE the interval [-73.52, 0.95], the slope of EAC_bEX_c
## is p < .05.
## 
## Note: The range of observed values of wai_c is [-44.89, 20.11]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of EAC_bEX_c when wai_c = -1.484646e+01 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.04   0.30     0.14   0.89
## 
## Slope of EAC_bEX_c when wai_c =  2.991759e-15 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.47   0.25    -1.89   0.06
## 
## Slope of EAC_bEX_c when wai_c =  1.484646e+01 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.98   0.34    -2.86   0.01
# ===================================================================
# PRIORITY 2: REAPPRAISAL COPING × ATTENDANCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline reappraisal/positive thinking on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × REAPPRAISAL → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × REAPPRAISAL → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    Coping_bRPS_c = scale(Coping_bRPS, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    RPS_attend = Coping_bRPS_c * attend_c
  )

# Model predicting post-treatment pain severity
pain_mod_rps_attend <- lm(meanpain_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                           meanpain_b, 
                         data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_rps_attend, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.231, p = 0.005
## R² = 0.246
## Adj. R² = 0.188 
## 
## Standard errors: OLS
## ------------------------------------------------------------------------
##                                  Est.     2.5%    97.5%   t val.       p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept)                     1.984    0.438    3.530    2.575   0.013
## Coping_bRPS_c                  -0.003   -0.190    0.183   -0.036   0.971
## attend_c                       -0.307   -0.500   -0.113   -3.177   0.003
## meanpain_b                      0.329    0.074    0.583    2.594   0.012
## Coping_bRPS_c:attend_c         -0.014   -0.088    0.060   -0.380   0.705
## ------------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Reappraisal Coping (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Reappraisal → Pain Severity")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bRPS_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.13     0.17   0.86
## 
## Slope of Coping_bRPS_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.01   0.09    -0.13   0.90
## 
## Slope of Coping_bRPS_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.05   0.12    -0.39   0.70
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × REAPPRAISAL → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: ATTENDANCE × REAPPRAISAL → PAIN INTERFERENCE ===
painint_mod_rps_attend <- lm(painint_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                              painint_b, 
                            data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_rps_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 8.578, p = 0.000
## R² = 0.398
## Adj. R² = 0.351 
## 
## Standard errors: OLS
## ------------------------------------------------------------------------
##                                  Est.     2.5%    97.5%   t val.       p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept)                     8.698    2.022   15.374    2.614   0.012
## Coping_bRPS_c                   0.772    0.057    1.487    2.166   0.035
## attend_c                       -1.041   -1.801   -0.282   -2.750   0.008
## painint_b                       0.506    0.267    0.745    4.257   0.000
## Coping_bRPS_c:attend_c         -0.000   -0.287    0.286   -0.002   0.998
## ------------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Reappraisal Coping (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Reappraisal → Pain Interference")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is INSIDE the interval [-0.46, 2.25], the slope of
## Coping_bRPS_c is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bRPS_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.77   0.52     1.49   0.14
## 
## Slope of Coping_bRPS_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.77   0.34     2.30   0.03
## 
## Slope of Coping_bRPS_c when attend_c =  3.045536 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.77   0.45     1.71   0.09
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × REAPPRAISAL → ANXIETY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × REAPPRAISAL → ANXIETY ===
anxiety_mod_rps_attend <- lm(anxiety_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                              anxiety_b, 
                            data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_rps_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 8.458, p = 0.000
## R² = 0.394
## Adj. R² = 0.348 
## 
## Standard errors: OLS
## ------------------------------------------------------------------------
##                                  Est.     2.5%    97.5%   t val.       p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept)                     6.080    2.075   10.084    3.047   0.004
## Coping_bRPS_c                   0.136   -0.352    0.623    0.559   0.578
## attend_c                       -0.522   -1.033   -0.010   -2.046   0.046
## anxiety_b                       0.538    0.333    0.743    5.263   0.000
## Coping_bRPS_c:attend_c         -0.187   -0.381    0.007   -1.937   0.058
## ------------------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Reappraisal Coping (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Reappraisal → Anxiety")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bRPS_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.49   0.35     1.40   0.17
## 
## Slope of Coping_bRPS_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.03   0.23     0.12   0.90
## 
## Slope of Coping_bRPS_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.43   0.31    -1.39   0.17
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × REAPPRAISAL → DEPRESSION ===\n")
## 
## 
## === MODERATION: ATTENDANCE × REAPPRAISAL → DEPRESSION ===
depress_mod_rps_attend <- lm(depress_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                              depress_b, 
                            data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_rps_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 10.511, p = 0.000
## R² = 0.447
## Adj. R² = 0.405 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                  Est.     2.5%   97.5%   t val.       p
## ---------------------------- -------- -------- ------- -------- -------
## (Intercept)                     2.935   -1.361   7.231    1.371   0.176
## Coping_bRPS_c                  -0.287   -0.828   0.253   -1.066   0.291
## attend_c                       -0.574   -1.154   0.006   -1.986   0.052
## depress_b                       0.631    0.431   0.832    6.309   0.000
## Coping_bRPS_c:attend_c         -0.127   -0.347   0.093   -1.163   0.250
## -----------------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Reappraisal Coping (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Reappraisal → Depression")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_rps_attend, 
  pred = Coping_bRPS_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bRPS_c when attend_c = -1.892425 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.05   0.39    -0.12   0.91
## 
## Slope of Coping_bRPS_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.36   0.25    -1.42   0.16
## 
## Slope of Coping_bRPS_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.68   0.35    -1.95   0.06
# ===================================================================
# PRIORITY 2: CATASTROPHIZING COPING × ATTENDANCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline catastrophizing coping on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × CATASTROPHIZING COPING → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × CATASTROPHIZING COPING → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    Coping_bCat_c = scale(Coping_bCat, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    Cat_attend = Coping_bCat_c * attend_c
  )

# Model predicting post-treatment pain severity
pain_mod_cat_attend <- lm(meanpain_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                           meanpain_b, 
                         data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_cat_attend, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.992, p = 0.002
## R² = 0.277
## Adj. R² = 0.222 
## 
## Standard errors: OLS
## ------------------------------------------------------------------------
##                                  Est.     2.5%    97.5%   t val.       p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept)                     2.271    0.499    4.043    2.572   0.013
## Coping_bCat_c                   0.080   -0.100    0.260    0.895   0.375
## attend_c                       -0.369   -0.579   -0.159   -3.522   0.001
## meanpain_b                      0.288   -0.001    0.577    1.996   0.051
## Coping_bCat_c:attend_c         -0.043   -0.109    0.022   -1.328   0.190
## ------------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Catastrophizing Coping (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing Coping → Pain Severity")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bCat_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.16   0.11     1.47   0.15
## 
## Slope of Coping_bCat_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.06   0.09     0.61   0.55
## 
## Slope of Coping_bCat_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.05   0.13    -0.39   0.70
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × CATASTROPHIZING COPING → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: ATTENDANCE × CATASTROPHIZING COPING → PAIN INTERFERENCE ===
painint_mod_cat_attend <- lm(painint_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                              painint_b, 
                            data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_cat_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 7.045, p = 0.000
## R² = 0.351
## Adj. R² = 0.302 
## 
## Standard errors: OLS
## ------------------------------------------------------------------------
##                                  Est.     2.5%    97.5%   t val.       p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept)                     6.687   -1.458   14.831    1.648   0.105
## Coping_bCat_c                   0.040   -0.707    0.787    0.107   0.915
## attend_c                       -1.195   -2.069   -0.321   -2.743   0.008
## painint_b                       0.587    0.300    0.875    4.098   0.000
## Coping_bCat_c:attend_c         -0.151   -0.416    0.114   -1.144   0.258
## ------------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Catastrophizing Coping (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing Coping → Pain Interference")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bCat_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.33   0.47     0.69   0.49
## 
## Slope of Coping_bCat_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.05   0.37    -0.13   0.90
## 
## Slope of Coping_bCat_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.42   0.51    -0.82   0.42
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × CATASTROPHIZING COPING → ANXIETY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × CATASTROPHIZING COPING → ANXIETY ===
anxiety_mod_cat_attend <- lm(anxiety_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                              anxiety_b, 
                            data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_cat_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 11.825, p = 0.000
## R² = 0.476
## Adj. R² = 0.436 
## 
## Standard errors: OLS
## ------------------------------------------------------------------------
##                                  Est.     2.5%    97.5%   t val.       p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept)                     6.892    2.919   10.866    3.481   0.001
## Coping_bCat_c                   0.156   -0.263    0.574    0.747   0.458
## attend_c                       -0.880   -1.405   -0.355   -3.365   0.001
## anxiety_b                       0.501    0.301    0.700    5.039   0.000
## Coping_bCat_c:attend_c         -0.281   -0.441   -0.121   -3.531   0.001
## ------------------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Catastrophizing Coping (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing Coping → Anxiety")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is OUTSIDE the interval [-1.16, 2.42], the slope of
## Coping_bCat_c is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bCat_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.69   0.28     2.50   0.02
## 
## Slope of Coping_bCat_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.01   0.21    -0.03   0.98
## 
## Slope of Coping_bCat_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.70   0.29    -2.38   0.02
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × CATASTROPHIZING COPING → DEPRESSION ===\n")
## 
## 
## === MODERATION: ATTENDANCE × CATASTROPHIZING COPING → DEPRESSION ===
depress_mod_cat_attend <- lm(depress_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                              depress_b, 
                            data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_cat_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 11.659, p = 0.000
## R² = 0.473
## Adj. R² = 0.432 
## 
## Standard errors: OLS
## ------------------------------------------------------------------------
##                                  Est.     2.5%    97.5%   t val.       p
## ---------------------------- -------- -------- -------- -------- -------
## (Intercept)                     3.487   -1.737    8.710    1.339   0.186
## Coping_bCat_c                  -0.026   -0.593    0.541   -0.092   0.927
## attend_c                       -0.935   -1.559   -0.312   -3.010   0.004
## depress_b                       0.606    0.365    0.847    5.049   0.000
## Coping_bCat_c:attend_c         -0.240   -0.431   -0.048   -2.515   0.015
## ------------------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Catastrophizing Coping (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Catastrophizing Coping → Depression")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_cat_attend, 
  pred = Coping_bCat_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is OUTSIDE the interval [-5.24, 2.92], the slope of
## Coping_bCat_c is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bCat_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.43   0.36     1.19   0.24
## 
## Slope of Coping_bCat_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.16   0.28    -0.59   0.56
## 
## Slope of Coping_bCat_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.76   0.37    -2.04   0.05
# ===================================================================
# PRIORITY 3: PTSD × ATTENDANCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline PTSD symptoms on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × PTSD → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × PTSD → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    PCL_bT_c = scale(PCL_bT, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    PCL_attend = PCL_bT_c * attend_c
  )

# Model predicting post-treatment pain severity
pain_mod_pcl_attend <- lm(meanpain_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                           meanpain_b, 
                         data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_pcl_attend, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 3.305, p = 0.020
## R² = 0.253
## Adj. R² = 0.177 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                1.660   -0.170   3.490    1.835   0.074
## PCL_bT_c                   0.012   -0.019   0.043    0.808   0.424
## attend_c                  -0.207   -0.431   0.016   -1.878   0.068
## meanpain_b                 0.316    0.029   0.604    2.225   0.032
## PCL_bT_c:attend_c          0.002   -0.010   0.014    0.265   0.792
## ------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × PTSD → Pain Severity")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.02     0.43   0.67
## 
## Slope of PCL_bT_c when attend_c =  0.5909091 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.01     0.91   0.37
## 
## Slope of PCL_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.02     0.85   0.40
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × PTSD → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: ATTENDANCE × PTSD → PAIN INTERFERENCE ===
painint_mod_pcl_attend <- lm(painint_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                              painint_b, 
                            data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_pcl_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 6.139, p = 0.001
## R² = 0.386
## Adj. R² = 0.323 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                8.169   -1.289   17.628    1.747   0.088
## PCL_bT_c                   0.084   -0.054    0.221    1.226   0.228
## attend_c                  -0.531   -1.548    0.486   -1.056   0.297
## painint_b                  0.501    0.166    0.836    3.025   0.004
## PCL_bT_c:attend_c          0.017   -0.037    0.071    0.636   0.528
## -------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × PTSD → Pain Interference")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.05   0.09     0.54   0.59
## 
## Slope of PCL_bT_c when attend_c =  0.5909091 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.09   0.07     1.40   0.17
## 
## Slope of PCL_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.14   0.10     1.40   0.17
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × PTSD → ANXIETY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × PTSD → ANXIETY ===
anxiety_mod_pcl_attend <- lm(anxiety_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                              anxiety_b, 
                            data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_pcl_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 8.486, p = 0.000
## R² = 0.465
## Adj. R² = 0.410 
## 
## Standard errors: OLS
## -------------------------------------------------------------------
##                             Est.     2.5%    97.5%   t val.       p
## ----------------------- -------- -------- -------- -------- -------
## (Intercept)                5.031   -0.720   10.782    1.769   0.085
## PCL_bT_c                   0.020   -0.083    0.122    0.389   0.699
## attend_c                  -0.697   -1.282   -0.112   -2.410   0.021
## anxiety_b                  0.561    0.273    0.850    3.933   0.000
## PCL_bT_c:attend_c         -0.019   -0.050    0.012   -1.236   0.224
## -------------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × PTSD → Anxiety")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.06   0.07     0.86   0.39
## 
## Slope of PCL_bT_c when attend_c =  0.5909091 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.05     0.17   0.86
## 
## Slope of PCL_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.04   0.06    -0.68   0.50
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × PTSD → DEPRESSION ===\n")
## 
## 
## === MODERATION: ATTENDANCE × PTSD → DEPRESSION ===
depress_mod_pcl_attend <- lm(depress_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                              depress_b, 
                            data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_pcl_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 8.620, p = 0.000
## R² = 0.469
## Adj. R² = 0.415 
## 
## Standard errors: OLS
## ------------------------------------------------------------------
##                             Est.     2.5%   97.5%   t val.       p
## ----------------------- -------- -------- ------- -------- -------
## (Intercept)                2.282   -3.546   8.111    0.792   0.433
## PCL_bT_c                   0.002   -0.110   0.115    0.041   0.967
## attend_c                  -0.622   -1.354   0.110   -1.719   0.094
## depress_b                  0.653    0.382   0.924    4.871   0.000
## PCL_bT_c:attend_c         -0.028   -0.067   0.011   -1.444   0.157
## ------------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × PTSD → Depression")
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_pcl_attend, 
  pred = PCL_bT_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.12273609754745 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when attend_c = -1.9409179 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.06   0.08     0.74   0.46
## 
## Slope of PCL_bT_c when attend_c =  0.5909091 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.01   0.05    -0.27   0.79
## 
## Slope of PCL_bT_c when attend_c =  3.1227361 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.09   0.07    -1.27   0.21
# ===================================================================
# PRIORITY 3: PTSD × WORKING ALLIANCE
# ===================================================================
# Research Question: Does working alliance moderate the effect of 
# baseline PTSD symptoms on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × PTSD → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × PTSD → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    PCL_bT_c = scale(PCL_bT, scale = FALSE),
    wai_c = scale(wai, scale = FALSE),
    PCL_wai = PCL_bT_c * wai_c
  )

# Model predicting post-treatment pain severity
pain_mod_pcl_wai <- lm(meanpain_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                        meanpain_b, 
                      data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_pcl_wai, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 3.594, p = 0.014
## R² = 0.269
## Adj. R² = 0.194 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             1.887    0.048    3.726    2.075   0.045
## PCL_bT_c                0.020   -0.010    0.050    1.347   0.186
## wai_c                  -0.045   -0.083   -0.007   -2.424   0.020
## meanpain_b              0.272   -0.014    0.558    1.927   0.061
## PCL_bT_c:wai_c         -0.000   -0.002    0.002   -0.196   0.846
## ----------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × PTSD → Pain Severity")

print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.02     1.13   0.27
## 
## Slope of PCL_bT_c when wai_c =   1.105263 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.01     1.33   0.19
## 
## Slope of PCL_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.02   0.02     0.84   0.41
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × PTSD → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × PTSD → PAIN INTERFERENCE ===
painint_mod_pcl_wai <- lm(painint_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                           painint_b, 
                         data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_pcl_wai, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 7.986, p = 0.000
## R² = 0.450
## Adj. R² = 0.394 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             7.781   -0.934   16.496    1.806   0.079
## PCL_bT_c                0.121   -0.009    0.252    1.881   0.068
## wai_c                  -0.215   -0.371   -0.059   -2.789   0.008
## painint_b               0.525    0.226    0.825    3.551   0.001
## PCL_bT_c:wai_c         -0.003   -0.012    0.005   -0.842   0.405
## ----------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × PTSD → Pain Interference")

print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## When wai_c is INSIDE the interval [-7.35, -5.71], the slope of PCL_bT_c is
## p < .05.
## 
## Note: The range of observed values of wai_c is [-30.89, 20.11]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.17   0.09     1.94   0.06
## 
## Slope of PCL_bT_c when wai_c =   1.105263 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.12   0.06     1.82   0.08
## 
## Slope of PCL_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.07   0.09     0.80   0.43
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × PTSD → ANXIETY ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × PTSD → ANXIETY ===
anxiety_mod_pcl_wai <- lm(anxiety_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                           anxiety_b, 
                         data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_pcl_wai, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 9.837, p = 0.000
## R² = 0.502
## Adj. R² = 0.451 
## 
## Standard errors: OLS
## ----------------------------------------------------------------
##                          Est.     2.5%    97.5%   t val.       p
## -------------------- -------- -------- -------- -------- -------
## (Intercept)             4.789   -0.959   10.537    1.685   0.100
## PCL_bT_c                0.014   -0.081    0.110    0.302   0.764
## wai_c                  -0.128   -0.225   -0.031   -2.674   0.011
## anxiety_b               0.571    0.283    0.858    4.017   0.000
## PCL_bT_c:wai_c         -0.005   -0.010    0.000   -1.976   0.055
## ----------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × PTSD → Anxiety")

print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.08   0.06     1.30   0.20
## 
## Slope of PCL_bT_c when wai_c =   1.105263 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.01   0.05     0.19   0.85
## 
## Slope of PCL_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.06   0.06    -1.09   0.28
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: WORKING ALLIANCE × PTSD → DEPRESSION ===\n")
## 
## 
## === MODERATION: WORKING ALLIANCE × PTSD → DEPRESSION ===
depress_mod_pcl_wai <- lm(depress_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                           depress_b, 
                         data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_pcl_wai, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 44 (22 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,39) = 8.677, p = 0.000
## R² = 0.471
## Adj. R² = 0.417 
## 
## Standard errors: OLS
## ---------------------------------------------------------------
##                          Est.     2.5%   97.5%   t val.       p
## -------------------- -------- -------- ------- -------- -------
## (Intercept)             1.536   -4.301   7.373    0.532   0.598
## PCL_bT_c               -0.010   -0.118   0.097   -0.193   0.848
## wai_c                  -0.115   -0.238   0.009   -1.874   0.068
## depress_b               0.670    0.399   0.941    5.001   0.000
## PCL_bT_c:wai_c         -0.000   -0.007   0.006   -0.102   0.919
## ---------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  modx.labels = c("Low Alliance (-1 SD)", 
                  "Mean Alliance", 
                  "High Alliance (+1 SD)"),
  x.label = "Baseline PTSD Symptoms (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Working Alliance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Working Alliance × PTSD → Depression")

print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_pcl_wai, 
  pred = PCL_bT_c, 
  modx = wai_c,
  johnson_neyman = TRUE
)
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of PCL_bT_c when wai_c = -13.051665 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.01   0.07    -0.09   0.93
## 
## Slope of PCL_bT_c when wai_c =   1.105263 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.01   0.05    -0.20   0.84
## 
## Slope of PCL_bT_c when wai_c =  15.262191 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.02   0.07    -0.22   0.83
# ===================================================================
# PRIORITY 2: DISTRACTION/AVOIDANCE COPING × ATTENDANCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline distraction/avoidance coping on post-treatment outcomes?
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    Coping_bDA_c = scale(Coping_bDA, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    DA_attend = Coping_bDA_c * attend_c
  )

# Model predicting post-treatment pain severity
pain_mod_da_attend <- lm(meanpain_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                          meanpain_b, 
                        data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_da_attend, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.351, p = 0.004
## R² = 0.251
## Adj. R² = 0.193 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                 Est.     2.5%    97.5%   t val.       p
## --------------------------- -------- -------- -------- -------- -------
## (Intercept)                    1.838    0.273    3.403    2.357   0.022
## Coping_bDA_c                  -0.052   -0.200    0.095   -0.709   0.482
## attend_c                      -0.307   -0.499   -0.115   -3.215   0.002
## meanpain_b                     0.350    0.094    0.606    2.746   0.008
## Coping_bDA_c:attend_c          0.009   -0.047    0.066    0.329   0.743
## -----------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Distraction/Avoidance Coping (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Distraction/Avoidance → Pain Severity")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bDA_c when attend_c = -1.892425 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.07   0.10    -0.71   0.48
## 
## Slope of Coping_bDA_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.05   0.07    -0.65   0.52
## 
## Slope of Coping_bDA_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.02   0.10    -0.23   0.82
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → PAIN INTERFERENCE ===
painint_mod_da_attend <- lm(painint_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                             painint_b, 
                           data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_da_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 7.288, p = 0.000
## R² = 0.359
## Adj. R² = 0.310 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                 Est.     2.5%    97.5%   t val.       p
## --------------------------- -------- -------- -------- -------- -------
## (Intercept)                    8.005    1.096   14.915    2.325   0.024
## Coping_bDA_c                   0.399   -0.177    0.976    1.389   0.171
## attend_c                      -0.961   -1.742   -0.181   -2.471   0.017
## painint_b                      0.536    0.290    0.781    4.376   0.000
## Coping_bDA_c:attend_c         -0.010   -0.238    0.218   -0.088   0.930
## -----------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Distraction/Avoidance Coping (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Distraction/Avoidance → Pain Interference")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bDA_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.42   0.39     1.08   0.29
## 
## Slope of Coping_bDA_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.39   0.28     1.39   0.17
## 
## Slope of Coping_bDA_c when attend_c =  3.045536 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.37   0.41     0.90   0.37
# ===================================================================
# ANXIETY
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → ANXIETY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → ANXIETY ===
anxiety_mod_da_attend <- lm(anxiety_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                             anxiety_b, 
                           data = eaet_data)

anxiety_mod_summary <- jtools::summ(anxiety_mod_da_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(anxiety_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: anxiety_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 7.379, p = 0.000
## R² = 0.362
## Adj. R² = 0.313 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                 Est.     2.5%    97.5%   t val.       p
## --------------------------- -------- -------- -------- -------- -------
## (Intercept)                    5.993    1.979   10.008    2.996   0.004
## Coping_bDA_c                  -0.104   -0.488    0.281   -0.542   0.590
## attend_c                      -0.487   -1.010    0.036   -1.870   0.067
## anxiety_b                      0.533    0.330    0.737    5.265   0.000
## Coping_bDA_c:attend_c         -0.054   -0.206    0.099   -0.706   0.484
## -----------------------------------------------------------------------
anxiety_interact_plot <- interactions::interact_plot(
  anxiety_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Distraction/Avoidance Coping (centered)",
  y.label = "Post-Treatment Anxiety",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Distraction/Avoidance → Anxiety")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(anxiety_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_anxiety <- interactions::sim_slopes(
  anxiety_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_anxiety)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bDA_c when attend_c = -1.892425 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.00   0.26    -0.01   0.99
## 
## Slope of Coping_bDA_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.13   0.19    -0.71   0.48
## 
## Slope of Coping_bDA_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.27   0.27    -0.98   0.33
# ===================================================================
# DEPRESSION
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → DEPRESSION ===\n")
## 
## 
## === MODERATION: ATTENDANCE × DISTRACTION/AVOIDANCE → DEPRESSION ===
depress_mod_da_attend <- lm(depress_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                             depress_b, 
                           data = eaet_data)

depress_mod_summary <- jtools::summ(depress_mod_da_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(depress_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: depress_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 13.178, p = 0.000
## R² = 0.503
## Adj. R² = 0.465 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                 Est.     2.5%    97.5%   t val.       p
## --------------------------- -------- -------- -------- -------- -------
## (Intercept)                    3.575   -0.412    7.561    1.799   0.078
## Coping_bDA_c                  -0.616   -1.008   -0.223   -3.146   0.003
## attend_c                      -0.579   -1.125   -0.033   -2.128   0.038
## depress_b                      0.589    0.404    0.774    6.387   0.000
## Coping_bDA_c:attend_c          0.004   -0.156    0.164    0.049   0.961
## -----------------------------------------------------------------------
depress_interact_plot <- interactions::interact_plot(
  depress_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Distraction/Avoidance Coping (centered)",
  y.label = "Post-Treatment Depression",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × Distraction/Avoidance → Depression")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(depress_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_depress <- interactions::sim_slopes(
  depress_mod_da_attend, 
  pred = Coping_bDA_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_depress)
## JOHNSON-NEYMAN INTERVAL 
## 
## When attend_c is INSIDE the interval [-2.61, 3.34], the slope of
## Coping_bDA_c is p < .05.
## 
## Note: The range of observed values of attend_c is [-5.32, 2.68]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of Coping_bDA_c when attend_c = -1.892425 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.62   0.27    -2.32   0.02
## 
## Slope of Coping_bDA_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.61   0.19    -3.19   0.00
## 
## Slope of Coping_bDA_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.60   0.28    -2.14   0.04
# ===================================================================
# PRIORITY 4: EMOTIONAL APPROACH TO PAIN (SOPA) × ATTENDANCE
# ===================================================================
# Research Question: Does treatment attendance moderate the effect of 
# baseline emotional approach to pain on post-treatment PAIN outcomes?
# Note: SOPA is theoretically most relevant for pain-specific outcomes
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × SOPA → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: ATTENDANCE × SOPA → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    SOPA_bEmot_c = scale(SOPA_bEmot, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    SOPA_attend = SOPA_bEmot_c * attend_c
  )

# Model predicting post-treatment pain severity
pain_mod_sopa_attend <- lm(meanpain_p ~ SOPA_bEmot_c + attend_c + SOPA_bEmot_c:attend_c + 
                            meanpain_b, 
                          data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_sopa_attend, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.750, p = 0.002
## R² = 0.268
## Adj. R² = 0.211 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                 Est.     2.5%    97.5%   t val.       p
## --------------------------- -------- -------- -------- -------- -------
## (Intercept)                    1.585   -0.052    3.222    1.943   0.057
## SOPA_bEmot_c                  -0.150   -0.384    0.084   -1.283   0.205
## attend_c                      -0.269   -0.473   -0.066   -2.657   0.010
## meanpain_b                     0.386    0.117    0.656    2.877   0.006
## SOPA_bEmot_c:attend_c          0.013   -0.061    0.088    0.364   0.717
## -----------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_sopa_attend, 
  pred = SOPA_bEmot_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Approach to Pain (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × SOPA → Pain Severity")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_sopa_attend, 
  pred = SOPA_bEmot_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of SOPA_bEmot_c when attend_c = -1.892425 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.18   0.14    -1.27   0.21
## 
## Slope of SOPA_bEmot_c when attend_c =  0.576555 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.14   0.12    -1.20   0.23
## 
## Slope of SOPA_bEmot_c when attend_c =  3.045536 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.11   0.16    -0.68   0.50
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: ATTENDANCE × SOPA → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: ATTENDANCE × SOPA → PAIN INTERFERENCE ===
painint_mod_sopa_attend <- lm(painint_p ~ SOPA_bEmot_c + attend_c + SOPA_bEmot_c:attend_c + 
                               painint_b, 
                             data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_sopa_attend, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 6.603, p = 0.000
## R² = 0.337
## Adj. R² = 0.286 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                 Est.     2.5%    97.5%   t val.       p
## --------------------------- -------- -------- -------- -------- -------
## (Intercept)                    7.284   -0.159   14.727    1.964   0.055
## SOPA_bEmot_c                   0.144   -0.799    1.087    0.306   0.761
## attend_c                      -0.970   -1.820   -0.120   -2.290   0.026
## painint_b                      0.560    0.293    0.826    4.212   0.000
## SOPA_bEmot_c:attend_c          0.029   -0.279    0.338    0.190   0.850
## -----------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_sopa_attend, 
  pred = SOPA_bEmot_c, 
  modx = attend_c,
  modx.labels = c("Low Attendance (-1 SD)", 
                  "Mean Attendance", 
                  "High Attendance (+1 SD)"),
  x.label = "Baseline Emotional Approach to Pain (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Session Attendance"
) + 
  theme_minimal() +
  ggtitle("Moderation: Attendance × SOPA → Pain Interference")
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_sopa_attend, 
  pred = SOPA_bEmot_c, 
  modx = attend_c,
  johnson_neyman = TRUE
)
## Warning: 3.0455355142583 is outside the observed range of attend_c
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of SOPA_bEmot_c when attend_c = -1.892425 (- 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.09   0.56     0.16   0.88
## 
## Slope of SOPA_bEmot_c when attend_c =  0.576555 (Mean): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.16   0.47     0.34   0.74
## 
## Slope of SOPA_bEmot_c when attend_c =  3.045536 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.23   0.65     0.36   0.72
# ===================================================================
# PRIORITY 4: EMOTIONAL APPROACH TO PAIN (SOPA) × CATASTROPHIZING
# ===================================================================
# Research Question: Does baseline catastrophizing moderate the effect of 
# emotional approach to pain on post-treatment PAIN outcomes?
# ===================================================================

cat("\n\n=== MODERATION: CATASTROPHIZING × SOPA → PAIN SEVERITY ===\n")
## 
## 
## === MODERATION: CATASTROPHIZING × SOPA → PAIN SEVERITY ===
# Prepare data
eaet_data <- eaet_data %>%
  mutate(
    SOPA_bEmot_c = scale(SOPA_bEmot, scale = FALSE),
    PCS_bT_c = scale(PCS_bT, scale = FALSE),
    SOPA_PCS = SOPA_bEmot_c * PCS_bT_c
  )

# Model predicting post-treatment pain severity
pain_mod_sopa_pcs <- lm(meanpain_p ~ SOPA_bEmot_c + PCS_bT_c + SOPA_bEmot_c:PCS_bT_c + 
                         meanpain_b, 
                       data = eaet_data)

# Display results
pain_mod_summary <- jtools::summ(pain_mod_sopa_pcs, 
                                  digits = 3,
                                  confint = TRUE,
                                  ci.width = 0.95)
print(pain_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: meanpain_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 2.824, p = 0.034
## R² = 0.178
## Adj. R² = 0.115 
## 
## Standard errors: OLS
## ----------------------------------------------------------------------
##                                 Est.     2.5%   97.5%   t val.       p
## --------------------------- -------- -------- ------- -------- -------
## (Intercept)                    1.642   -0.260   3.544    1.732   0.089
## SOPA_bEmot_c                  -0.230   -0.479   0.020   -1.849   0.070
## PCS_bT_c                       0.023   -0.023   0.070    1.014   0.315
## meanpain_b                     0.338    0.025   0.651    2.168   0.035
## SOPA_bEmot_c:PCS_bT_c          0.008   -0.010   0.026    0.881   0.382
## ----------------------------------------------------------------------
# Interaction plot
pain_interact_plot <- interactions::interact_plot(
  pain_mod_sopa_pcs, 
  pred = SOPA_bEmot_c, 
  modx = PCS_bT_c,
  modx.labels = c("Low Catastrophizing (-1 SD)", 
                  "Mean Catastrophizing", 
                  "High Catastrophizing (+1 SD)"),
  x.label = "Baseline Emotional Approach to Pain (centered)",
  y.label = "Post-Treatment Pain Severity",
  legend.main = "Pain Catastrophizing"
) + 
  theme_minimal() +
  ggtitle("Moderation: Catastrophizing × SOPA → Pain Severity")

print(pain_interact_plot)

# Simple slopes analysis
cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_pain <- interactions::sim_slopes(
  pain_mod_sopa_pcs, 
  pred = SOPA_bEmot_c, 
  modx = PCS_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_pain)
## JOHNSON-NEYMAN INTERVAL 
## 
## When PCS_bT_c is INSIDE the interval [-16.95, -2.14], the slope of
## SOPA_bEmot_c is p < .05.
## 
## Note: The range of observed values of PCS_bT_c is [-20.73, 29.27]
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of SOPA_bEmot_c when PCS_bT_c = -13.4530420 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.34   0.16    -2.10   0.04
## 
## Slope of SOPA_bEmot_c when PCS_bT_c =  -0.5167464 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.23   0.12    -1.89   0.06
## 
## Slope of SOPA_bEmot_c when PCS_bT_c =  12.4195492 (+ 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.13   0.18    -0.74   0.46
# ===================================================================
# PAIN INTERFERENCE
# ===================================================================

cat("\n\n=== MODERATION: CATASTROPHIZING × SOPA → PAIN INTERFERENCE ===\n")
## 
## 
## === MODERATION: CATASTROPHIZING × SOPA → PAIN INTERFERENCE ===
painint_mod_sopa_pcs <- lm(painint_p ~ SOPA_bEmot_c + PCS_bT_c + SOPA_bEmot_c:PCS_bT_c + 
                            painint_b, 
                          data = eaet_data)

painint_mod_summary <- jtools::summ(painint_mod_sopa_pcs, 
                                     digits = 3,
                                     confint = TRUE,
                                     ci.width = 0.95)
print(painint_mod_summary)
## MODEL INFO:
## Observations: 57 (9 missing obs. deleted)
## Dependent Variable: painint_p
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,52) = 4.515, p = 0.003
## R² = 0.258
## Adj. R² = 0.201 
## 
## Standard errors: OLS
## -----------------------------------------------------------------------
##                                 Est.     2.5%    97.5%   t val.       p
## --------------------------- -------- -------- -------- -------- -------
## (Intercept)                    7.754   -1.543   17.051    1.674   0.100
## SOPA_bEmot_c                  -0.026   -1.045    0.992   -0.052   0.959
## PCS_bT_c                       0.012   -0.193    0.216    0.114   0.910
## painint_b                      0.520    0.186    0.854    3.126   0.003
## SOPA_bEmot_c:PCS_bT_c          0.006   -0.069    0.081    0.161   0.873
## -----------------------------------------------------------------------
painint_interact_plot <- interactions::interact_plot(
  painint_mod_sopa_pcs, 
  pred = SOPA_bEmot_c, 
  modx = PCS_bT_c,
  modx.labels = c("Low Catastrophizing (-1 SD)", 
                  "Mean Catastrophizing", 
                  "High Catastrophizing (+1 SD)"),
  x.label = "Baseline Emotional Approach to Pain (centered)",
  y.label = "Post-Treatment Pain Interference",
  legend.main = "Pain Catastrophizing"
) + 
  theme_minimal() +
  ggtitle("Moderation: Catastrophizing × SOPA → Pain Interference")

print(painint_interact_plot)

cat("\n--- SIMPLE SLOPES ANALYSIS ---\n")
## 
## --- SIMPLE SLOPES ANALYSIS ---
simple_slopes_painint <- interactions::sim_slopes(
  painint_mod_sopa_pcs, 
  pred = SOPA_bEmot_c, 
  modx = PCS_bT_c,
  johnson_neyman = TRUE
)
print(simple_slopes_painint)
## JOHNSON-NEYMAN INTERVAL 
## 
## The Johnson-Neyman interval could not be found. Is the p value for your
## interaction term below the specified alpha?
## 
## SIMPLE SLOPES ANALYSIS 
## 
## Slope of SOPA_bEmot_c when PCS_bT_c = -13.4530420 (- 1 SD): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.11   0.65    -0.17   0.87
## 
## Slope of SOPA_bEmot_c when PCS_bT_c =  -0.5167464 (Mean): 
## 
##    Est.   S.E.   t val.      p
## ------- ------ -------- ------
##   -0.03   0.50    -0.06   0.95
## 
## Slope of SOPA_bEmot_c when PCS_bT_c =  12.4195492 (+ 1 SD): 
## 
##   Est.   S.E.   t val.      p
## ------ ------ -------- ------
##   0.05   0.75     0.06   0.95
# ===================================================================
# SENSITIVITY ANALYSES: 6-MONTH FOLLOW-UP
# ===================================================================
cat("\n\n=== SENSITIVITY ANALYSIS: 6-MONTH OUTCOMES ===\n")
## 
## 
## === SENSITIVITY ANALYSIS: 6-MONTH OUTCOMES ===
# Re-prepare centered variables (in case running this chunk independently)
eaet_data <- eaet_data %>%
  mutate(
    PCS_bT_c = scale(PCS_bT, scale = FALSE),
    ADS_bT_c = scale(ADS_bT, scale = FALSE),
    attend_c = scale(attend, scale = FALSE),
    wai_c = scale(wai, scale = FALSE),
    EAC_bT_c = scale(EAC_bT, scale = FALSE),
    EAC_bEX_c = scale(EAC_bEX, scale = FALSE),
    EAC_bEP_c = scale(EAC_bEP, scale = FALSE),
    AEQ_bT_c = scale(AEQ_bT, scale = FALSE),
    PCL_bT_c = scale(PCL_bT, scale = FALSE),
    Coping_bDA_c = scale(Coping_bDA, scale = FALSE),
    Coping_bRPS_c = scale(Coping_bRPS, scale = FALSE),
    Coping_bCat_c = scale(Coping_bCat, scale = FALSE),
    SOPA_bEmot_c = scale(SOPA_bEmot, scale = FALSE)
  )

# --- Attendance × Anger Discomfort (6-month) ---
cat("\n--- Attendance × Anger Discomfort → 6-Month Pain Severity ---\n")
## 
## --- Attendance × Anger Discomfort → 6-Month Pain Severity ---
pain_6m_ads_attend <- lm(meanpain_6m ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                           meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_ads_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 2.470, p = 0.061
## R² = 0.206
## Adj. R² = 0.123 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                1.904   1.140    1.669   0.103
## ADS_bT_c                   0.024   0.039    0.609   0.546
## attend_c                  -0.082   0.132   -0.624   0.536
## meanpain_b                 0.451   0.181    2.497   0.017
## ADS_bT_c:attend_c          0.006   0.015    0.429   0.670
## ---------------------------------------------------------
cat("\n--- Attendance × Anger Discomfort → 6-Month Pain Interference ---\n")
## 
## --- Attendance × Anger Discomfort → 6-Month Pain Interference ---
painint_6m_ads_attend <- lm(painint_6m ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                              painint_b, data = eaet_data)
print(jtools::summ(painint_6m_ads_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 12.181, p = 0.000
## R² = 0.562
## Adj. R² = 0.516 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                3.516   3.487    1.008   0.320
## ADS_bT_c                   0.076   0.110    0.687   0.496
## attend_c                  -0.923   0.390   -2.368   0.023
## painint_b                  0.770   0.123    6.271   0.000
## ADS_bT_c:attend_c          0.020   0.042    0.480   0.634
## ---------------------------------------------------------
cat("\n--- Attendance × Anger Discomfort → 6-Month Anxiety ---\n")
## 
## --- Attendance × Anger Discomfort → 6-Month Anxiety ---
anxiety_6m_ads_attend <- lm(anxiety_6m ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                              anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_ads_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 13.266, p = 0.000
## R² = 0.583
## Adj. R² = 0.539 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                3.881   2.140    1.813   0.078
## ADS_bT_c                   0.043   0.078    0.556   0.581
## attend_c                  -0.402   0.249   -1.614   0.115
## anxiety_b                  0.662   0.108    6.147   0.000
## ADS_bT_c:attend_c         -0.028   0.028   -1.004   0.322
## ---------------------------------------------------------
cat("\n--- Attendance × Anger Discomfort → 6-Month Depression ---\n")
## 
## --- Attendance × Anger Discomfort → 6-Month Depression ---
depress_6m_ads_attend <- lm(depress_6m ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                              depress_b, data = eaet_data)
print(jtools::summ(depress_6m_ads_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 16.094, p = 0.000
## R² = 0.629
## Adj. R² = 0.590 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.032   2.115    0.960   0.343
## ADS_bT_c                  -0.002   0.084   -0.024   0.981
## attend_c                  -0.745   0.285   -2.615   0.013
## depress_b                  0.731   0.099    7.375   0.000
## ADS_bT_c:attend_c         -0.046   0.032   -1.434   0.160
## ---------------------------------------------------------
# --- Working Alliance × Anger Discomfort (6-month) ---
cat("\n--- Working Alliance × Anger Discomfort → 6-Month Pain Severity ---\n")
## 
## --- Working Alliance × Anger Discomfort → 6-Month Pain Severity ---
pain_6m_ads_wai <- lm(meanpain_6m ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                        meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_ads_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 2.434, p = 0.064
## R² = 0.204
## Adj. R² = 0.120 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             1.744   1.194    1.461   0.152
## ADS_bT_c                0.020   0.040    0.501   0.619
## wai_c                  -0.004   0.022   -0.189   0.851
## meanpain_b              0.466   0.188    2.483   0.018
## ADS_bT_c:wai_c          0.002   0.003    0.705   0.485
## ------------------------------------------------------
cat("\n--- Working Alliance × Anger Discomfort → 6-Month Pain Interference ---\n")
## 
## --- Working Alliance × Anger Discomfort → 6-Month Pain Interference ---
painint_6m_ads_wai <- lm(painint_6m ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                           painint_b, data = eaet_data)
print(jtools::summ(painint_6m_ads_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 11.172, p = 0.000
## R² = 0.540
## Adj. R² = 0.492 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             3.947   3.594    1.098   0.279
## ADS_bT_c                0.101   0.110    0.922   0.363
## wai_c                  -0.136   0.067   -2.041   0.048
## painint_b               0.737   0.124    5.924   0.000
## ADS_bT_c:wai_c          0.001   0.007    0.192   0.849
## ------------------------------------------------------
cat("\n--- Working Alliance × Anger Discomfort → 6-Month Anxiety ---\n")
## 
## --- Working Alliance × Anger Discomfort → 6-Month Anxiety ---
anxiety_6m_ads_wai <- lm(anxiety_6m ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                           anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_ads_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 14.547, p = 0.000
## R² = 0.605
## Adj. R² = 0.563 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             3.617   2.193    1.650   0.107
## ADS_bT_c                0.052   0.075    0.690   0.494
## wai_c                  -0.065   0.043   -1.511   0.139
## anxiety_b               0.669   0.110    6.061   0.000
## ADS_bT_c:wai_c         -0.008   0.004   -1.801   0.080
## ------------------------------------------------------
cat("\n--- Working Alliance × Anger Discomfort → 6-Month Depression ---\n")
## 
## --- Working Alliance × Anger Discomfort → 6-Month Depression ---
depress_6m_ads_wai <- lm(depress_6m ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                           depress_b, data = eaet_data)
print(jtools::summ(depress_6m_ads_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 14.060, p = 0.000
## R² = 0.597
## Adj. R² = 0.554 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             2.028   2.293    0.885   0.382
## ADS_bT_c               -0.013   0.086   -0.149   0.883
## wai_c                  -0.086   0.051   -1.696   0.098
## depress_b               0.711   0.107    6.657   0.000
## ADS_bT_c:wai_c         -0.007   0.006   -1.208   0.235
## ------------------------------------------------------
# --- Attendance × Catastrophizing (6-month) ---
cat("\n--- Attendance × Catastrophizing → 6-Month Pain Severity ---\n")
## 
## --- Attendance × Catastrophizing → 6-Month Pain Severity ---
pain_6m_pcs_attend <- lm(meanpain_6m ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                           meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_pcs_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 3.845, p = 0.009
## R² = 0.239
## Adj. R² = 0.177 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.368   1.003    2.361   0.022
## PCS_bT_c                   0.026   0.026    0.991   0.326
## attend_c                  -0.198   0.113   -1.748   0.087
## meanpain_b                 0.413   0.167    2.478   0.017
## PCS_bT_c:attend_c         -0.010   0.009   -1.056   0.296
## ---------------------------------------------------------
cat("\n--- Attendance × Catastrophizing → 6-Month Pain Interference ---\n")
## 
## --- Attendance × Catastrophizing → 6-Month Pain Interference ---
painint_6m_pcs_attend <- lm(painint_6m ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                              painint_b, data = eaet_data)
print(jtools::summ(painint_6m_pcs_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 13.480, p = 0.000
## R² = 0.524
## Adj. R² = 0.485 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                4.312   3.936    1.095   0.279
## PCS_bT_c                   0.015   0.091    0.161   0.873
## attend_c                  -0.846   0.367   -2.304   0.026
## painint_b                  0.762   0.141    5.399   0.000
## PCS_bT_c:attend_c         -0.036   0.029   -1.260   0.214
## ---------------------------------------------------------
cat("\n--- Attendance × Catastrophizing → 6-Month Anxiety ---\n")
## 
## --- Attendance × Catastrophizing → 6-Month Anxiety ---
anxiety_6m_pcs_attend <- lm(anxiety_6m ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                              anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_pcs_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 7.493, p = 0.000
## R² = 0.380
## Adj. R² = 0.329 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                8.567   2.627    3.261   0.002
## PCS_bT_c                   0.128   0.070    1.822   0.075
## attend_c                  -0.717   0.305   -2.349   0.023
## anxiety_b                  0.409   0.132    3.087   0.003
## PCS_bT_c:attend_c         -0.044   0.024   -1.813   0.076
## ---------------------------------------------------------
cat("\n--- Attendance × Catastrophizing → 6-Month Depression ---\n")
## 
## --- Attendance × Catastrophizing → 6-Month Depression ---
depress_6m_pcs_attend <- lm(depress_6m ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                              depress_b, data = eaet_data)
print(jtools::summ(depress_6m_pcs_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 15.858, p = 0.000
## R² = 0.564
## Adj. R² = 0.529 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                1.613   2.594    0.622   0.537
## PCS_bT_c                  -0.072   0.072   -1.000   0.322
## attend_c                  -1.025   0.301   -3.407   0.001
## depress_b                  0.787   0.120    6.532   0.000
## PCS_bT_c:attend_c         -0.068   0.024   -2.811   0.007
## ---------------------------------------------------------
# --- Emotional Coping × Catastrophizing (6-month) ---
cat("\n--- Emotional Coping × Catastrophizing → 6-Month Pain Severity ---\n")
## 
## --- Emotional Coping × Catastrophizing → 6-Month Pain Severity ---
pain_6m_pcs_eac <- lm(meanpain_6m ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                        meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_pcs_eac, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 4.183, p = 0.005
## R² = 0.255
## Adj. R² = 0.194 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                1.952   1.020    1.913   0.062
## PCS_bT_c                   0.016   0.025    0.648   0.520
## EAC_bT_c                  -0.094   0.045   -2.082   0.043
## meanpain_b                 0.463   0.169    2.739   0.009
## PCS_bT_c:EAC_bT_c          0.000   0.004    0.071   0.944
## ---------------------------------------------------------
cat("\n--- Emotional Coping × Catastrophizing → 6-Month Pain Interference ---\n")
## 
## --- Emotional Coping × Catastrophizing → 6-Month Pain Interference ---
painint_6m_pcs_eac <- lm(painint_6m ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                           painint_b, data = eaet_data)
print(jtools::summ(painint_6m_pcs_eac, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 11.576, p = 0.000
## R² = 0.486
## Adj. R² = 0.444 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                5.541   3.989    1.389   0.171
## PCS_bT_c                   0.009   0.089    0.102   0.919
## EAC_bT_c                  -0.165   0.145   -1.135   0.262
## painint_b                  0.695   0.141    4.917   0.000
## PCS_bT_c:EAC_bT_c          0.006   0.014    0.460   0.647
## ---------------------------------------------------------
cat("\n--- Emotional Coping × Catastrophizing → 6-Month Anxiety ---\n")
## 
## --- Emotional Coping × Catastrophizing → 6-Month Anxiety ---
anxiety_6m_pcs_eac <- lm(anxiety_6m ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                           anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_pcs_eac, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 6.442, p = 0.000
## R² = 0.345
## Adj. R² = 0.291 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                7.761   2.794    2.778   0.008
## PCS_bT_c                   0.083   0.071    1.179   0.244
## EAC_bT_c                   0.097   0.127    0.770   0.445
## anxiety_b                  0.432   0.140    3.083   0.003
## PCS_bT_c:EAC_bT_c         -0.020   0.012   -1.731   0.090
## ---------------------------------------------------------
cat("\n--- Emotional Coping × Catastrophizing → 6-Month Depression ---\n")
## 
## --- Emotional Coping × Catastrophizing → 6-Month Depression ---
depress_6m_pcs_eac <- lm(depress_6m ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                           depress_b, data = eaet_data)
print(jtools::summ(depress_6m_pcs_eac, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 9.758, p = 0.000
## R² = 0.443
## Adj. R² = 0.398 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.196   3.225    0.681   0.499
## PCS_bT_c                  -0.107   0.083   -1.295   0.202
## EAC_bT_c                  -0.074   0.146   -0.505   0.616
## depress_b                  0.729   0.149    4.903   0.000
## PCS_bT_c:EAC_bT_c         -0.014   0.013   -1.084   0.284
## ---------------------------------------------------------
# --- Working Alliance × Ambivalence (6-month) ---
cat("\n--- Working Alliance × Ambivalence → 6-Month Pain Severity ---\n")
## 
## --- Working Alliance × Ambivalence → 6-Month Pain Severity ---
pain_6m_aeq_wai <- lm(meanpain_6m ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                        meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_aeq_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 3.714, p = 0.010
## R² = 0.233
## Adj. R² = 0.170 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             2.393   0.863    2.771   0.008
## AEQ_bT_c                0.041   0.025    1.659   0.104
## wai_c                  -0.014   0.017   -0.794   0.431
## meanpain_b              0.382   0.142    2.702   0.009
## AEQ_bT_c:wai_c          0.001   0.002    0.388   0.700
## ------------------------------------------------------
cat("\n--- Working Alliance × Ambivalence → 6-Month Pain Interference ---\n")
## 
## --- Working Alliance × Ambivalence → 6-Month Pain Interference ---
painint_6m_aeq_wai <- lm(painint_6m ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                           painint_b, data = eaet_data)
print(jtools::summ(painint_6m_aeq_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 11.811, p = 0.000
## R² = 0.491
## Adj. R² = 0.449 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             5.038   3.270    1.541   0.130
## AEQ_bT_c                0.058   0.081    0.713   0.479
## wai_c                  -0.072   0.059   -1.229   0.225
## painint_b               0.716   0.115    6.206   0.000
## AEQ_bT_c:wai_c         -0.003   0.005   -0.486   0.629
## ------------------------------------------------------
cat("\n--- Working Alliance × Ambivalence → 6-Month Anxiety ---\n")
## 
## --- Working Alliance × Ambivalence → 6-Month Anxiety ---
anxiety_6m_aeq_wai <- lm(anxiety_6m ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                           anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_aeq_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 5.933, p = 0.001
## R² = 0.326
## Adj. R² = 0.271 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             7.542   2.512    3.003   0.004
## AEQ_bT_c                0.084   0.071    1.181   0.243
## wai_c                  -0.033   0.050   -0.648   0.520
## anxiety_b               0.440   0.125    3.517   0.001
## AEQ_bT_c:wai_c         -0.008   0.004   -1.695   0.096
## ------------------------------------------------------
cat("\n--- Working Alliance × Ambivalence → 6-Month Depression ---\n")
## 
## --- Working Alliance × Ambivalence → 6-Month Depression ---
depress_6m_aeq_wai <- lm(depress_6m ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                           depress_b, data = eaet_data)
print(jtools::summ(depress_6m_aeq_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 10.148, p = 0.000
## R² = 0.453
## Adj. R² = 0.408 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             5.075   2.552    1.989   0.052
## AEQ_bT_c                0.097   0.076    1.275   0.208
## wai_c                  -0.086   0.052   -1.663   0.103
## depress_b               0.592   0.117    5.058   0.000
## AEQ_bT_c:wai_c         -0.006   0.005   -1.182   0.243
## ------------------------------------------------------
# --- PTSD × Anger Discomfort (6-month) ---
cat("\n--- PTSD × Anger Discomfort → 6-Month Pain Severity ---\n")
## 
## --- PTSD × Anger Discomfort → 6-Month Pain Severity ---
pain_6m_ads_pcl <- lm(meanpain_6m ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                        meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_ads_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 3.670, p = 0.013
## R² = 0.279
## Adj. R² = 0.203 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                1.742   1.253    1.391   0.172
## ADS_bT_c                  -0.010   0.039   -0.263   0.794
## PCL_bT_c                   0.023   0.020    1.134   0.264
## meanpain_b                 0.434   0.192    2.259   0.030
## ADS_bT_c:PCL_bT_c          0.003   0.002    1.610   0.116
## ---------------------------------------------------------
cat("\n--- PTSD × Anger Discomfort → 6-Month Pain Interference ---\n")
## 
## --- PTSD × Anger Discomfort → 6-Month Pain Interference ---
painint_6m_ads_pcl <- lm(painint_6m ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                           painint_b, data = eaet_data)
print(jtools::summ(painint_6m_ads_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 10.166, p = 0.000
## R² = 0.517
## Adj. R² = 0.466 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                4.188   4.138    1.012   0.318
## ADS_bT_c                   0.050   0.119    0.421   0.676
## PCL_bT_c                  -0.014   0.068   -0.207   0.837
## painint_b                  0.701   0.143    4.900   0.000
## ADS_bT_c:PCL_bT_c          0.008   0.006    1.466   0.151
## ---------------------------------------------------------
cat("\n--- PTSD × Anger Discomfort → 6-Month Anxiety ---\n")
## 
## --- PTSD × Anger Discomfort → 6-Month Anxiety ---
anxiety_6m_ads_pcl <- lm(anxiety_6m ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                           anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_ads_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 12.595, p = 0.000
## R² = 0.570
## Adj. R² = 0.525 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                1.729   2.787    0.620   0.539
## ADS_bT_c                  -0.004   0.079   -0.048   0.962
## PCL_bT_c                  -0.044   0.047   -0.925   0.361
## anxiety_b                  0.737   0.138    5.322   0.000
## ADS_bT_c:PCL_bT_c          0.004   0.004    1.153   0.256
## ---------------------------------------------------------
cat("\n--- PTSD × Anger Discomfort → 6-Month Depression ---\n")
## 
## --- PTSD × Anger Discomfort → 6-Month Depression ---
depress_6m_ads_pcl <- lm(depress_6m ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                           depress_b, data = eaet_data)
print(jtools::summ(depress_6m_ads_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 12.319, p = 0.000
## R² = 0.565
## Adj. R² = 0.519 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                0.010   2.797    0.004   0.997
## ADS_bT_c                  -0.049   0.093   -0.519   0.607
## PCL_bT_c                  -0.053   0.053   -0.996   0.325
## depress_b                  0.788   0.127    6.201   0.000
## ADS_bT_c:PCL_bT_c          0.002   0.004    0.561   0.578
## ---------------------------------------------------------
# --- PTSD × Catastrophizing (6-month) ---
cat("\n--- PTSD × Catastrophizing → 6-Month Pain Severity ---\n")
## 
## --- PTSD × Catastrophizing → 6-Month Pain Severity ---
pain_6m_pcs_pcl <- lm(meanpain_6m ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                        meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_pcs_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 3.035, p = 0.029
## R² = 0.242
## Adj. R² = 0.162 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.966   1.308    2.267   0.029
## PCS_bT_c                   0.027   0.033    0.835   0.409
## PCL_bT_c                   0.023   0.022    1.055   0.298
## meanpain_b                 0.271   0.206    1.313   0.197
## PCS_bT_c:PCL_bT_c         -0.000   0.001   -0.029   0.977
## ---------------------------------------------------------
cat("\n--- PTSD × Catastrophizing → 6-Month Pain Interference ---\n")
## 
## --- PTSD × Catastrophizing → 6-Month Pain Interference ---
painint_6m_pcs_pcl <- lm(painint_6m ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                           painint_b, data = eaet_data)
print(jtools::summ(painint_6m_pcs_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 9.127, p = 0.000
## R² = 0.490
## Adj. R² = 0.436 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                6.536   4.815    1.358   0.183
## PCS_bT_c                   0.079   0.106    0.744   0.461
## PCL_bT_c                   0.002   0.070    0.024   0.981
## painint_b                  0.648   0.169    3.840   0.000
## PCS_bT_c:PCL_bT_c         -0.002   0.005   -0.373   0.711
## ---------------------------------------------------------
cat("\n--- PTSD × Catastrophizing → 6-Month Anxiety ---\n")
## 
## --- PTSD × Catastrophizing → 6-Month Anxiety ---
anxiety_6m_pcs_pcl <- lm(anxiety_6m ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                           anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_pcs_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 13.713, p = 0.000
## R² = 0.591
## Adj. R² = 0.548 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.902   2.724    1.065   0.293
## PCS_bT_c                   0.087   0.058    1.492   0.144
## PCL_bT_c                  -0.069   0.049   -1.407   0.167
## anxiety_b                  0.673   0.135    4.977   0.000
## PCS_bT_c:PCL_bT_c          0.003   0.003    0.943   0.352
## ---------------------------------------------------------
cat("\n--- PTSD × Catastrophizing → 6-Month Depression ---\n")
## 
## --- PTSD × Catastrophizing → 6-Month Depression ---
depress_6m_pcs_pcl <- lm(depress_6m ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                           depress_b, data = eaet_data)
print(jtools::summ(depress_6m_pcs_pcl, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 12.083, p = 0.000
## R² = 0.560
## Adj. R² = 0.514 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                0.777   2.863    0.271   0.788
## PCS_bT_c                  -0.001   0.076   -0.008   0.993
## PCL_bT_c                  -0.052   0.054   -0.949   0.348
## depress_b                  0.765   0.133    5.731   0.000
## PCS_bT_c:PCL_bT_c         -0.001   0.004   -0.191   0.850
## ---------------------------------------------------------
# --- Emotional Expression × Attendance (6-month) ---
cat("\n--- Attendance × Emotional Expression → 6-Month Pain Severity ---\n")
## 
## --- Attendance × Emotional Expression → 6-Month Pain Severity ---
pain_6m_ex_attend <- lm(meanpain_6m ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                          meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_ex_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 5.077, p = 0.002
## R² = 0.293
## Adj. R² = 0.235 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 1.658   0.806    2.057   0.045
## EAC_bEX_c                  -0.147   0.099   -1.482   0.145
## attend_c                   -0.116   0.106   -1.093   0.280
## meanpain_b                  0.543   0.133    4.072   0.000
## EAC_bEX_c:attend_c         -0.051   0.042   -1.210   0.232
## ----------------------------------------------------------
cat("\n--- Attendance × Emotional Expression → 6-Month Pain Interference ---\n")
## 
## --- Attendance × Emotional Expression → 6-Month Pain Interference ---
painint_6m_ex_attend <- lm(painint_6m ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                             painint_b, data = eaet_data)
print(jtools::summ(painint_6m_ex_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 13.472, p = 0.000
## R² = 0.524
## Adj. R² = 0.485 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 5.161   2.988    1.727   0.090
## EAC_bEX_c                   0.059   0.324    0.182   0.856
## attend_c                   -0.641   0.355   -1.806   0.077
## painint_b                   0.734   0.106    6.919   0.000
## EAC_bEX_c:attend_c         -0.175   0.141   -1.243   0.220
## ----------------------------------------------------------
cat("\n--- Attendance × Emotional Expression → 6-Month Anxiety ---\n")
## 
## --- Attendance × Emotional Expression → 6-Month Anxiety ---
anxiety_6m_ex_attend <- lm(anxiety_6m ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                             anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_ex_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 6.081, p = 0.000
## R² = 0.332
## Adj. R² = 0.277 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 6.091   2.221    2.743   0.008
## EAC_bEX_c                   0.216   0.279    0.773   0.443
## attend_c                   -0.645   0.310   -2.081   0.043
## anxiety_b                   0.522   0.111    4.700   0.000
## EAC_bEX_c:attend_c          0.049   0.123    0.397   0.693
## ----------------------------------------------------------
cat("\n--- Attendance × Emotional Expression → 6-Month Depression ---\n")
## 
## --- Attendance × Emotional Expression → 6-Month Depression ---
depress_6m_ex_attend <- lm(depress_6m ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                             depress_b, data = eaet_data)
print(jtools::summ(depress_6m_ex_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 11.944, p = 0.000
## R² = 0.494
## Adj. R² = 0.452 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 4.850   2.276    2.131   0.038
## EAC_bEX_c                  -0.188   0.294   -0.640   0.525
## attend_c                   -0.629   0.319   -1.969   0.055
## depress_b                   0.633   0.105    6.039   0.000
## EAC_bEX_c:attend_c         -0.189   0.126   -1.501   0.140
## ----------------------------------------------------------
# --- Emotional Processing × Attendance (6-month) ---
cat("\n--- Attendance × Emotional Processing → 6-Month Pain Severity ---\n")
## 
## --- Attendance × Emotional Processing → 6-Month Pain Severity ---
pain_6m_ep_attend <- lm(meanpain_6m ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                          meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_ep_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 3.978, p = 0.007
## R² = 0.245
## Adj. R² = 0.183 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 2.090   0.832    2.510   0.015
## EAC_bEP_c                  -0.021   0.098   -0.220   0.827
## attend_c                   -0.167   0.110   -1.522   0.134
## meanpain_b                  0.462   0.135    3.428   0.001
## EAC_bEP_c:attend_c         -0.049   0.045   -1.078   0.286
## ----------------------------------------------------------
cat("\n--- Attendance × Emotional Processing → 6-Month Pain Interference ---\n")
## 
## --- Attendance × Emotional Processing → 6-Month Pain Interference ---
painint_6m_ep_attend <- lm(painint_6m ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                             painint_b, data = eaet_data)
print(jtools::summ(painint_6m_ep_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 14.555, p = 0.000
## R² = 0.543
## Adj. R² = 0.506 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 6.576   3.054    2.153   0.036
## EAC_bEP_c                   0.112   0.304    0.368   0.715
## attend_c                   -0.733   0.348   -2.106   0.040
## painint_b                   0.687   0.107    6.432   0.000
## EAC_bEP_c:attend_c         -0.263   0.147   -1.797   0.079
## ----------------------------------------------------------
cat("\n--- Attendance × Emotional Processing → 6-Month Anxiety ---\n")
## 
## --- Attendance × Emotional Processing → 6-Month Anxiety ---
anxiety_6m_ep_attend <- lm(anxiety_6m ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                             anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_ep_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 5.995, p = 0.001
## R² = 0.329
## Adj. R² = 0.274 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 6.177   2.332    2.649   0.011
## EAC_bEP_c                   0.249   0.271    0.918   0.363
## attend_c                   -0.638   0.312   -2.048   0.046
## anxiety_b                   0.528   0.115    4.575   0.000
## EAC_bEP_c:attend_c         -0.039   0.128   -0.304   0.763
## ----------------------------------------------------------
cat("\n--- Attendance × Emotional Processing → 6-Month Depression ---\n")
## 
## --- Attendance × Emotional Processing → 6-Month Depression ---
depress_6m_ep_attend <- lm(depress_6m ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                             depress_b, data = eaet_data)
print(jtools::summ(depress_6m_ep_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 11.093, p = 0.000
## R² = 0.475
## Adj. R² = 0.432 
## 
## Standard errors: OLS
## ----------------------------------------------------------
##                              Est.    S.E.   t val.       p
## ------------------------ -------- ------- -------- -------
## (Intercept)                 4.511   2.351    1.919   0.061
## EAC_bEP_c                   0.308   0.285    1.080   0.286
## attend_c                   -0.850   0.325   -2.611   0.012
## depress_b                   0.650   0.108    6.034   0.000
## EAC_bEP_c:attend_c         -0.173   0.132   -1.309   0.197
## ----------------------------------------------------------
# --- Emotional Expression × Working Alliance (6-month) ---
cat("\n--- Working Alliance × Emotional Expression → 6-Month Pain Severity ---\n")
## 
## --- Working Alliance × Emotional Expression → 6-Month Pain Severity ---
pain_6m_ex_wai <- lm(meanpain_6m ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                       meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_ex_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 4.806, p = 0.002
## R² = 0.282
## Adj. R² = 0.223 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              1.520   0.814    1.867   0.068
## EAC_bEX_c               -0.224   0.094   -2.381   0.021
## wai_c                   -0.010   0.017   -0.613   0.543
## meanpain_b               0.550   0.135    4.072   0.000
## EAC_bEX_c:wai_c         -0.007   0.005   -1.332   0.189
## -------------------------------------------------------
cat("\n--- Working Alliance × Emotional Expression → 6-Month Pain Interference ---\n")
## 
## --- Working Alliance × Emotional Expression → 6-Month Pain Interference ---
painint_6m_ex_wai <- lm(painint_6m ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                          painint_b, data = eaet_data)
print(jtools::summ(painint_6m_ex_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 14.981, p = 0.000
## R² = 0.550
## Adj. R² = 0.513 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              4.814   2.957    1.628   0.110
## EAC_bEX_c               -0.270   0.291   -0.929   0.357
## wai_c                   -0.075   0.055   -1.362   0.179
## painint_b                0.732   0.105    7.007   0.000
## EAC_bEX_c:wai_c         -0.043   0.016   -2.628   0.011
## -------------------------------------------------------
cat("\n--- Working Alliance × Emotional Expression → 6-Month Anxiety ---\n")
## 
## --- Working Alliance × Emotional Expression → 6-Month Anxiety ---
anxiety_6m_ex_wai <- lm(anxiety_6m ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                          anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_ex_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 4.966, p = 0.002
## R² = 0.288
## Adj. R² = 0.230 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              6.036   2.391    2.524   0.015
## EAC_bEX_c                0.137   0.268    0.511   0.612
## wai_c                   -0.041   0.052   -0.788   0.435
## anxiety_b                0.512   0.119    4.307   0.000
## EAC_bEX_c:wai_c         -0.012   0.015   -0.763   0.449
## -------------------------------------------------------
cat("\n--- Working Alliance × Emotional Expression → 6-Month Depression ---\n")
## 
## --- Working Alliance × Emotional Expression → 6-Month Depression ---
depress_6m_ex_wai <- lm(depress_6m ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                          depress_b, data = eaet_data)
print(jtools::summ(depress_6m_ex_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 12.611, p = 0.000
## R² = 0.507
## Adj. R² = 0.467 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              4.214   2.292    1.839   0.072
## EAC_bEX_c               -0.502   0.269   -1.863   0.068
## wai_c                   -0.083   0.050   -1.658   0.104
## depress_b                0.643   0.105    6.140   0.000
## EAC_bEX_c:wai_c         -0.037   0.015   -2.425   0.019
## -------------------------------------------------------
# --- Emotional Processing × Working Alliance (6-month) ---
cat("\n--- Working Alliance × Emotional Processing → 6-Month Pain Severity ---\n")
## 
## --- Working Alliance × Emotional Processing → 6-Month Pain Severity ---
pain_6m_ep_wai <- lm(meanpain_6m ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                       meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_ep_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 3.234, p = 0.020
## R² = 0.209
## Adj. R² = 0.144 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              1.834   0.838    2.189   0.033
## EAC_bEP_c               -0.096   0.083   -1.150   0.256
## wai_c                   -0.010   0.018   -0.552   0.583
## meanpain_b               0.477   0.137    3.482   0.001
## EAC_bEP_c:wai_c          0.002   0.005    0.455   0.651
## -------------------------------------------------------
cat("\n--- Working Alliance × Emotional Processing → 6-Month Pain Interference ---\n")
## 
## --- Working Alliance × Emotional Processing → 6-Month Pain Interference ---
painint_6m_ep_wai <- lm(painint_6m ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                          painint_b, data = eaet_data)
print(jtools::summ(painint_6m_ep_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 13.222, p = 0.000
## R² = 0.519
## Adj. R² = 0.480 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              4.764   3.025    1.575   0.122
## EAC_bEP_c               -0.236   0.259   -0.912   0.366
## wai_c                   -0.085   0.058   -1.468   0.148
## painint_b                0.725   0.106    6.808   0.000
## EAC_bEP_c:wai_c         -0.024   0.015   -1.619   0.112
## -------------------------------------------------------
cat("\n--- Working Alliance × Emotional Processing → 6-Month Anxiety ---\n")
## 
## --- Working Alliance × Emotional Processing → 6-Month Anxiety ---
anxiety_6m_ep_wai <- lm(anxiety_6m ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                          anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_ep_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 4.828, p = 0.002
## R² = 0.283
## Adj. R² = 0.224 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              5.721   2.431    2.353   0.023
## EAC_bEP_c                0.129   0.238    0.542   0.590
## wai_c                   -0.033   0.053   -0.633   0.530
## anxiety_b                0.527   0.121    4.346   0.000
## EAC_bEP_c:wai_c          0.007   0.014    0.521   0.605
## -------------------------------------------------------
cat("\n--- Working Alliance × Emotional Processing → 6-Month Depression ---\n")
## 
## --- Working Alliance × Emotional Processing → 6-Month Depression ---
depress_6m_ep_wai <- lm(depress_6m ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                          depress_b, data = eaet_data)
print(jtools::summ(depress_6m_ep_wai, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 9.015, p = 0.000
## R² = 0.424
## Adj. R² = 0.377 
## 
## Standard errors: OLS
## -------------------------------------------------------
##                           Est.    S.E.   t val.       p
## --------------------- -------- ------- -------- -------
## (Intercept)              3.464   2.459    1.409   0.165
## EAC_bEP_c                0.034   0.254    0.134   0.894
## wai_c                   -0.085   0.054   -1.572   0.122
## depress_b                0.664   0.113    5.870   0.000
## EAC_bEP_c:wai_c          0.001   0.014    0.086   0.932
## -------------------------------------------------------
# --- Distraction/Avoidance × Attendance (6-month) ---
cat("\n--- Attendance × Distraction/Avoidance → 6-Month Pain Severity ---\n")
## 
## --- Attendance × Distraction/Avoidance → 6-Month Pain Severity ---
pain_6m_da_attend <- lm(meanpain_6m ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                          meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_da_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 3.574, p = 0.012
## R² = 0.226
## Adj. R² = 0.163 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    2.119   0.854    2.482   0.017
## Coping_bDA_c                   0.039   0.085    0.465   0.644
## attend_c                      -0.162   0.110   -1.482   0.145
## meanpain_b                     0.445   0.140    3.176   0.003
## Coping_bDA_c:attend_c          0.022   0.036    0.611   0.544
## -------------------------------------------------------------
cat("\n--- Attendance × Distraction/Avoidance → 6-Month Pain Interference ---\n")
## 
## --- Attendance × Distraction/Avoidance → 6-Month Pain Interference ---
painint_6m_da_attend <- lm(painint_6m ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                             painint_b, data = eaet_data)
print(jtools::summ(painint_6m_da_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 12.911, p = 0.000
## R² = 0.513
## Adj. R² = 0.473 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    4.129   3.001    1.376   0.175
## Coping_bDA_c                  -0.167   0.263   -0.635   0.528
## attend_c                      -0.693   0.356   -1.949   0.057
## painint_b                      0.763   0.107    7.134   0.000
## Coping_bDA_c:attend_c         -0.020   0.114   -0.176   0.861
## -------------------------------------------------------------
cat("\n--- Attendance × Distraction/Avoidance → 6-Month Anxiety ---\n")
## 
## --- Attendance × Distraction/Avoidance → 6-Month Anxiety ---
anxiety_6m_da_attend <- lm(anxiety_6m ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                             anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_da_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 6.506, p = 0.000
## R² = 0.347
## Adj. R² = 0.294 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    6.145   2.279    2.696   0.010
## Coping_bDA_c                  -0.024   0.231   -0.103   0.918
## attend_c                      -0.604   0.301   -2.004   0.051
## anxiety_b                      0.531   0.114    4.669   0.000
## Coping_bDA_c:attend_c         -0.139   0.098   -1.418   0.163
## -------------------------------------------------------------
cat("\n--- Attendance × Distraction/Avoidance → 6-Month Depression ---\n")
## 
## --- Attendance × Distraction/Avoidance → 6-Month Depression ---
depress_6m_da_attend <- lm(depress_6m ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                             depress_b, data = eaet_data)
print(jtools::summ(depress_6m_da_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 11.622, p = 0.000
## R² = 0.487
## Adj. R² = 0.445 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    4.049   2.231    1.815   0.076
## Coping_bDA_c                  -0.314   0.234   -1.340   0.186
## attend_c                      -0.719   0.316   -2.276   0.027
## depress_b                      0.659   0.103    6.404   0.000
## Coping_bDA_c:attend_c         -0.074   0.103   -0.722   0.474
## -------------------------------------------------------------
# --- Reappraisal × Attendance (6-month) ---
cat("\n--- Attendance × Reappraisal → 6-Month Pain Severity ---\n")
## 
## --- Attendance × Reappraisal → 6-Month Pain Severity ---
pain_6m_rps_attend <- lm(meanpain_6m ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                           meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_rps_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 3.396, p = 0.016
## R² = 0.217
## Adj. R² = 0.153 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     2.099   0.859    2.445   0.018
## Coping_bRPS_c                   0.050   0.103    0.482   0.632
## attend_c                       -0.169   0.110   -1.535   0.131
## meanpain_b                      0.451   0.142    3.173   0.003
## Coping_bRPS_c:attend_c         -0.004   0.040   -0.088   0.930
## --------------------------------------------------------------
cat("\n--- Attendance × Reappraisal → 6-Month Pain Interference ---\n")
## 
## --- Attendance × Reappraisal → 6-Month Pain Interference ---
painint_6m_rps_attend <- lm(painint_6m ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                              painint_b, data = eaet_data)
print(jtools::summ(painint_6m_rps_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 12.842, p = 0.000
## R² = 0.512
## Adj. R² = 0.472 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     4.724   3.034    1.557   0.126
## Coping_bRPS_c                   0.095   0.322    0.297   0.768
## attend_c                       -0.712   0.354   -2.011   0.050
## painint_b                       0.745   0.109    6.858   0.000
## Coping_bRPS_c:attend_c         -0.079   0.128   -0.622   0.537
## --------------------------------------------------------------
cat("\n--- Attendance × Reappraisal → 6-Month Anxiety ---\n")
## 
## --- Attendance × Reappraisal → 6-Month Anxiety ---
anxiety_6m_rps_attend <- lm(anxiety_6m ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                              anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_rps_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 9.581, p = 0.000
## R² = 0.439
## Adj. R² = 0.393 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     5.492   2.173    2.528   0.015
## Coping_bRPS_c                   0.131   0.263    0.497   0.621
## attend_c                       -0.602   0.278   -2.165   0.035
## anxiety_b                       0.576   0.111    5.214   0.000
## Coping_bRPS_c:attend_c         -0.330   0.102   -3.232   0.002
## --------------------------------------------------------------
cat("\n--- Attendance × Reappraisal → 6-Month Depression ---\n")
## 
## --- Attendance × Reappraisal → 6-Month Depression ---
depress_6m_rps_attend <- lm(depress_6m ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                              depress_b, data = eaet_data)
print(jtools::summ(depress_6m_rps_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 12.831, p = 0.000
## R² = 0.512
## Adj. R² = 0.472 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     3.042   2.242    1.357   0.181
## Coping_bRPS_c                  -0.296   0.281   -1.055   0.297
## attend_c                       -0.720   0.306   -2.351   0.023
## depress_b                       0.719   0.104    6.886   0.000
## Coping_bRPS_c:attend_c         -0.190   0.112   -1.692   0.097
## --------------------------------------------------------------
# --- Catastrophizing Coping × Attendance (6-month) ---
cat("\n--- Attendance × Catastrophizing Coping → 6-Month Pain Severity ---\n")
## 
## --- Attendance × Catastrophizing Coping → 6-Month Pain Severity ---
pain_6m_cat_attend <- lm(meanpain_6m ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                           meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_cat_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 4.590, p = 0.003
## R² = 0.273
## Adj. R² = 0.213 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     2.947   1.031    2.859   0.006
## Coping_bCat_c                   0.183   0.102    1.801   0.078
## attend_c                       -0.190   0.119   -1.597   0.117
## meanpain_b                      0.319   0.170    1.876   0.067
## Coping_bCat_c:attend_c         -0.029   0.036   -0.826   0.413
## --------------------------------------------------------------
cat("\n--- Attendance × Catastrophizing Coping → 6-Month Pain Interference ---\n")
## 
## --- Attendance × Catastrophizing Coping → 6-Month Pain Interference ---
painint_6m_cat_attend <- lm(painint_6m ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                              painint_b, data = eaet_data)
print(jtools::summ(painint_6m_cat_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 13.077, p = 0.000
## R² = 0.516
## Adj. R² = 0.477 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     4.461   3.743    1.192   0.239
## Coping_bCat_c                   0.027   0.334    0.082   0.935
## attend_c                       -0.860   0.396   -2.172   0.035
## painint_b                       0.755   0.133    5.678   0.000
## Coping_bCat_c:attend_c         -0.105   0.114   -0.926   0.359
## --------------------------------------------------------------
cat("\n--- Attendance × Catastrophizing Coping → 6-Month Anxiety ---\n")
## 
## --- Attendance × Catastrophizing Coping → 6-Month Anxiety ---
anxiety_6m_cat_attend <- lm(anxiety_6m ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                              anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_cat_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 8.497, p = 0.000
## R² = 0.410
## Adj. R² = 0.361 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     8.321   2.355    3.534   0.001
## Coping_bCat_c                   0.482   0.244    1.978   0.054
## attend_c                       -0.827   0.315   -2.626   0.012
## anxiety_b                       0.426   0.117    3.633   0.001
## Coping_bCat_c:attend_c         -0.205   0.093   -2.203   0.032
## --------------------------------------------------------------
cat("\n--- Attendance × Catastrophizing Coping → 6-Month Depression ---\n")
## 
## --- Attendance × Catastrophizing Coping → 6-Month Depression ---
depress_6m_cat_attend <- lm(depress_6m ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                              depress_b, data = eaet_data)
print(jtools::summ(depress_6m_cat_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 13.251, p = 0.000
## R² = 0.520
## Adj. R² = 0.480 
## 
## Standard errors: OLS
## --------------------------------------------------------------
##                                  Est.    S.E.   t val.       p
## ---------------------------- -------- ------- -------- -------
## (Intercept)                     4.368   2.795    1.563   0.124
## Coping_bCat_c                   0.067   0.299    0.224   0.824
## attend_c                       -1.119   0.334   -3.345   0.002
## depress_b                       0.652   0.128    5.080   0.000
## Coping_bCat_c:attend_c         -0.256   0.099   -2.575   0.013
## --------------------------------------------------------------
# --- PTSD × Attendance (6-month) ---
cat("\n--- Attendance × PTSD → 6-Month Pain Severity ---\n")
## 
## --- Attendance × PTSD → 6-Month Pain Severity ---
pain_6m_pcl_attend <- lm(meanpain_6m ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                           meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_pcl_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 3.127, p = 0.026
## R² = 0.248
## Adj. R² = 0.168 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.418   1.158    2.088   0.044
## PCL_bT_c                   0.024   0.021    1.162   0.253
## attend_c                  -0.051   0.136   -0.372   0.712
## meanpain_b                 0.365   0.184    1.978   0.055
## PCL_bT_c:attend_c          0.006   0.008    0.713   0.480
## ---------------------------------------------------------
cat("\n--- Attendance × PTSD → 6-Month Pain Interference ---\n")
## 
## --- Attendance × PTSD → 6-Month Pain Interference ---
painint_6m_pcl_attend <- lm(painint_6m ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                              painint_b, data = eaet_data)
print(jtools::summ(painint_6m_pcl_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 11.573, p = 0.000
## R² = 0.549
## Adj. R² = 0.502 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.463   4.091    0.602   0.551
## PCL_bT_c                  -0.001   0.064   -0.015   0.988
## attend_c                  -0.969   0.431   -2.247   0.031
## painint_b                  0.811   0.146    5.544   0.000
## PCL_bT_c:attend_c         -0.004   0.024   -0.158   0.875
## ---------------------------------------------------------
cat("\n--- Attendance × PTSD → 6-Month Anxiety ---\n")
## 
## --- Attendance × PTSD → 6-Month Anxiety ---
anxiety_6m_pcl_attend <- lm(anxiety_6m ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                              anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_pcl_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 14.731, p = 0.000
## R² = 0.608
## Adj. R² = 0.567 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                2.785   2.536    1.099   0.279
## PCL_bT_c                  -0.004   0.048   -0.081   0.936
## attend_c                  -0.524   0.256   -2.045   0.048
## anxiety_b                  0.723   0.128    5.655   0.000
## PCL_bT_c:attend_c         -0.025   0.015   -1.702   0.097
## ---------------------------------------------------------
cat("\n--- Attendance × PTSD → 6-Month Depression ---\n")
## 
## --- Attendance × PTSD → 6-Month Depression ---
depress_6m_pcl_attend <- lm(depress_6m ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                              depress_b, data = eaet_data)
print(jtools::summ(depress_6m_pcl_attend, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 16.418, p = 0.000
## R² = 0.633
## Adj. R² = 0.595 
## 
## Standard errors: OLS
## ---------------------------------------------------------
##                             Est.    S.E.   t val.       p
## ----------------------- -------- ------- -------- -------
## (Intercept)                1.109   2.428    0.457   0.650
## PCL_bT_c                  -0.028   0.050   -0.563   0.577
## attend_c                  -0.827   0.299   -2.763   0.009
## depress_b                  0.776   0.114    6.803   0.000
## PCL_bT_c:attend_c         -0.021   0.018   -1.201   0.237
## ---------------------------------------------------------
# --- PTSD × Working Alliance (6-month) ---
cat("\n--- Working Alliance × PTSD → 6-Month Pain Severity ---\n")
## 
## --- Working Alliance × PTSD → 6-Month Pain Severity ---
pain_6m_pcl_wai <- lm(meanpain_6m ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                        meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_pcl_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 2.982, p = 0.031
## R² = 0.239
## Adj. R² = 0.159 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             2.676   1.187    2.255   0.030
## PCL_bT_c                0.034   0.020    1.697   0.098
## wai_c                  -0.017   0.024   -0.709   0.482
## meanpain_b              0.327   0.188    1.745   0.089
## PCL_bT_c:wai_c         -0.000   0.001   -0.344   0.733
## ------------------------------------------------------
cat("\n--- Working Alliance × PTSD → 6-Month Pain Interference ---\n")
## 
## --- Working Alliance × PTSD → 6-Month Pain Interference ---
painint_6m_pcl_wai <- lm(painint_6m ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                           painint_b, data = eaet_data)
print(jtools::summ(painint_6m_pcl_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 12.693, p = 0.000
## R² = 0.572
## Adj. R² = 0.527 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             4.712   3.873    1.217   0.231
## PCL_bT_c                0.037   0.060    0.614   0.543
## wai_c                  -0.169   0.067   -2.509   0.016
## painint_b               0.730   0.135    5.417   0.000
## PCL_bT_c:wai_c         -0.007   0.004   -1.912   0.063
## ------------------------------------------------------
cat("\n--- Working Alliance × PTSD → 6-Month Anxiety ---\n")
## 
## --- Working Alliance × PTSD → 6-Month Anxiety ---
anxiety_6m_pcl_wai <- lm(anxiety_6m ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                           anxiety_b, data = eaet_data)
print(jtools::summ(anxiety_6m_pcl_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: anxiety_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 15.457, p = 0.000
## R² = 0.619
## Adj. R² = 0.579 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             2.736   2.564    1.067   0.293
## PCL_bT_c               -0.020   0.044   -0.459   0.648
## wai_c                  -0.082   0.043   -1.899   0.065
## anxiety_b               0.724   0.129    5.632   0.000
## PCL_bT_c:wai_c         -0.005   0.002   -2.079   0.044
## ------------------------------------------------------
cat("\n--- Working Alliance × PTSD → 6-Month Depression ---\n")
## 
## --- Working Alliance × PTSD → 6-Month Depression ---
depress_6m_pcl_wai <- lm(depress_6m ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                           depress_b, data = eaet_data)
print(jtools::summ(depress_6m_pcl_wai, digits = 3))
## MODEL INFO:
## Observations: 43 (23 missing obs. deleted)
## Dependent Variable: depress_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,38) = 14.182, p = 0.000
## R² = 0.599
## Adj. R² = 0.557 
## 
## Standard errors: OLS
## ------------------------------------------------------
##                          Est.    S.E.   t val.       p
## -------------------- -------- ------- -------- -------
## (Intercept)             1.012   2.509    0.403   0.689
## PCL_bT_c               -0.037   0.048   -0.772   0.445
## wai_c                  -0.094   0.053   -1.783   0.083
## depress_b               0.765   0.117    6.516   0.000
## PCL_bT_c:wai_c         -0.003   0.003   -1.161   0.253
## ------------------------------------------------------
# --- SOPA × Attendance (6-month, pain outcomes only) ---
cat("\n--- Attendance × SOPA → 6-Month Pain Severity ---\n")
## 
## --- Attendance × SOPA → 6-Month Pain Severity ---
pain_6m_sopa_attend <- lm(meanpain_6m ~ SOPA_bEmot_c + attend_c + SOPA_bEmot_c:attend_c + 
                            meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_sopa_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 4.657, p = 0.003
## R² = 0.275
## Adj. R² = 0.216 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    1.249   0.876    1.426   0.160
## SOPA_bEmot_c                  -0.239   0.133   -1.794   0.079
## attend_c                      -0.154   0.113   -1.357   0.181
## meanpain_b                     0.610   0.147    4.149   0.000
## SOPA_bEmot_c:attend_c         -0.046   0.041   -1.112   0.272
## -------------------------------------------------------------
cat("\n--- Attendance × SOPA → 6-Month Pain Interference ---\n")
## 
## --- Attendance × SOPA → 6-Month Pain Interference ---
painint_6m_sopa_attend <- lm(painint_6m ~ SOPA_bEmot_c + attend_c + SOPA_bEmot_c:attend_c + 
                               painint_b, data = eaet_data)
print(jtools::summ(painint_6m_sopa_attend, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 12.913, p = 0.000
## R² = 0.513
## Adj. R² = 0.473 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    3.740   3.153    1.186   0.241
## SOPA_bEmot_c                  -0.291   0.422   -0.688   0.495
## attend_c                      -0.689   0.378   -1.821   0.075
## painint_b                      0.780   0.114    6.834   0.000
## SOPA_bEmot_c:attend_c         -0.038   0.135   -0.282   0.779
## -------------------------------------------------------------
# --- SOPA × Catastrophizing (6-month, pain outcomes only) ---
cat("\n--- Catastrophizing × SOPA → 6-Month Pain Severity ---\n")
## 
## --- Catastrophizing × SOPA → 6-Month Pain Severity ---
pain_6m_sopa_pcs <- lm(meanpain_6m ~ SOPA_bEmot_c + PCS_bT_c + SOPA_bEmot_c:PCS_bT_c + 
                         meanpain_b, data = eaet_data)
print(jtools::summ(pain_6m_sopa_pcs, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: meanpain_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 5.104, p = 0.002
## R² = 0.294
## Adj. R² = 0.237 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    1.660   1.016    1.635   0.108
## SOPA_bEmot_c                  -0.242   0.145   -1.672   0.101
## PCS_bT_c                       0.023   0.027    0.859   0.395
## meanpain_b                     0.481   0.164    2.937   0.005
## SOPA_bEmot_c:PCS_bT_c          0.014   0.011    1.299   0.200
## -------------------------------------------------------------
cat("\n--- Catastrophizing × SOPA → 6-Month Pain Interference ---\n")
## 
## --- Catastrophizing × SOPA → 6-Month Pain Interference ---
painint_6m_sopa_pcs <- lm(painint_6m ~ SOPA_bEmot_c + PCS_bT_c + SOPA_bEmot_c:PCS_bT_c + 
                            painint_b, data = eaet_data)
print(jtools::summ(painint_6m_sopa_pcs, digits = 3))
## MODEL INFO:
## Observations: 54 (12 missing obs. deleted)
## Dependent Variable: painint_6m
## Type: OLS linear regression 
## 
## MODEL FIT:
## F(4,49) = 11.363, p = 0.000
## R² = 0.481
## Adj. R² = 0.439 
## 
## Standard errors: OLS
## -------------------------------------------------------------
##                                 Est.    S.E.   t val.       p
## --------------------------- -------- ------- -------- -------
## (Intercept)                    5.215   4.053    1.287   0.204
## SOPA_bEmot_c                  -0.528   0.494   -1.069   0.290
## PCS_bT_c                       0.040   0.097    0.411   0.683
## painint_b                      0.714   0.143    4.998   0.000
## SOPA_bEmot_c:PCS_bT_c         -0.008   0.038   -0.213   0.832
## -------------------------------------------------------------
# ===================================================================
# CREATE COMPREHENSIVE RESULTS TABLE (POST-TREATMENT)
# ===================================================================
cat("\n\n=== COMPREHENSIVE RESULTS TABLE: POST-TREATMENT MODERATION MODELS ===\n")
## 
## 
## === COMPREHENSIVE RESULTS TABLE: POST-TREATMENT MODERATION MODELS ===
# Re-run post-treatment models to ensure they're in environment

# Attendance × Anger Discomfort
pain_p_ads_attend <- lm(meanpain_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                          meanpain_b, data = eaet_data)
painint_p_ads_attend <- lm(painint_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                             painint_b, data = eaet_data)
anxiety_p_ads_attend <- lm(anxiety_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                             anxiety_b, data = eaet_data)
depress_p_ads_attend <- lm(depress_p ~ ADS_bT_c + attend_c + ADS_bT_c:attend_c + 
                             depress_b, data = eaet_data)

# Working Alliance × Anger Discomfort
pain_p_ads_wai <- lm(meanpain_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                       meanpain_b, data = eaet_data)
painint_p_ads_wai <- lm(painint_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                          painint_b, data = eaet_data)
anxiety_p_ads_wai <- lm(anxiety_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                          anxiety_b, data = eaet_data)
depress_p_ads_wai <- lm(depress_p ~ ADS_bT_c + wai_c + ADS_bT_c:wai_c + 
                          depress_b, data = eaet_data)

# Attendance × Catastrophizing
pain_p_pcs_attend <- lm(meanpain_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                          meanpain_b, data = eaet_data)
painint_p_pcs_attend <- lm(painint_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                             painint_b, data = eaet_data)
anxiety_p_pcs_attend <- lm(anxiety_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                             anxiety_b, data = eaet_data)
depress_p_pcs_attend <- lm(depress_p ~ PCS_bT_c + attend_c + PCS_bT_c:attend_c + 
                             depress_b, data = eaet_data)

# Emotional Coping × Catastrophizing
pain_p_pcs_eac <- lm(meanpain_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                       meanpain_b, data = eaet_data)
painint_p_pcs_eac <- lm(painint_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                          painint_b, data = eaet_data)
anxiety_p_pcs_eac <- lm(anxiety_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                          anxiety_b, data = eaet_data)
depress_p_pcs_eac <- lm(depress_p ~ PCS_bT_c + EAC_bT_c + PCS_bT_c:EAC_bT_c + 
                          depress_b, data = eaet_data)

# Working Alliance × Ambivalence
pain_p_aeq_wai <- lm(meanpain_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                       meanpain_b, data = eaet_data)
painint_p_aeq_wai <- lm(painint_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                          painint_b, data = eaet_data)
anxiety_p_aeq_wai <- lm(anxiety_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                          anxiety_b, data = eaet_data)
depress_p_aeq_wai <- lm(depress_p ~ AEQ_bT_c + wai_c + AEQ_bT_c:wai_c + 
                          depress_b, data = eaet_data)

# PTSD × Anger Discomfort
pain_p_ads_pcl <- lm(meanpain_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                       meanpain_b, data = eaet_data)
painint_p_ads_pcl <- lm(painint_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                          painint_b, data = eaet_data)
anxiety_p_ads_pcl <- lm(anxiety_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                          anxiety_b, data = eaet_data)
depress_p_ads_pcl <- lm(depress_p ~ ADS_bT_c + PCL_bT_c + ADS_bT_c:PCL_bT_c + 
                          depress_b, data = eaet_data)

# PTSD × Catastrophizing
pain_p_pcs_pcl <- lm(meanpain_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                       meanpain_b, data = eaet_data)
painint_p_pcs_pcl <- lm(painint_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                          painint_b, data = eaet_data)
anxiety_p_pcs_pcl <- lm(anxiety_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                          anxiety_b, data = eaet_data)
depress_p_pcs_pcl <- lm(depress_p ~ PCS_bT_c + PCL_bT_c + PCS_bT_c:PCL_bT_c + 
                          depress_b, data = eaet_data)

# Emotional Expression × Attendance
pain_p_ex_attend <- lm(meanpain_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                         meanpain_b, data = eaet_data)
painint_p_ex_attend <- lm(painint_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                            painint_b, data = eaet_data)
anxiety_p_ex_attend <- lm(anxiety_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                            anxiety_b, data = eaet_data)
depress_p_ex_attend <- lm(depress_p ~ EAC_bEX_c + attend_c + EAC_bEX_c:attend_c + 
                            depress_b, data = eaet_data)

# Emotional Processing × Attendance
pain_p_ep_attend <- lm(meanpain_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                         meanpain_b, data = eaet_data)
painint_p_ep_attend <- lm(painint_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                            painint_b, data = eaet_data)
anxiety_p_ep_attend <- lm(anxiety_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                            anxiety_b, data = eaet_data)
depress_p_ep_attend <- lm(depress_p ~ EAC_bEP_c + attend_c + EAC_bEP_c:attend_c + 
                            depress_b, data = eaet_data)

# Emotional Expression × Working Alliance
pain_p_ex_wai <- lm(meanpain_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                      meanpain_b, data = eaet_data)
painint_p_ex_wai <- lm(painint_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                         painint_b, data = eaet_data)
anxiety_p_ex_wai <- lm(anxiety_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                         anxiety_b, data = eaet_data)
depress_p_ex_wai <- lm(depress_p ~ EAC_bEX_c + wai_c + EAC_bEX_c:wai_c + 
                         depress_b, data = eaet_data)

# Emotional Processing × Working Alliance
pain_p_ep_wai <- lm(meanpain_p ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                      meanpain_b, data = eaet_data)
painint_p_ep_wai <- lm(painint_p ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                         painint_b, data = eaet_data)
anxiety_p_ep_wai <- lm(anxiety_p ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                         anxiety_b, data = eaet_data)
depress_p_ep_wai <- lm(depress_p ~ EAC_bEP_c + wai_c + EAC_bEP_c:wai_c + 
                         depress_b, data = eaet_data)

# Distraction/Avoidance × Attendance
pain_p_da_attend <- lm(meanpain_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                         meanpain_b, data = eaet_data)
painint_p_da_attend <- lm(painint_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                            painint_b, data = eaet_data)
anxiety_p_da_attend <- lm(anxiety_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                            anxiety_b, data = eaet_data)
depress_p_da_attend <- lm(depress_p ~ Coping_bDA_c + attend_c + Coping_bDA_c:attend_c + 
                            depress_b, data = eaet_data)

# Reappraisal × Attendance
pain_p_rps_attend <- lm(meanpain_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                          meanpain_b, data = eaet_data)
painint_p_rps_attend <- lm(painint_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                             painint_b, data = eaet_data)
anxiety_p_rps_attend <- lm(anxiety_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                             anxiety_b, data = eaet_data)
depress_p_rps_attend <- lm(depress_p ~ Coping_bRPS_c + attend_c + Coping_bRPS_c:attend_c + 
                             depress_b, data = eaet_data)

# Catastrophizing Coping × Attendance
pain_p_cat_attend <- lm(meanpain_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                          meanpain_b, data = eaet_data)
painint_p_cat_attend <- lm(painint_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                             painint_b, data = eaet_data)
anxiety_p_cat_attend <- lm(anxiety_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                             anxiety_b, data = eaet_data)
depress_p_cat_attend <- lm(depress_p ~ Coping_bCat_c + attend_c + Coping_bCat_c:attend_c + 
                             depress_b, data = eaet_data)

# PTSD × Attendance
pain_p_pcl_attend <- lm(meanpain_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                          meanpain_b, data = eaet_data)
painint_p_pcl_attend <- lm(painint_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                             painint_b, data = eaet_data)
anxiety_p_pcl_attend <- lm(anxiety_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                             anxiety_b, data = eaet_data)
depress_p_pcl_attend <- lm(depress_p ~ PCL_bT_c + attend_c + PCL_bT_c:attend_c + 
                             depress_b, data = eaet_data)

# PTSD × Working Alliance
pain_p_pcl_wai <- lm(meanpain_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                       meanpain_b, data = eaet_data)
painint_p_pcl_wai <- lm(painint_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                          painint_b, data = eaet_data)
anxiety_p_pcl_wai <- lm(anxiety_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                          anxiety_b, data = eaet_data)
depress_p_pcl_wai <- lm(depress_p ~ PCL_bT_c + wai_c + PCL_bT_c:wai_c + 
                          depress_b, data = eaet_data)

# SOPA × Attendance (pain outcomes only)
pain_p_sopa_attend <- lm(meanpain_p ~ SOPA_bEmot_c + attend_c + SOPA_bEmot_c:attend_c + 
                           meanpain_b, data = eaet_data)
painint_p_sopa_attend <- lm(painint_p ~ SOPA_bEmot_c + attend_c + SOPA_bEmot_c:attend_c + 
                              painint_b, data = eaet_data)

# SOPA × Catastrophizing (pain outcomes only)
pain_p_sopa_pcs <- lm(meanpain_p ~ SOPA_bEmot_c + PCS_bT_c + SOPA_bEmot_c:PCS_bT_c + 
                        meanpain_b, data = eaet_data)
painint_p_sopa_pcs <- lm(painint_p ~ SOPA_bEmot_c + PCS_bT_c + SOPA_bEmot_c:PCS_bT_c + 
                           painint_b, data = eaet_data)

# Create comprehensive results table
results_table <- data.frame(
  Predictor = c(
    rep("Attend × ADS", 4),
    rep("WAI × ADS", 4),
    rep("Attend × PCS", 4),
    rep("EAC × PCS", 4),
    rep("WAI × AEQ", 4),
    rep("PCL × ADS", 4),
    rep("PCL × PCS", 4),
    rep("Attend × EAC_EX", 4),
    rep("Attend × EAC_EP", 4),
    rep("WAI × EAC_EX", 4),
    rep("WAI × EAC_EP", 4),
    rep("Attend × DA", 4),
    rep("Attend × RPS", 4),
    rep("Attend × Cat_Cop", 4),
    rep("Attend × PCL", 4),
    rep("WAI × PCL", 4),
    rep("Attend × SOPA", 2),
    rep("SOPA × PCS", 2)
  ),
  
  Outcome = c(
    rep(c("Pain Severity", "Pain Interference", "Anxiety", "Depression"), 16),
    rep(c("Pain Severity", "Pain Interference"), 2)
  ),
  
  R_squared = c(
    # Attend × ADS
    summary(pain_p_ads_attend)$r.squared, summary(painint_p_ads_attend)$r.squared,
    summary(anxiety_p_ads_attend)$r.squared, summary(depress_p_ads_attend)$r.squared,
    # WAI × ADS
    summary(pain_p_ads_wai)$r.squared, summary(painint_p_ads_wai)$r.squared,
    summary(anxiety_p_ads_wai)$r.squared, summary(depress_p_ads_wai)$r.squared,
    # Attend × PCS
    summary(pain_p_pcs_attend)$r.squared, summary(painint_p_pcs_attend)$r.squared,
    summary(anxiety_p_pcs_attend)$r.squared, summary(depress_p_pcs_attend)$r.squared,
    # EAC × PCS
    summary(pain_p_pcs_eac)$r.squared, summary(painint_p_pcs_eac)$r.squared,
    summary(anxiety_p_pcs_eac)$r.squared, summary(depress_p_pcs_eac)$r.squared,
    # WAI × AEQ
    summary(pain_p_aeq_wai)$r.squared, summary(painint_p_aeq_wai)$r.squared,
    summary(anxiety_p_aeq_wai)$r.squared, summary(depress_p_aeq_wai)$r.squared,
    # PCL × ADS
    summary(pain_p_ads_pcl)$r.squared, summary(painint_p_ads_pcl)$r.squared,
    summary(anxiety_p_ads_pcl)$r.squared, summary(depress_p_ads_pcl)$r.squared,
    # PCL × PCS
    summary(pain_p_pcs_pcl)$r.squared, summary(painint_p_pcs_pcl)$r.squared,
    summary(anxiety_p_pcs_pcl)$r.squared, summary(depress_p_pcs_pcl)$r.squared,
    # Attend × EAC_EX
    summary(pain_p_ex_attend)$r.squared, summary(painint_p_ex_attend)$r.squared,
    summary(anxiety_p_ex_attend)$r.squared, summary(depress_p_ex_attend)$r.squared,
    # Attend × EAC_EP
    summary(pain_p_ep_attend)$r.squared, summary(painint_p_ep_attend)$r.squared,
    summary(anxiety_p_ep_attend)$r.squared, summary(depress_p_ep_attend)$r.squared,
    # WAI × EAC_EX
    summary(pain_p_ex_wai)$r.squared, summary(painint_p_ex_wai)$r.squared,
    summary(anxiety_p_ex_wai)$r.squared, summary(depress_p_ex_wai)$r.squared,
    # WAI × EAC_EP
    summary(pain_p_ep_wai)$r.squared, summary(painint_p_ep_wai)$r.squared,
    summary(anxiety_p_ep_wai)$r.squared, summary(depress_p_ep_wai)$r.squared,
    # Attend × DA
    summary(pain_p_da_attend)$r.squared, summary(painint_p_da_attend)$r.squared,
    summary(anxiety_p_da_attend)$r.squared, summary(depress_p_da_attend)$r.squared,
    # Attend × RPS
    summary(pain_p_rps_attend)$r.squared, summary(painint_p_rps_attend)$r.squared,
    summary(anxiety_p_rps_attend)$r.squared, summary(depress_p_rps_attend)$r.squared,
    # Attend × Cat_Cop
    summary(pain_p_cat_attend)$r.squared, summary(painint_p_cat_attend)$r.squared,
    summary(anxiety_p_cat_attend)$r.squared, summary(depress_p_cat_attend)$r.squared,
    # Attend × PCL
    summary(pain_p_pcl_attend)$r.squared, summary(painint_p_pcl_attend)$r.squared,
    summary(anxiety_p_pcl_attend)$r.squared, summary(depress_p_pcl_attend)$r.squared,
    # WAI × PCL
    summary(pain_p_pcl_wai)$r.squared, summary(painint_p_pcl_wai)$r.squared,
    summary(anxiety_p_pcl_wai)$r.squared, summary(depress_p_pcl_wai)$r.squared,
    # Attend × SOPA (pain only)
    summary(pain_p_sopa_attend)$r.squared, summary(painint_p_sopa_attend)$r.squared,
    # SOPA × PCS (pain only)
    summary(pain_p_sopa_pcs)$r.squared, summary(painint_p_sopa_pcs)$r.squared
  ),
  
  Interaction_B = c(
    # Attend × ADS
    coef(pain_p_ads_attend)["ADS_bT_c:attend_c"],
    coef(painint_p_ads_attend)["ADS_bT_c:attend_c"],
    coef(anxiety_p_ads_attend)["ADS_bT_c:attend_c"],
    coef(depress_p_ads_attend)["ADS_bT_c:attend_c"],
    # WAI × ADS
    coef(pain_p_ads_wai)["ADS_bT_c:wai_c"],
    coef(painint_p_ads_wai)["ADS_bT_c:wai_c"],
    coef(anxiety_p_ads_wai)["ADS_bT_c:wai_c"],
    coef(depress_p_ads_wai)["ADS_bT_c:wai_c"],
    # Attend × PCS
    coef(pain_p_pcs_attend)["PCS_bT_c:attend_c"],
    coef(painint_p_pcs_attend)["PCS_bT_c:attend_c"],
    coef(anxiety_p_pcs_attend)["PCS_bT_c:attend_c"],
    coef(depress_p_pcs_attend)["PCS_bT_c:attend_c"],
    # EAC × PCS
    coef(pain_p_pcs_eac)["PCS_bT_c:EAC_bT_c"],
    coef(painint_p_pcs_eac)["PCS_bT_c:EAC_bT_c"],
    coef(anxiety_p_pcs_eac)["PCS_bT_c:EAC_bT_c"],
    coef(depress_p_pcs_eac)["PCS_bT_c:EAC_bT_c"],
    # WAI × AEQ
    coef(pain_p_aeq_wai)["AEQ_bT_c:wai_c"],
    coef(painint_p_aeq_wai)["AEQ_bT_c:wai_c"],
    coef(anxiety_p_aeq_wai)["AEQ_bT_c:wai_c"],
    coef(depress_p_aeq_wai)["AEQ_bT_c:wai_c"],
    # PCL × ADS
    coef(pain_p_ads_pcl)["ADS_bT_c:PCL_bT_c"],
    coef(painint_p_ads_pcl)["ADS_bT_c:PCL_bT_c"],
    coef(anxiety_p_ads_pcl)["ADS_bT_c:PCL_bT_c"],
    coef(depress_p_ads_pcl)["ADS_bT_c:PCL_bT_c"],
    # PCL × PCS
    coef(pain_p_pcs_pcl)["PCS_bT_c:PCL_bT_c"],
    coef(painint_p_pcs_pcl)["PCS_bT_c:PCL_bT_c"],
    coef(anxiety_p_pcs_pcl)["PCS_bT_c:PCL_bT_c"],
    coef(depress_p_pcs_pcl)["PCS_bT_c:PCL_bT_c"],
    # Attend × EAC_EX
    coef(pain_p_ex_attend)["EAC_bEX_c:attend_c"],
    coef(painint_p_ex_attend)["EAC_bEX_c:attend_c"],
    coef(anxiety_p_ex_attend)["EAC_bEX_c:attend_c"],
    coef(depress_p_ex_attend)["EAC_bEX_c:attend_c"],
    # Attend × EAC_EP
    coef(pain_p_ep_attend)["EAC_bEP_c:attend_c"],
    coef(painint_p_ep_attend)["EAC_bEP_c:attend_c"],
    coef(anxiety_p_ep_attend)["EAC_bEP_c:attend_c"],
    coef(depress_p_ep_attend)["EAC_bEP_c:attend_c"],
    # WAI × EAC_EX
    coef(pain_p_ex_wai)["EAC_bEX_c:wai_c"],
    coef(painint_p_ex_wai)["EAC_bEX_c:wai_c"],
    coef(anxiety_p_ex_wai)["EAC_bEX_c:wai_c"],
    coef(depress_p_ex_wai)["EAC_bEX_c:wai_c"],
    # WAI × EAC_EP
    coef(pain_p_ep_wai)["EAC_bEP_c:wai_c"],
    coef(painint_p_ep_wai)["EAC_bEP_c:wai_c"],
    coef(anxiety_p_ep_wai)["EAC_bEP_c:wai_c"],
    coef(depress_p_ep_wai)["EAC_bEP_c:wai_c"],
    # Attend × DA
    coef(pain_p_da_attend)["Coping_bDA_c:attend_c"],
    coef(painint_p_da_attend)["Coping_bDA_c:attend_c"],
    coef(anxiety_p_da_attend)["Coping_bDA_c:attend_c"],
    coef(depress_p_da_attend)["Coping_bDA_c:attend_c"],
    # Attend × RPS
    coef(pain_p_rps_attend)["Coping_bRPS_c:attend_c"],
    coef(painint_p_rps_attend)["Coping_bRPS_c:attend_c"],
    coef(anxiety_p_rps_attend)["Coping_bRPS_c:attend_c"],
    coef(depress_p_rps_attend)["Coping_bRPS_c:attend_c"],
    # Attend × Cat_Cop
    coef(pain_p_cat_attend)["Coping_bCat_c:attend_c"],
    coef(painint_p_cat_attend)["Coping_bCat_c:attend_c"],
    coef(anxiety_p_cat_attend)["Coping_bCat_c:attend_c"],
    coef(depress_p_cat_attend)["Coping_bCat_c:attend_c"],
    # Attend × PCL
    coef(pain_p_pcl_attend)["PCL_bT_c:attend_c"],
    coef(painint_p_pcl_attend)["PCL_bT_c:attend_c"],
    coef(anxiety_p_pcl_attend)["PCL_bT_c:attend_c"],
    coef(depress_p_pcl_attend)["PCL_bT_c:attend_c"],
    # WAI × PCL
    coef(pain_p_pcl_wai)["PCL_bT_c:wai_c"],
    coef(painint_p_pcl_wai)["PCL_bT_c:wai_c"],
    coef(anxiety_p_pcl_wai)["PCL_bT_c:wai_c"],
    coef(depress_p_pcl_wai)["PCL_bT_c:wai_c"],
    # Attend × SOPA (pain only)
    coef(pain_p_sopa_attend)["SOPA_bEmot_c:attend_c"],
    coef(painint_p_sopa_attend)["SOPA_bEmot_c:attend_c"],
    # SOPA × PCS (pain only)
    coef(pain_p_sopa_pcs)["SOPA_bEmot_c:PCS_bT_c"],
    coef(painint_p_sopa_pcs)["SOPA_bEmot_c:PCS_bT_c"]
  ),
  
  Interaction_p = c(
    # Attend × ADS
    summary(pain_p_ads_attend)$coefficients["ADS_bT_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_ads_attend)$coefficients["ADS_bT_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_ads_attend)$coefficients["ADS_bT_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_ads_attend)$coefficients["ADS_bT_c:attend_c", "Pr(>|t|)"],
    # WAI × ADS
    summary(pain_p_ads_wai)$coefficients["ADS_bT_c:wai_c", "Pr(>|t|)"],
    summary(painint_p_ads_wai)$coefficients["ADS_bT_c:wai_c", "Pr(>|t|)"],
    summary(anxiety_p_ads_wai)$coefficients["ADS_bT_c:wai_c", "Pr(>|t|)"],
    summary(depress_p_ads_wai)$coefficients["ADS_bT_c:wai_c", "Pr(>|t|)"],
    # Attend × PCS
    summary(pain_p_pcs_attend)$coefficients["PCS_bT_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_pcs_attend)$coefficients["PCS_bT_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_pcs_attend)$coefficients["PCS_bT_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_pcs_attend)$coefficients["PCS_bT_c:attend_c", "Pr(>|t|)"],
    # EAC × PCS
    summary(pain_p_pcs_eac)$coefficients["PCS_bT_c:EAC_bT_c", "Pr(>|t|)"],
    summary(painint_p_pcs_eac)$coefficients["PCS_bT_c:EAC_bT_c", "Pr(>|t|)"],
    summary(anxiety_p_pcs_eac)$coefficients["PCS_bT_c:EAC_bT_c", "Pr(>|t|)"],
    summary(depress_p_pcs_eac)$coefficients["PCS_bT_c:EAC_bT_c", "Pr(>|t|)"],
    # WAI × AEQ
    summary(pain_p_aeq_wai)$coefficients["AEQ_bT_c:wai_c", "Pr(>|t|)"],
    summary(painint_p_aeq_wai)$coefficients["AEQ_bT_c:wai_c", "Pr(>|t|)"],
    summary(anxiety_p_aeq_wai)$coefficients["AEQ_bT_c:wai_c", "Pr(>|t|)"],
    summary(depress_p_aeq_wai)$coefficients["AEQ_bT_c:wai_c", "Pr(>|t|)"],
    # PCL × ADS
    summary(pain_p_ads_pcl)$coefficients["ADS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    summary(painint_p_ads_pcl)$coefficients["ADS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    summary(anxiety_p_ads_pcl)$coefficients["ADS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    summary(depress_p_ads_pcl)$coefficients["ADS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    # PCL × PCS
    summary(pain_p_pcs_pcl)$coefficients["PCS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    summary(painint_p_pcs_pcl)$coefficients["PCS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    summary(anxiety_p_pcs_pcl)$coefficients["PCS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    summary(depress_p_pcs_pcl)$coefficients["PCS_bT_c:PCL_bT_c", "Pr(>|t|)"],
    # Attend × EAC_EX
    summary(pain_p_ex_attend)$coefficients["EAC_bEX_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_ex_attend)$coefficients["EAC_bEX_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_ex_attend)$coefficients["EAC_bEX_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_ex_attend)$coefficients["EAC_bEX_c:attend_c", "Pr(>|t|)"],
    # Attend × EAC_EP
    summary(pain_p_ep_attend)$coefficients["EAC_bEP_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_ep_attend)$coefficients["EAC_bEP_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_ep_attend)$coefficients["EAC_bEP_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_ep_attend)$coefficients["EAC_bEP_c:attend_c", "Pr(>|t|)"],
    # WAI × EAC_EX
    summary(pain_p_ex_wai)$coefficients["EAC_bEX_c:wai_c", "Pr(>|t|)"],
    summary(painint_p_ex_wai)$coefficients["EAC_bEX_c:wai_c", "Pr(>|t|)"],
    summary(anxiety_p_ex_wai)$coefficients["EAC_bEX_c:wai_c", "Pr(>|t|)"],
    summary(depress_p_ex_wai)$coefficients["EAC_bEX_c:wai_c", "Pr(>|t|)"],
    # WAI × EAC_EP
    summary(pain_p_ep_wai)$coefficients["EAC_bEP_c:wai_c", "Pr(>|t|)"],
    summary(painint_p_ep_wai)$coefficients["EAC_bEP_c:wai_c", "Pr(>|t|)"],
    summary(anxiety_p_ep_wai)$coefficients["EAC_bEP_c:wai_c", "Pr(>|t|)"],
    summary(depress_p_ep_wai)$coefficients["EAC_bEP_c:wai_c", "Pr(>|t|)"],
    # Attend × DA
    summary(pain_p_da_attend)$coefficients["Coping_bDA_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_da_attend)$coefficients["Coping_bDA_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_da_attend)$coefficients["Coping_bDA_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_da_attend)$coefficients["Coping_bDA_c:attend_c", "Pr(>|t|)"],
    # Attend × RPS
    summary(pain_p_rps_attend)$coefficients["Coping_bRPS_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_rps_attend)$coefficients["Coping_bRPS_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_rps_attend)$coefficients["Coping_bRPS_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_rps_attend)$coefficients["Coping_bRPS_c:attend_c", "Pr(>|t|)"],
    # Attend × Cat_Cop
    summary(pain_p_cat_attend)$coefficients["Coping_bCat_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_cat_attend)$coefficients["Coping_bCat_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_cat_attend)$coefficients["Coping_bCat_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_cat_attend)$coefficients["Coping_bCat_c:attend_c", "Pr(>|t|)"],
    # Attend × PCL
    summary(pain_p_pcl_attend)$coefficients["PCL_bT_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_pcl_attend)$coefficients["PCL_bT_c:attend_c", "Pr(>|t|)"],
    summary(anxiety_p_pcl_attend)$coefficients["PCL_bT_c:attend_c", "Pr(>|t|)"],
    summary(depress_p_pcl_attend)$coefficients["PCL_bT_c:attend_c", "Pr(>|t|)"],
    # WAI × PCL
    summary(pain_p_pcl_wai)$coefficients["PCL_bT_c:wai_c", "Pr(>|t|)"],
    summary(painint_p_pcl_wai)$coefficients["PCL_bT_c:wai_c", "Pr(>|t|)"],
    summary(anxiety_p_pcl_wai)$coefficients["PCL_bT_c:wai_c", "Pr(>|t|)"],
    summary(depress_p_pcl_wai)$coefficients["PCL_bT_c:wai_c", "Pr(>|t|)"],
    # Attend × SOPA (pain only)
    summary(pain_p_sopa_attend)$coefficients["SOPA_bEmot_c:attend_c", "Pr(>|t|)"],
    summary(painint_p_sopa_attend)$coefficients["SOPA_bEmot_c:attend_c", "Pr(>|t|)"],
    # SOPA × PCS (pain only)
    summary(pain_p_sopa_pcs)$coefficients["SOPA_bEmot_c:PCS_bT_c", "Pr(>|t|)"],
    summary(painint_p_sopa_pcs)$coefficients["SOPA_bEmot_c:PCS_bT_c", "Pr(>|t|)"]
  )
)

# Add significance indicator
results_table$Sig <- ifelse(results_table$Interaction_p < .001, "***",
                             ifelse(results_table$Interaction_p < .01, "**",
                                    ifelse(results_table$Interaction_p < .05, "*", "")))

# Round for display
results_table$R_squared <- round(results_table$R_squared, 3)
results_table$Interaction_B <- round(results_table$Interaction_B, 3)
results_table$Interaction_p <- round(results_table$Interaction_p, 4)

print(results_table)
##           Predictor           Outcome R_squared Interaction_B Interaction_p Sig
## 1      Attend × ADS     Pain Severity     0.256        -0.002        0.8730    
## 2      Attend × ADS Pain Interference     0.446        -0.004        0.9278    
## 3      Attend × ADS           Anxiety     0.487        -0.053        0.0852    
## 4      Attend × ADS        Depression     0.480        -0.065        0.0911    
## 5         WAI × ADS     Pain Severity     0.259         0.000        0.8664    
## 6         WAI × ADS Pain Interference     0.495         0.000        0.9726    
## 7         WAI × ADS           Anxiety     0.496        -0.009        0.0750    
## 8         WAI × ADS        Depression     0.492        -0.008        0.2203    
## 9      Attend × PCS     Pain Severity     0.263        -0.005        0.5242    
## 10     Attend × PCS Pain Interference     0.344        -0.028        0.4069    
## 11     Attend × PCS           Anxiety     0.437        -0.059        0.0073  **
## 12     Attend × PCS        Depression     0.476        -0.056        0.0253   *
## 13        EAC × PCS     Pain Severity     0.134         0.002        0.6245    
## 14        EAC × PCS Pain Interference     0.284         0.021        0.2179    
## 15        EAC × PCS           Anxiety     0.378        -0.024        0.0225   *
## 16        EAC × PCS        Depression     0.437        -0.026        0.0338   *
## 17        WAI × AEQ     Pain Severity     0.256        -0.001        0.5662    
## 18        WAI × AEQ Pain Interference     0.473         0.000        0.9426    
## 19        WAI × AEQ           Anxiety     0.413        -0.007        0.0607    
## 20        WAI × AEQ        Depression     0.449        -0.007        0.1445    
## 21        PCL × ADS     Pain Severity     0.226         0.003        0.0784    
## 22        PCL × ADS Pain Interference     0.418         0.006        0.3129    
## 23        PCL × ADS           Anxiety     0.395        -0.003        0.4328    
## 24        PCL × ADS        Depression     0.469        -0.009        0.0748    
## 25        PCL × PCS     Pain Severity     0.190         0.001        0.4837    
## 26        PCL × PCS Pain Interference     0.379        -0.004        0.4428    
## 27        PCL × PCS           Anxiety     0.442         0.001        0.7228    
## 28        PCL × PCS        Depression     0.427        -0.002        0.5588    
## 29  Attend × EAC_EX     Pain Severity     0.262        -0.046        0.2568    
## 30  Attend × EAC_EX Pain Interference     0.356        -0.148        0.3718    
## 31  Attend × EAC_EX           Anxiety     0.381        -0.156        0.1525    
## 32  Attend × EAC_EX        Depression     0.467        -0.232        0.0565    
## 33  Attend × EAC_EP     Pain Severity     0.315        -0.091        0.0282   *
## 34  Attend × EAC_EP Pain Interference     0.342        -0.082        0.6468    
## 35  Attend × EAC_EP           Anxiety     0.388        -0.124        0.2753    
## 36  Attend × EAC_EP        Depression     0.421        -0.133        0.3059    
## 37     WAI × EAC_EX     Pain Severity     0.260        -0.007        0.1391    
## 38     WAI × EAC_EX Pain Interference     0.461        -0.039        0.0367   *
## 39     WAI × EAC_EX           Anxiety     0.410        -0.022        0.0960    
## 40     WAI × EAC_EX        Depression     0.502        -0.034        0.0173   *
## 41     WAI × EAC_EP     Pain Severity     0.234        -0.003        0.4399    
## 42     WAI × EAC_EP Pain Interference     0.397        -0.004        0.8083    
## 43     WAI × EAC_EP           Anxiety     0.386         0.000        0.9852    
## 44     WAI × EAC_EP        Depression     0.430        -0.012        0.3519    
## 45      Attend × DA     Pain Severity     0.251         0.009        0.7432    
## 46      Attend × DA Pain Interference     0.359        -0.010        0.9301    
## 47      Attend × DA           Anxiety     0.362        -0.054        0.4835    
## 48      Attend × DA        Depression     0.503         0.004        0.9610    
## 49     Attend × RPS     Pain Severity     0.246        -0.014        0.7053    
## 50     Attend × RPS Pain Interference     0.398         0.000        0.9981    
## 51     Attend × RPS           Anxiety     0.394        -0.187        0.0582    
## 52     Attend × RPS        Depression     0.447        -0.127        0.2503    
## 53 Attend × Cat_Cop     Pain Severity     0.277        -0.043        0.1899    
## 54 Attend × Cat_Cop Pain Interference     0.351        -0.151        0.2578    
## 55 Attend × Cat_Cop           Anxiety     0.476        -0.281        0.0009 ***
## 56 Attend × Cat_Cop        Depression     0.473        -0.240        0.0150   *
## 57     Attend × PCL     Pain Severity     0.253         0.002        0.7922    
## 58     Attend × PCL Pain Interference     0.386         0.017        0.5285    
## 59     Attend × PCL           Anxiety     0.465        -0.019        0.2238    
## 60     Attend × PCL        Depression     0.469        -0.028        0.1567    
## 61        WAI × PCL     Pain Severity     0.269         0.000        0.8457    
## 62        WAI × PCL Pain Interference     0.450        -0.003        0.4047    
## 63        WAI × PCL           Anxiety     0.502        -0.005        0.0553    
## 64        WAI × PCL        Depression     0.471         0.000        0.9194    
## 65    Attend × SOPA     Pain Severity     0.268         0.013        0.7174    
## 66    Attend × SOPA Pain Interference     0.337         0.029        0.8499    
## 67       SOPA × PCS     Pain Severity     0.178         0.008        0.3824    
## 68       SOPA × PCS Pain Interference     0.258         0.006        0.8728