A webR tutorial

Does the REACH treatment improve revenge motivations?

An image of a voodoo doll.

Background

In the REACH Forgiveness Study, researchers examined whether a brief self-directed forgiveness workbook intervention could improve forgiveness and mental health outcomes. The study was conducted across multiple countries with 4,598 participants.

In this activity, you’ll analyze whether the REACH forgiveness intervention can change revenge motivations and whether any treatment effect depends on baseline revenge levels.

Research Questions:

  1. Does the REACH intervention reduce revenge motivations at follow-up?
  2. Does the treatment effect depend on baseline revenge motivation levels?

Your tasks:

  1. Import and prepare the data
  2. Create descriptive statistics
  3. Fit three sequential models
  4. Visualize the interaction
  5. Create a Johnson-Neyman plot
  6. Create a comparison table of all three models

Step 1: Import and Prepare Data

Import the REACH data and create the revenge motivation scales for T1 (baseline) and T2 (follow-up).

Revenge items

After describing a past event in which they were hurt by another person, participants responded to each item by reflecting on the person who had hurt them. Items were rated using a five-point response format (1 = Strongly disagree; 5 = Strongly agree). The five revenge items are:

  1. I’ll make him or her pay. (t1_trim1, t2_trim1)
  2. I wish that something bad would happen to him/her. (t1_trim2, t2_trim2)
  3. I want him/her to get what he/she deserves. (t1_trim3, t2_trim3)
  4. I’m going to get even. (t1_trim4, t2_trim4)
  5. I want to see him/her hurt and miserable. (t1_trim5, t2_trim5)

Your tasks:

  1. Create t1_trim_revenge and t2_trim_revenge scales using items 1-5 of the TRIM inventory.
  2. Select site, age, treat, and the two newly created revenge scales.
  3. Remove missing cases with drop_na().
  4. Center the T1 revenge scale and age at their means (create .c versions).
  • Use rowMeans() with pick() and num_range() to create scales.
  • Use variable.c = variable - mean(variable) to center at mean.

Step 2: Descriptive Statistics

Create a descriptive statistics table showing T1 revenge, T2 revenge, age, and site by treatment condition. Use the tbl_summary() function from the gtsummary package.

Question

Do the treatment and control groups appear balanced on revenge at baseline (T1)? What does this tell you about the randomization? How about at T2? What does this tell you about a possible treatment effect?

Step 3: Fit Model 1 (Control Variables Only)

Fit a linear model predicting T2 revenge from baseline revenge, age, and site (no treatment yet). Request 95% CIs for the effects. Call the model: mod1.

  • Use lm() to fit the model
  • Use tidy() and glance() to get output, request 95% CIs
Question

What percentage of variance in T2 revenge is explained by baseline revenge, age, and site?

Step 4: Fit Model 2 (Add Treatment Effect)

Add treatment to the model to test whether the intervention reduces revenge motivations. Call the model: mod2.

Add treat to the prior model.

Question

What is the estimated treatment effect? Does the treatment reduce revenge motivations? Is the effect reliably different from zero (i.e., no difference between the groups)? Look at whether the 95% CI includes zero.

Step 5: Fit Model 3 (Add Interaction)

Test whether the treatment effect depends on baseline revenge motivation levels. Call the model: mod3.

  • Use * to include interaction and main effects: mod3 <- lm(outcome ~ site + age.c + variable1 * variable2, data = df)
Question

Does the 95% CI for the interaction between baseline revenge and treatment include 0? What does this tell you about whether the treatment effect varies by baseline level?

Step 6: Compare All Three Models

Click Run Code on the code chunk below to create a nicely formatted table of the results from the three models.

Question

How much does R² increase when you add the interaction term (Model 3 vs Model 2)?

Step 7: Visualize the Interaction (Full Range)

Create a visualization showing predicted T2 revenge across the full range of baseline revenge for both treatment groups.

Question

Describe the pattern you see. Are the lines parallel or do they diverge? What does this tell you about the interaction?

Step 8: Johnson-Neyman Plot

Create a Johnson-Neyman plot to identify where the treatment effect is reliably different from zero.

Question

At which baseline revenge levels is the treatment effect reliably different from zero (i.e., where does the confidence interval NOT overlap the red line)? For whom does the intervention work best?