πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Mediation and Moderation Analysis

StatisticsCausal Analysis🟒 Free Lesson

Advertisement

Mediation and Moderation Analysis

Statistics

Understanding How and When Effects Occur

Mediation reveals the mechanism through which X affects Y, while moderation identifies boundary conditions. Together they transform simple causal questions into nuanced explanations of process and context.

  • Psychology β€” Identify psychological mechanisms that explain therapeutic interventions

  • Management β€” Determine whether leadership style effects depend on team culture

  • Public Health β€” Understand how education affects health through behavioral pathways

Mediation answers how; moderation answers when β€” both are essential for complete understanding.


Mediation explains how an effect occurs (the mechanism), while moderation explains when or for whom an effect occurs (the boundary condition).

DfMediation

A variable MM mediates the effect of XX on YY if XX influences MM, which in turn influences YY. The mediator is the mechanism through which XX affects YY.

DfModeration

A variable WW moderates the effect of XX on YY if the strength or direction of the X→YX \to Y relationship depends on the level of WW.


Mediation Model

Mediation Path Equations

M=aX+e1M = aX + e_1

Here,

  • aa=Effect of X on mediator M
  • bb=Effect of M on Y (controlling for X)
  • cβ€²c'=Direct effect of X on Y
  • abab=Indirect (mediated) effect
  • cc=Total effect: $c = c' + ab$

Types of Effects

| Effect | Definition | Formula |

|--------|-----------|---------|

| Total effect | Overall effect of X on Y | cc |

| Direct effect | Effect of X on Y not through M | cβ€²c' |

| Indirect effect | Effect of X on Y through M | abab |

Complete vs Partial Mediation

  • Complete mediation: cβ€²=0c' = 0 (all effect is through M)

  • Partial mediation: cβ€²β‰ 0c' \neq 0 (some effect direct, some through M)


Testing the Indirect Effect

Sobel Test

Sobel Test Statistic

z=abb2sa2+a2sb2z = \frac{ab}{\sqrt{b^2 s_a^2 + a^2 s_b^2}}

Here,

  • a,ba, b=Path coefficients
  • sa,sbs_a, s_b=Standard errors of a and b

Sobel Test Limitation

The Sobel test assumes the product abab is normally distributed, which is often not true in practice. Bootstrapping is preferred.

Bootstrapping (Preferred)

Generate bootstrap samples, compute abab for each, and construct a confidence interval for the indirect effect. If the CI excludes zero, mediation is significant.


Moderation (Interaction)

Moderation Model

Y=b0+b1X+b2W+b3(XΓ—W)+eY = b_0 + b_1 X + b_2 W + b_3 (X \times W) + e

Here,

  • b1b_1=Main effect of X
  • b2b_2=Main effect of W (moderator)
  • b3b_3=Interaction effect (moderation)
  • XΓ—WX \times W=Product term (interaction)

Interpreting Interactions

If b3β‰ 0b_3 \neq 0, the effect of XX on YY depends on WW. Plot the relationship at different levels of WW (e.g., Β±1 SD) to visualize the interaction.


Mediated Moderation vs Moderated Mediation

| Concept | Definition |

|---------|-----------|

| Mediated moderation | The interaction effect on Y is explained through a mediator |

| Moderated mediation | The indirect effect (mediation) varies across levels of a moderator |


Python Implementation


import numpy as np

import pandas as pd

import statsmodels.api as sm

from statsmodels.formula.api import ols

import matplotlib.pyplot as plt



np.random.seed(42)



# Simulate mediation data

n = 500

X = np.random.randn(n)

M = 0.6 * X + np.random.randn(n)

Y = 0.4 * M + 0.2 * X + np.random.randn(n)



# Path analysis

# Path a: X -> M

model_m = ols('M ~ X', data=pd.DataFrame({'X': X, 'M': M})).fit()

a = model_m.params['X']

se_a = model_m.bse['X']



# Path b: M -> Y (controlling for X)

model_y = ols('Y ~ X + M', data=pd.DataFrame({'X': X, 'M': M, 'Y': Y})).fit()

b = model_y.params['M']

se_b = model_y.bse['M']

c_prime = model_y.params['X']

c_total = ols('Y ~ X', data=pd.DataFrame({'X': X, 'Y': Y})).fit().params['X']



indirect = a * b

direct = c_prime

total = c_total



print(f"Path a: {a:.3f} (SE: {se_a:.3f})")

print(f"Path b: {b:.3f} (SE: {se_b:.3f})")

print(f"Direct effect: {direct:.3f}")

print(f"Indirect effect: {indirect:.3f}")

print(f"Total effect: {total:.3f}")

print(f"Proportion mediated: {indirect/total:.1%}")



# Bootstrap CI for indirect effect

n_boot = 5000

indirect_boots = []

for _ in range(n_boot):

    idx = np.random.choice(n, n, replace=True)

    X_b, M_b, Y_b = X[idx], M[idx], Y[idx]

    a_b = sm.OLS(M_b, sm.add_constant(X_b)).fit().params[1]

    b_b = sm.OLS(Y_b, np.column_stack([X_b, M_b])).fit().params[1]

    indirect_boots.append(a_b * b_b)



ci_lower = np.percentile(indirect_boots, 2.5)

ci_upper = np.percentile(indirect_boots, 97.5)

print(f"\nBootstrap 95% CI for indirect effect: [{ci_lower:.3f}, {ci_upper:.3f}]")

print(f"Significant: {'Yes' if ci_lower > 0 or ci_upper < 0 else 'No'}")



# Moderation

W = np.random.randn(n)

Y_mod = 0.3 * X + 0.4 * W + 0.25 * X * W + np.random.randn(n)

model_mod = ols('Y ~ X * W', data=pd.DataFrame({'X': X, 'W': W, 'Y': Y_mod})).fit()

print(f"\nModeration model:")

print(model_mod.summary().tables[1])

Worked Example

Example: Therapy -> Coping -> Depression

Does coping mediate the effect of therapy on depression?

  • X: Therapy (1=treatment, 0=control)

  • M: Coping skills score

  • Y: Depression score

| Path | Estimate | SE | p-value |

|------|----------|-----|---------|

| a (Therapy -> Coping) | 1.85 | 0.32 | < 0.001 |

| b (Coping -> Depression) | -0.42 | 0.08 | < 0.001 |

| c' (Direct) | -1.23 | 0.41 | 0.003 |

| ab (Indirect) | -0.777 | β€” | β€” |

Bootstrap 95% CI: [-1.21, -0.41] (excludes zero -> significant mediation)

Conclusion: Coping significantly mediates the therapy effect. 39% of the total effect is mediated through coping skills.


Key Takeaways

Summary: Mediation and Moderation

  • Mediation explains how X affects Y (through M)

  • Moderation explains when the X -> Y effect changes (depending on W)

  • The indirect effect (abab) quantifies mediation

  • Use bootstrapping for the indirect effect (preferred over Sobel test)

  • Moderation is tested via interaction terms: XΓ—WX \times W

  • Always mean-center variables before creating interaction terms

  • Mediated moderation and moderated mediation combine both concepts


Related Topics

⭐

Premium Content

Mediation and Moderation Analysis

Unlock this lesson and 900+ advanced tutorials with a Premium plan.

🎯End-to-end Projects
πŸ’ΌInterview Prep
πŸ“œCertificates
🀝Community Access

Already a member? Log in

Need Expert Statistics Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement