如何在Python中进行邓恩氏检验
如果Kruskal-Wallis检验产生了具有统计学意义的结果,应使用Dunn检验来确定哪些组是不同的。在你的方差分析显示三个或更多的平均值有明显的差异后,你可以应用邓恩检验来确定哪些特定的平均值与其他的不同。Dunn’s Multiple Comparison Test是一种非参数性的事后检验,它不假定你的数据来自某种分布。
为了进行duns测试,用户需要调用scikit-posthocs库中的posthoc_dunn()函数。
posthoc_dunn() 函数:
语法:
scikit_posthocs.posthoc_dunn(a, val_col: str = None, group_col: str = None, p_adjust: str = None, sort: bool = True)
参数:
- a : 它是一个数组类型的对象或一个数据框架对象或系列。
- group_col : 预测变量或因变量的列
- p_adjust:P值可以用这个方法来调整。它是一个字符串类型,可能的值是 :
- ‘bonferroni’
- hommel
- holm-sidak
- holm
- simes-hochberg
安装posthocs库的语法:
pip install scikit-posthocs
这是一个假设检验,两个假设如下:。
- 无效假设。给定的样本有相同的中位数
- 替代假说。给定的样本有一个不同的中位数。
在这个例子中,我们导入软件包,读取鸢尾花的CSV文件,并使用posthoc_dunn()函数进行dunns测试。dunn测试是针对三种植物的萼片宽度进行的。
# 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'],
dataset[dataset['species']=="versicolor"]['sepal_width'],
dataset[dataset['species']=="virginica"]['sepal_width']]
# using the posthoc_dunn() function
p_values= sp.posthoc_dunn(data, p_adjust = 'holm')
print(p_values)
输出:
- 对于第1组和第2组之间的差异,调整后的P值为3.247311e-14
- 对于第2组和第3组之间的差异,调整后的P值为1.521219e-02
我们进一步检查p_值是否高于显著性水平。假的代表两组在统计上有意义,或者拒绝了无效假设。
p_values > 0.05
输出:
在这个例子中,我们把显著性水平定为0.05。没有两组(物种)具有统计学意义,因为没有两组的P_值超过0.05。因此,我们可以说无效假设是假的,而替代假设是真的。