How to Perform One Sample & Two Sample Z-Tests in R


You can use the z.test() function from the BSDA package to perform one sample and two sample z-tests in R.

This function uses the following basic syntax:

z.test(x, y, alternative='two.sided', mu=0, sigma.x=NULL, sigma.y=NULL,conf.level=.95)

where:

  • x: values for the first sample
  • y: values for the second sample (if performing a two sample z-test)
  • alternative: the alternative hypothesis (‘greater’, ‘less’, ‘two.sided’)
  • mu: mean under the null or mean difference (in two sample case)
  • sigma.x: population standard deviation of first sample
  • sigma.y: population standard deviation of second sample
  • conf.level: confidence level to use

The following examples shows how to use this function in practice.

Example 1: One Sample Z-Test in R

Suppose the IQ in a certain population is normally distributed with a mean of μ = 100 and standard deviation of σ = 15.

A scientist wants to know if a new medication affects IQ levels, so she recruits 20 patients to use it for one month and records their IQ levels at the end of the month.

The following code shows how to perform a one sample z-test in R to determine if the new medication causes a significant difference in IQ levels:

library(BSDA)

#enter IQ levels for 20 patients
data = c(88, 92, 94, 94, 96, 97, 97, 97, 99, 99,
         105, 109, 109, 109, 110, 112, 112, 113, 114, 115)

#perform one sample z-test
z.test(data, mu=100, sigma.x=15)

	One-sample z-Test

data:  data
z = 0.90933, p-value = 0.3632
alternative hypothesis: true mean is not equal to 100
95 percent confidence interval:
  96.47608 109.62392
sample estimates:
mean of x 
   103.05 

The test statistic for the one sample z-test is 0.90933 and the corresponding p-value is 0.3632.

Since this p-value is not less than .05, we do not have sufficient evidence to reject the null hypothesis.

Thus, we conclude that the new medication does not significantly affect IQ level.

Example 2: Two Sample Z-Test in R

Suppose the IQ levels among individuals in two different cities are known to be normally distributed each with population standard deviations of 15.

A scientist wants to know if the mean IQ level between individuals in city A and city B are different, so she selects a simple random sample of  20 individuals from each city and records their IQ levels.

The following code shows how to perform a two sample z-test in R to determine if the mean IQ level is different between the two cities:

library(BSDA)

#enter IQ levels for 20 individuals from each city
cityA = c(82, 84, 85, 89, 91, 91, 92, 94, 99, 99,
         105, 109, 109, 109, 110, 112, 112, 113, 114, 114)

cityB = c(90, 91, 91, 91, 95, 95, 99, 99, 108, 109,
         109, 114, 115, 116, 117, 117, 128, 129, 130, 133)

#perform two sample z-test
z.test(x=cityA, y=cityB, mu=0, sigma.x=15, sigma.y=15)

	Two-sample z-Test

data:  cityA and cityB
z = -1.7182, p-value = 0.08577
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -17.446925   1.146925
sample estimates:
mean of x mean of y 
   100.65    108.80

The test statistic for the two sample z-test is -1.7182 and the corresponding p-value is 0.08577

Since this p-value is not less than .05, we do not have sufficient evidence to reject the null hypothesis.

Thus, we conclude that the mean IQ level is not significantly different between the two cities.

Additional Resources

The following tutorials explain how to perform other common statistical tests in R:

How to Perform a One Proportion Z-Test
How to Perform a Paired Samples t-test in R
How to Perform Welch’s t-test in R

Leave a Reply

Your email address will not be published.