20.7 C
London
Monday, June 2, 2025
HomePythonANOVA in PythonHow to Perform Dunn’s Test in Python

How to Perform Dunn’s Test in Python

Related stories

Learn About Opening an Automobile Repair Shop in India

Starting a car repair shop is quite a good...

Unlocking the Power: Embracing the Benefits of Tax-Free Investing

  Unlocking the Power: Embracing the Benefits of Tax-Free Investing For...

Income Splitting in Canada for 2023

  Income Splitting in Canada for 2023 The federal government’s expanded...

Can I Deduct Home Office Expenses on my Tax Return 2023?

Can I Deduct Home Office Expenses on my Tax...

Canadian Tax – Personal Tax Deadline 2022

  Canadian Tax – Personal Tax Deadline 2022 Resources and Tools...

A Kruskal-Wallis test is used to determine whether or not there is a statistically significant difference between the medians of three or more independent groups. It is considered to be the non-parametric equivalent of the One-Way ANOVA.

If the results of a Kruskal-Wallis test are statistically significant, then it’s appropriate to conduct Dunn’s Test to determine exactly which groups are different.

This tutorial explains how to perform Dunn’s Test in Python.

Example: Dunn’s Test in Python

Researchers want to know if three different fertilizers lead to different levels of plant growth. They randomly select 30 different plants and split them into three groups of 10, applying a different fertilizer to each group. At the end of one month they measure the height of each plant.

Upon performing a Kruskal-Wallis Test, they find that the overall p-value is statistically significant, which means the median growth is the not same across the three groups. Next, they perform Dunn’s test to determine exactly which groups are different.

To perform Dunn’s test in Python, we can use the posthoc_dunn() function from the scikit-posthocs library.

The following code shows how to use this function:

Step 1: Install scikit-posthocs.

First we need to install the scikit-posthocs library:

pip install scikit-posthocs

Step 2: Perform Dunn’s test.

Next, we can create the data and perform Dunn’s test:

#specify the growth of the 10 plants in each group
group1 = [7, 14, 14, 13, 12, 9, 6, 14, 12, 8]
group2 = [15, 17, 13, 15, 15, 13, 9, 12, 10, 8]
group3 = [6, 8, 8, 9, 5, 14, 13, 8, 10, 9]
data = [group1, group2, group3]

#perform Dunn's test using a Bonferonni correction for the p-values
import scikit_posthocs as sp
sp.posthoc_dunn(data, p_adjust = 'bonferroni')

               1	       2	       3
1	1.000000	0.550846	0.718451
2	0.550846	1.000000	0.036633
3	0.718451	0.036633	1.000000

Note that we chose to use a Bonferroni correction for the p-values to control the family-wise error rate, but other potential choices for the p_adjust argument include:

  •  sidak
  • holm-sidak
  • simes-hochberg
  • hommel
  • fdr_bh
  • fdr_by
  • fdr_tsbh

Refer to the documentation for more details on each of these p-value adjustment methods.

Step 3: Interpret the results.

From the results of Dunn’s test we can observe the following:

  • The adjusted p-value for the difference between group 1 and group 2 is 0.550846.
  • The adjusted p-value for the difference between group 1 and group 3 is 0.718451.
  • The adjusted p-value for the difference between group 2 and group 3 is 0.036633.

Thus, the only two groups that are statistically significantly different at α = .05 are groups 2 and 3.

Additional Resources

An Introduction to Dunn’s Test for Multiple Comparisons
How to Perform Dunn’s Test in R

Subscribe

- Never miss a story with notifications

- Gain full access to our premium content

- Browse free from up to 5 devices at once

Latest stories