Link Search Menu Expand Document (external link)

How to do a two-sided hypothesis test for two sample means (in R)

See all solutions.

Task

If we have two samples, x1,,xn and x1,,xm, and we compute the mean of each one, we might want to ask whether the two means seem approximately equal. Or more precisely, is their difference statistically significant at a given level?

Related tasks:

Solution

If we call the mean of the first sample x¯1 and the mean of the second sample x¯2, then this is a two-sided test with the null hypothesis H0:x¯1=x¯2. We choose a value 0α1 as the probability of a Type I error (false positive, finding we should reject H0 when it’s actually true).

1
2
3
4
5
6
7
8
# Replace these first three lines with the values from your situation.
alpha <- 0.10
sample1 <- c( 6, 9, 7, 10, 10, 9 )
sample2 <- c( 12, 14, 10, 17, 9 )

# Run a one-sample t-test and print out alpha, the p value,
# and whether the comparison says to reject the null hypothesis.
t.test( sample1, sample2, conf.level=1-alpha )
	Welch Two Sample t-test

data:  sample1 and sample2
t = -2.4617, df = 5.7201, p-value = 0.05097
alternative hypothesis: true difference in means is not equal to 0
90 percent confidence interval:
 -7.0057683 -0.7942317
sample estimates:
mean of x mean of y 
      8.5      12.4 

Although we can deduce the answer to our question from the above output, by comparing the p value with α manually, we can also ask R to do it.

1
2
3
# Is there enough evidence to reject the null hypothesis?
result <- t.test( sample1, sample2, conf.level=1-alpha )
result$p.value < alpha
[1] TRUE

In this case, the samples give us enough evidence to reject the null hypothesis at the α=0.10 level. The data suggest that x¯1x¯2.

Here we did not assume that the two samples had equal variance. If in your case they do, you can pass the parameter var.equal=TRUE to t.test.

Content last modified on 24 July 2023.

See a problem? Tell us or edit the source.

Contributed by Nathan Carter (ncarter@bentley.edu)