Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App

Related Articles

How to Perform Dunn’s Test in Python

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Dunn’s test should be used to establish which groups are distinct If the Kruskal-Wallis test yields statistically significant findings. After your  ANOVA has revealed a noticeable difference in three or more means, you may apply Dunn’s Test to determine which particular means are different from the rest. Dunn’s Multiple Comparison Test is a non-parametric post hoc, non-parametric test that doesn’t presume your data comes from a certain distribution.

To perform the duns test user neesneedsds to call the  posthoc_dunn() function from the scikit-posthocs library. 

posthoc_dunn() Function:


scikit_posthocs.posthoc_dunn(a, val_col: str = None, group_col: str = None, p_adjust: str = None, sort: bool = True)


  • a : it’s an array type object or a dataframe object or series.
  •  group_col : column of the predictor or the dependent variable
  • p_adjust: P values can be adjusted using this method. it’s a string type possible values are :
    • ‘bonferroni’
    • hommel
    • holm-sidak
    • holm
    • simes-hochberg and more…

Returns: p-values.

Syntax to install posthocs library:

pip install scikit-posthocs

This is a hypotheses test and the two hypotheses are as follows:

  • Null hypothesis:  The given sample have the same median
  • Alternative hypothesis:  The given sample has a different median.

In this example, we import the packages, read the iris CSV  file, and use posthoc_dunn() function to perform dunns test. dunn’s test is performed on the sepal width of the three plant species. 

Click here to view and download the CSV file.


# importing packages and modules
import pandas as pd
import scikit_posthocs as sp
# reading CSV file
dataset= pd.read_csv('iris.csv')
# data which contains sepal width of the three species
data = [dataset[dataset['species']=="setosa"]['sepal_width'],
# using the posthoc_dunn() function
p_values= sp.posthoc_dunn(data, p_adjust = 'holm')


  • For the difference between groups 1 and 2, the adjusted p-value is 3.247311e-14
  • For the difference between groups 2 and 3, the adjusted p-value is 1.521219e-02

We further check if p_values are higher than the level of significance. false represents that two groups are statistically significant or that the null hypothesis is rejected.


p_values > 0.05





We take the level of significance to be 0.05 in this example. no two groups (species)  are statistically significant as no two groups have a p_value more than 0.05. hence, we can say the null hypothesis is false, and the alternative hypothesis is true. 


My Personal Notes arrow_drop_up
Last Updated : 19 Apr, 2022
Like Article
Save Article
Similar Reads
Related Tutorials