How to Conduct a Sobel Test in R

Spread the love

Sobel’s test is a popular statistical tool for examining the mediation effect in research designs. The mediation model is a conceptual framework that outlines the process that underlies an observed relationship between an independent variable and a dependent variable via the inclusion of a third variable, known as a mediator variable.

For instance, imagine a scenario where you’re researching the effects of a training program (independent variable) on employees’ productivity (dependent variable). You might hypothesize that the training program increases employees’ skills (mediator), which in turn improves their productivity.

The Sobel test is one method of testing whether the relationship between the training program and productivity is significantly reduced after accounting for the influence of increased skills, thus asserting the mediation effect. It measures the indirect effect of the independent variable on the dependent variable through the mediator.

This article aims to provide an exhaustive guide on how to conduct a Sobel test in R, including an introduction to the Sobel test, setting up the R environment, installing necessary packages, running the Sobel test, and interpreting the results.

Setting Up Your R Environment

Before we proceed with the Sobel test and its implementation in R, let’s install and load the necessary packages. You can install the packages using the command install.packages(), and load them using the library() function.

install.packages(c("psych", "mediation"))

In this tutorial, we’ll use the psych package for its descriptive statistics functions, and the mediation package for the Sobel test.

Understanding the Dataset

For the purpose of this tutorial, let’s assume we have a dataset named employee_data. This dataset contains the following columns:

  1. Training_Hours: Hours of training provided to each employee (independent variable)
  2. Skills_Level: Skills level of each employee on a scale of 1-10 (mediator)
  3. Productivity: Productivity of each employee on a scale of 1-10 (dependent variable)

Running a Sobel Test in R

In order to conduct the Sobel test in R, we first need to conduct regression analyses:

Step 1 – Regress the mediator (Skills_Level) on the independent variable (Training_Hours).

model1 <- lm(Skills_Level ~ Training_Hours, data = employee_data)

Step 2: Regress the dependent variable (Productivity) on both the independent variable (Training_Hours) and the mediator (Skills_Level).

model2 <- lm(Productivity ~ Training_Hours + Skills_Level, data = employee_data)

Once we have our regression models, we can perform the Sobel test using the sobel() function from the mediation package:

sobel_result <- sobel(model1, model2)

The sobel() function takes the two regression models as input and provides the results of the Sobel test. The print() function is used to display these results.

Interpreting the Results

The output of the Sobel test in R includes two key components:

  1. Sobel Test Statistic: This statistic follows a standard normal distribution. It is used to determine whether the indirect effect of the independent variable on the dependent variable through the mediator is significant.
  2. P-value: The p-value is a statistical measure that helps you determine whether to accept or reject the null hypothesis. The null hypothesis for the Sobel test is that there is no mediation effect. If the p-value is less than or equal to 0.05, you reject the null hypothesis and conclude that there is a significant mediation effect. Conversely, if the p-value is greater than 0.05, you fail to reject the null hypothesis and conclude that there is not a significant mediation effect.

Cautionary Notes on the Sobel Test

While the Sobel test can be a powerful tool for examining the mediation effect, it has its limitations. One key limitation is that it assumes the indirect effect to be normally distributed, which is often not the case in small to moderate-sized samples. To overcome this limitation, you might consider using a bootstrap method to test for mediation, which is a non-parametric approach and does not assume a normal distribution.

Additionally, like other statistical analyses, it is essential to meet the assumptions underlying the mediation model and Sobel test to produce valid results. These assumptions include linearity, no unmeasured confounding variables, and temporal precedence (the independent variable comes before the mediator, and the mediator comes before the dependent variable).


In conclusion, the Sobel test is a useful tool for understanding the indirect relationship between an independent and a dependent variable. Although the test has certain limitations, it can be a powerful means to uncover the processes underlying observed relationships in your data.

Conducting a Sobel test in R is relatively straightforward, thanks to the rich ecosystem of packages available in the language. By running a couple of regression models and using the sobel() function, you can quickly determine whether there is a significant mediation effect present in your data.

Posted in RTagged

Leave a Reply