Kruskal-Wallis Test学习笔记
前言
Kruskal-Wallis Test,也称作H检验,是一种非参数的假设检验方法,用于检验三组或以上样本中是否至少有一组存在显著不同。与方差分析(ANOVA)和t检验相比,它们对数据的分布特征没有前置要求,且可以应用于顺序性变量的分析。通过本篇文章的学习,您将能够掌握Kruskal-Wallis Test的基本原理、实现步骤以及Python代码实现方法。
Kruskal-Wallis Test的基本原理
Kruskal-Wallis Test的基本原理依赖于秩和统计量,其定义如下:
- 对每个样本进行排序,得到一个从小到大的序列
- 给每个样本分配一个秩
- 计算每个样本的秩和
- 计算秩和平均值
- 计算秩和离差平方和
最终,我们通过计算秩和离差平方和来判断是否拒绝零假设。如果拒绝零假设,则说明至少有一组样本之间存在显著的差异。
Kruskal-Wallis Test的实现步骤
Kruskal-Wallis Test的实现步骤如下:
-
提出零假设和备择假设
零假设:所有组的总体分布相同
备择假设:至少有一组的总体分布不同
-
根据样本数据对每个样本进行排序,然后给每个样本分配一个秩
-
计算样本的秩和
-
计算秩和平均值
-
计算秩和离差平方和
-
计算Kruskal-Wallis检验统计量,即: H = 12 N ( N + 1 ) ∑ i = 1 g T i 2 n i − 3 ( N + 1 ) H=\frac{12}{N(N+1)}\sum_{i=1}^g\frac{T_i^2}{n_i}-3(N+1) H=N(N+1)12i=1∑gniTi2−3(N+1)
其中, N N N是所有样本数量的总和, n i n_i ni是第 i i i组样本的数量, T i T_i Ti是第 i i i组样本的秩和。 -
根据自由度和显著性水平查找Kruskal-Wallis检验临界值表,确定检验水平下的显著性水平
-
比较检验统计量与临界值,判断是否拒绝零假设
Kruskal-Wallis Test的Python代码实现
以下是使用Python stats库进行Kruskal-Wallis Test的示例代码:
from scipy import stats
# 构造样本数据
group1 = [1, 2, 3]
group2 = [2, 3, 4]
group3 = [3, 4, 5]
# 进行 Kruskal-Wallis Test
test_statistic, p_value = stats.kruskal(group1, group2, group3)
# 打印检验结果
print("Kruskal-Wallis Test:")
print(f"test statistic: {test_statistic:.3f}")
print(f"p-value: {p_value:.3f}")
输出结果:
Kruskal-Wallis Test:
test statistic: 3.000
p-value: 0.223
总结
Kruskal-Wallis Test是一种常用的非参数假设检验方法,可以应用于比较三组或以上样本之间是否存在显著差异。本篇文章对Kruskal-Wallis Test的基本原理、实现步骤以及Python代码实现进行了详细的介绍。