📜  曼和惠特尼 U 检验(1)

📅  最后修改于: 2023-12-03 14:55:16.889000             🧑  作者: Mango

曼和惠特尼 U 检验

曼和惠特尼 U 检验(Mann-Whitney U test)也称为Wilcoxon秩和检验,是一种非参数假设检验方法,用于比较两组独立的样本数据。它适用于处理小样本数据或非正态数据,可以用于比较两组数据的中位数是否有显著差异。

使用场景

Mann-Whitney U 检验适用于以下场景:

  • 比较两组独立的数据,其中数据不满足正态分布的要求。
  • 样本数量较小,在正态分布的情况下也无法使用t检验进行假设检验。
原理

Mann-Whitney U 检验基于以下假设:

  • 总体分布函数的形状相同。
  • 总体分布的方差相同。

Mann-Whitney U 检验的步骤如下:

  1. 将两组数据合并,并按照大小排序。
  2. 对于第一组数据中的每一个数据,记录在合并后数据中的排名。
  3. 对于第二组数据中的每一个数据,也记录在合并后数据中的排名。
  4. 计算第一组数据的排名总和 $R_1$。
  5. 计算第二组数据的排名总和 $R_2$。
  6. 计算 $U_1$ 和 $U_2$,其中 $U_1$ 表示第一组数据的排名总和与理论排名总和的差值,$U_2$ 表示第二组数据的排名总和与理论排名总和的差值。
  7. 计算 Mann-Whitney U 统计量 $U$,其中 $U$ 等于 $U_1$ 和 $U_2$ 中的较小值。
  8. 计算临界值,拒绝原假设或接受原假设。
代码实现

Mann-Whitney U 检验的代码实现如下:

from scipy.stats import mannwhitneyu

# 假设第一组数据为 [1, 2, 3, 4, 5],第二组数据为 [6, 7, 8, 9, 10]
data1 = [1, 2, 3, 4, 5]
data2 = [6, 7, 8, 9, 10]

# 进行 Mann-Whitney U 检验
stat, p = mannwhitneyu(data1, data2)

# 显示检验结果
print("Mann-Whitney U 统计量:%.3f" % stat)
print("p 值:%.3f" % p)

这段代码使用了 Python 中的 scipy.stats.mannwhitneyu() 函数来进行 Mann-Whitney U 检验,并输出了 Mann-Whitney U 统计量和 p 值。根据 p 值的大小,可以判断两组数据的中位数是否有显著差异。

结论

Mann-Whitney U 检验是一种用于比较两组独立数据的非参数假设检验方法,适用于小样本数据或非正态数据。它是一种强大的工具,可以使用 Python 中的 scipy.stats.mannwhitneyu() 函数轻松地实现。