My variables (all continuous):

  • IVs: Secondary Traumatic Stress and Vicarious Traumatization
  • DV: PTSD
  • Mediator: Social Support

I checked the correlations between the variables and they are all significant at the 0.01 level (2-tailed).

I had a look at this video (duration 3'49"), but I fail to understand how the author finds out the mediation (I was expecting a special field for the mediator, a little bit like the covariate in an ANCOVA). The statistical result fails, in my mind, to show the mediation.

This document in German, on page 14, however, shows that in SPSS if we do:

  1. Analyze
  2. Generali Linear Model
  3. Univariate…
  4. Dependent Variable: PTSD
  5. Fixed Factor(s): STSS, VTS
  6. Covariate(s): Social Support

Results show statistically significant (p < .05) sources as follows:

  • Corrected Model
  • Intercept
  • STSS

Marginally significant (p = [.05; .10]):

  • Social Support

Non significant (p > .10):

  • VTS
  • STSS * VTS

Adjusted R Squared = .416

But I cannot see the correlations.

Anyone has any suggestions on how to do a Multiple Linear Regression with meditation in SPSS (or R/RStudio if need be)?


1 Answer 1


In fact what seems to be needed in this case is a latent variable analysis or lavaan. In R/RStudio it would be as follows (all the sources are in the code). The database is an SPSS .sav file:

#lavaan: latent variable analysis (i.e., multiple linear regression with mediation)
#(Source: http://lavaan.ugent.be/tutorial/mediation.html)

#Verify that necessary packages are installed: install them if not
#(Source: https://stackoverflow.com/questions/4090169/elegant-way-to-check-for-missing-packages-and-install-them)
list.of.packages <- c("lavaan", "sem")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)

#Load libraries
#(Source: https://groups.google.com/forum/#!msg/lavaan/EOuhhbZXTTw/h8DcscHrBgAJ)

#Set directory

#Import from SPSS
#(Source: https://datascienceplus.com/get-your-data-into-r/)
hypo2 <- read.spss("SPSS_File_Name.sav", use.value.label=TRUE, to.data.frame=TRUE)

#lavaan code
#(Source: http://lavaan.ugent.be/tutorial/mediation.html)
STSS <- hypo2$STSS_Mean #STSS = predictor
SocialSupport <- hypo2$JCQ_SocialSupport_Scale #SocialSupport = Mediator
PTSD <- hypo2$PCL5_Mean #PTSD = Dependent Variable
Data <- data.frame(STSS = STSS, PTSD = PTSD, SocialSupport = SocialSupport)
model <- ' # direct effect
             PTSD ~ c*STSS
           # mediator
             SocialSupport ~ a*STSS
             PTSD ~ b*SocialSupport
           # indirect effect (a*b)
             ab := a*b
           # total effect
             total := c + (a*b)
fit <- sem(model, data = Data)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.