How to Perform a Bonferroni Correction in R

Spread the love

The Bonferroni correction is a widely-used method for adjusting p-values in multiple comparisons, effectively controlling the familywise error rate (FWER). This correction is straightforward to calculate and provides a conservative adjustment, making it a favored choice among researchers. In this article, we’ll explore how to perform the Bonferroni correction using the R programming language.

Table of Contents

  1. Introduction to Bonferroni Correction
  2. Data Preparation
  3. Performing Basic Hypothesis Tests in R
  4. Implementing Bonferroni Correction
  5. Advanced Usage: Bonferroni in ANOVA, t-tests, and Correlations
  6. Bonferroni Correction in R Packages
  7. Interpretation and Drawbacks
  8. Conclusion

1. Introduction to Bonferroni Correction

The Bonferroni correction is used to mitigate the risks of obtaining false-positive results when performing multiple statistical tests. It is particularly useful when conducting research involving multiple hypotheses testing, such as multiple t-tests, correlations, or any other tests where multiple p-values are calculated.


The Bonferroni correction adjusts the p-value threshold (α) according to the number of tests (n) performed:

2. Data Preparation

For this guide, we’ll assume you have a dataset with multiple variables you want to compare. Make sure the data is properly formatted and imported into R.

# Sample code to read data into R
data <- read.csv("your_dataset.csv")

3. Performing Basic Hypothesis Tests in R

Let’s assume we are running three separate t-tests:

t1 <- t.test(data$var1, data$var2)
t2 <- t.test(data$var1, data$var3)
t3 <- t.test(data$var2, data$var3)

# Extract p-values
p1 <- t1$p.value
p2 <- t2$p.value
p3 <- t3$p.value

4. Implementing Bonferroni Correction

The Bonferroni correction is simple to implement manually in R.

# Number of tests
n_tests <- 3

# Original alpha level
alpha <- 0.05

# Bonferroni adjusted alpha level
adjusted_alpha <- alpha / n_tests

# Adjusted p-values
adjusted_p1 <- min(1, p1 * n_tests)
adjusted_p2 <- min(1, p2 * n_tests)
adjusted_p3 <- min(1, p3 * n_tests)

5. Advanced Usage: Bonferroni in ANOVA, t-tests, and Correlations

The Bonferroni correction is often used in more complex statistical tests, like ANOVA or multiple correlations.


# Perform ANOVA
anova_result <- aov(var1 ~ factor1 * factor2, data = data)

# Perform multiple comparisons using Bonferroni correction
pairwise_results <- TukeyHSD(anova_result)
pairwise_results <- summary(pairwise_results, conf.level = 1 - adjusted_alpha)

Multiple Correlations

# Compute correlation matrix
cor_matrix <- cor(data)

# Compute p-value matrix
p_matrix <- cor.mtest(data, conf.level = 1 - adjusted_alpha)$p

6. Bonferroni Correction in R Packages

Several R packages offer in-built Bonferroni correction, like p.adjust in the base package for manual adjustment, or TukeyHSD for ANOVA models.

# Using p.adjust for manual adjustment
adjusted_p_values <- p.adjust(c(p1, p2, p3), method = "bonferroni")

7. Interpretation and Drawbacks


After the Bonferroni correction, p-values less than the adjusted alpha level are considered statistically significant.


  1. Conservativeness: The Bonferroni correction is conservative, which means it reduces the chance of detecting a real effect (Type II errors).
  2. Not Suitable for Correlated Tests: The correction assumes that all tests are independent, which may not always be the case.

8. Conclusion

The Bonferroni correction is a simple yet effective method to adjust for multiple comparisons in statistical testing. It’s straightforward to implement in R, whether manually or through existing functions. While it has its limitations, including its conservative nature, it remains a useful tool for researchers aiming to maintain rigor in their analyses. By following the steps outlined in this guide, you can confidently adjust your p-values for multiple comparisons in R.

Posted in RTagged

Leave a Reply