# How to do a two-sided hypothesis test for a sample mean (in Python, using SciPy)

See all solutions.

Say we have a population whose mean $\mu$ is known. We take a sample $x_1,\ldots,x_n$ and compute its mean, $\bar x$. We then ask whether this sample is significantly different from the population at large, that is, is $\mu=\bar x$?

## Solution

This is a two-sided test with the null hypothesis $H_0:\mu=\bar x$. We choose a value $0\leq\alpha\leq1$ as the probability of a Type I error (false positive, finding we should reject $H_0$ when it’s actually true).

1
2
3
4
5
6
7
8
9
10
11
12
from scipy import stats

# Replace these first three lines with the values from your situation.
alpha = 0.05
pop_mean = 10
sample = [ 9, 12, 14, 8, 13 ]

# Run a one-sample t-test and print out alpha, the p value,
# and whether the comparison says to reject the null hypothesis.
t_statistic, p_value = stats.ttest_1samp( sample, pop_mean )
reject_H0 = p_value < alpha
alpha, p_value, reject_H0

1
(0.05, 0.35845634462296455, False)


In this case, the sample does not give us enough information to reject the null hypothesis. We would continue to assume that the sample is like the population, $\mu=\bar x$.