How to Conduct a Paired Samples T-Test in Python

Spread the love


The paired samples t-test, also known as the dependent or repeated measures t-test, is a statistical procedure used to determine whether the mean difference between two sets of observations is zero. It’s often used in scenarios where participants are measured at two different time points, such as before and after a treatment, or when participants are exposed to two different conditions. The paired t-test is a parametric test that assumes the differences of the paired observations are normally distributed.

In this article, we will demonstrate how to perform a paired samples t-test in Python using the SciPy library.

Hypothetical Scenario

Let’s say you are a researcher studying the effects of a new study technique on students’ performance. You conduct a test on 30 students before and after they apply the new technique for a period of time, recording their scores in each test. The null hypothesis (H0) is that there is no difference in scores before and after the application of the study technique.

Implementing the Paired Samples T-Test:

Start by importing the necessary libraries

import numpy as np
import pandas as pd
from scipy.stats import ttest_rel

Assuming you have stored the test scores in two Python lists:

before_scores = [56, 58, 61, 62, 56, 57, 59, 61, 60, 62, 64, 66, 58, 59, 57, 63, 65, 67, 59, 62, 64, 66, 68, 65, 67, 66, 64, 62, 60, 59]
after_scores = [61, 63, 65, 67, 61, 62, 64, 66, 65, 67, 69, 71, 63, 64, 62, 68, 70, 72, 64, 67, 69, 71, 73, 70, 72, 71, 69, 67, 65, 64]

You can perform the paired samples t-test using the ttest_rel function from scipy.stats:

t_stat, p_value = ttest_rel(before_scores, after_scores)

The ttest_rel function computes the t-test on TWO RELATED samples of scores, a and b. This is a two-sided test for the null hypothesis that 2 related or repeated samples have identical average (expected) values.

Interpreting the Results

After performing the t-test, you can print out the results.

print('T-statistic:', t_stat)
print('P-value:', p_value)

The T-statistic is the calculated difference represented in units of standard error, and the p-value is a probability that measures the evidence against your null hypothesis. If the p-value is less than your significance level (commonly 0.05), you reject the null hypothesis and infer that the study technique had a significant effect on the students’ performance.


The paired samples t-test is a powerful tool to compare the means of two related groups and determine whether there is a statistically significant difference between these means. Python, along with the SciPy library, provides an efficient and user-friendly environment for conducting this statistical test.

One thing to keep in mind is that the paired samples t-test assumes the differences between pairs follow a normal distribution. It’s always a good idea to check this assumption with your data by using a normality test (like the Shapiro-Wilk test) or by graphically inspecting the data with a histogram or a Q-Q plot.

Moreover, as with all statistical methods, the paired samples t-test is just a tool, and it’s effectiveness largely depends on the experimental design, the validity of your data, and the appropriateness of the test for your specific research question. Always remember to consider these aspects when interpreting your results.

Leave a Reply