数据分析新技能:如何进行Mann-Whitney U检验

Mann-Whitney U检验

Mann-Whitney U检验是一种非参数统计方法,用于比较两个独立样本的分布。它特别适用于数据不满足正态分布或存在异常值的情况,是t检验的非参数替代方法。

一、起源

Mann-Whitney U检验由美国统计学家亨利·曼恩(Henry Mann)和德怀特·惠特尼(Donald Whitney)于1947年提出。它是Wilcoxon秩和检验的独立样本版本,旨在提供一种不依赖于正态性假设的检验方法。

二、原理

Mann-Whitney U检验通过比较两个独立样本的秩次,评估它们是否来自同一分布。它假设两个样本的分布形状相同,只是位置参数不同。检验统计量U的计算公式为:

U = n 1 n 2 + n 1 ( n 1 + 1 ) 2 − R 1 U = n_1 n_2 + \frac{n_1 (n_1 + 1)}{2} - R_1 U=n1n2+2n1(n1+1)R1

其中:

  • n 1 n_1 n1 n 2 n_2 n2 分别为两个样本的样本量。
  • R 1 R_1 R1 为第一个样本的秩次和。

计算出的U值需要与标准的U分布表进行比较,以确定是否拒绝零假设。较小的U值表明两个样本分布有显著差异。

三、步骤
  1. 数据准备:收集两个独立样本的数据。
  2. 合并排序:将两个样本的数据合并并按大小排序,分配秩次。
  3. 计算秩次和:分别计算两个样本的秩次和。
  4. 计算U值:使用公式计算U值。
  5. 确定显著性水平:选择显著性水平,查找U分布表确定临界值,比较U值与临界值。
四、应用场景

Mann-Whitney U检验广泛应用于各个领域,特别是在以下情况下:

  • 比较两种治疗方法对患者效果的差异。
  • 分析不同教学方法对学生成绩的影响。
  • 评估不同市场策略对客户满意度的影响。
五、案例分析

假设我们有一组数据,包含两种不同教学方法下学生的考试成绩。我们希望通过Mann-Whitney U检验评估这两种教学方法对学生成绩的影响。数据如下:

教学方法A组:85, 78, 92, 88, 76
教学方法B组:80, 74, 88, 82, 78
  1. 数据准备

    教学方法A组:85, 78, 92, 88, 76

    教学方法B组:80, 74, 88, 82, 78

  2. 合并排序

    合并两个样本并排序:

    74, 76, 78, 78, 80, 82, 85, 88, 88, 92

  3. 计算秩次和

    计算两个样本的秩次和:

    教学方法A组秩次和:

    3 + 5 + 6 + 9 + 10 = 33 3+5+6+9+10 = 33 3+5+6+9+10=33

    教学方法B组秩次和:

    1 + 2 + 4 + 7 + 8 = 22 1+2+4+7+8 = 22 1+2+4+7+8=22

  4. 计算U值

    使用公式计算U值:

    U A = n A n B + n A ( n A + 1 ) 2 − R A = 5 ∗ 5 + 5 ∗ 6 / 2 − 33 = 12 U_A = n_A n_B + \frac{n_A (n_A + 1)}{2} - R_A = 5*5 + 5*6/2 - 33 = 12 UA=nAnB+2nA(nA+1)RA=55+56/233=12

  5. 确定显著性水平

    在显著性水平0.05下,查找U分布表得出临界值为8。由于U值12 > 8,我们不能拒绝零假设,即两种教学方法对学生成绩没有显著差异。

六、Python代码示例

使用Python进行Mann-Whitney U检验,可以使用scipy库中的mannwhitneyu函数:

import numpy as np
from scipy.stats import mannwhitneyu

# 数据准备
group_A = np.array([85, 78, 92, 88, 76])
group_B = np.array([80, 74, 88, 82, 78])

# 计算Mann-Whitney U检验
u_stat, p_val = mannwhitneyu(group_A, group_B)
print(f"U统计量: {u_stat}")
print(f"p值: {p_val}")
七、R代码示例

使用R进行Mann-Whitney U检验,可以使用wilcox.test函数:

# 数据准备
group_A <- c(85, 78, 92, 88, 76)
group_B <- c(80, 74, 88, 82, 78)

# 计算Mann-Whitney U检验
result <- wilcox.test(group_A, group_B)

print(paste("U统计量:", result$statistic))
print(paste("p值:", result$p.value))
八、注意事项
  • Mann-Whitney U检验假设两个样本的分布形状相同,仅位置参数不同。
  • 样本量较小时,U值的精确显著性水平可以通过置换检验或蒙特卡洛方法计算。
  • 如果两个样本的分布形状不同,Mann-Whitney U检验可能不适用,建议使用其他非参数检验方法。
九、总结

Mann-Whitney U检验是一种强大的非参数统计方法,特别适用于比较两个独立样本的分布。通过Mann-Whitney U检验,研究者可以评估不同处理方法、条件或群体之间的差异,为科学研究和决策提供有力支持。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析技术:数据差异的显著性检验 数据分析技术:数据差异的显著性检验 数据差异的显著性检验是的重要技术之⼀。然⽽,如何正确选择检验⽅法是很多初学者困惑和容易出现错误的地⽅。下⾯为⼤家总结⼀ 下数据差异显著性检验的⽅法及适⽤范围。 显著性检验 ⾸先需要理解什么是数据差异的显著性检验。在数据分析中,如果仅仅基于个案(某个数据)的采样数据是没有很强说服⼒的。例如: ⼀种新药,不能因为⼀个⼈使⽤后,效果良好就⼤⾯积地推⼴,⽽应该基于⼤规模的样本判定这种新药是否有效,这就需要验证在⼤规模样 本中实验组数据是否优于对照组数据,⼆者是否存在显著性的差别。显著性检验的理论就是在这种具体需求下提出来的。 所谓数据差异的显著性检验,是⾯向两组或多组数据的⼀种⽅法,其⽬的是对两组数据之间是否存在显著的差异进⾏判断。⼀般来说, 两组观测数据不可能完全相同,肯定存在或多或少的差异,但研究者关⼼的是两组数据的差异是否显著。如果差异显著,就可以说两组数据 之间存在显著性差异;否则,它们之间的差异不显著,甚⾄可以说是⽆差别。 数据差异的显著性可以运⽤在各类科学研究中,例如,在教学研究中,研究者可以研究某种教学法是否有效。在医学领域,可以研究某 种新药是否对患者有效等等。 数据的分类 数据类型的不同,将直接影响到差异显著性检验的使⽤⽅法。数据主要可以分成三类:定距变量,定序变量和定类变量。 定类变量:根据定性的原则区分总体中个案类别的变量。定类变量的值只能把研究对象分类,只能决定研究对象是同类或不同类,例 如:性别分为男性和⼥性两类;出⽣地区分为农村、城市、城镇三类;民族背景分为汉、蒙、回、苗、壮、藏、维吾尔等;婚姻状况分为未 婚、已婚、分居、离婚、丧偶等类。 定序变量:区别同⼀类的个案中等级次序的变量。变量的值能把研究对象排列⾼低或⼤⼩,它是⽐定类变量层次更⾼的变量,也具有定类 变量的特点,例如:⽂化程度可以分为⼤学、⾼中、初中、⼩学、⽂盲;⼯⼚规模可以分为⼤、中、⼩;年龄可以分为⽼、中、青。这些变 量的值,既可以区分异同,也可以区别⾼低或⼤⼩。但是,各个定序变量的值之间没有确切的间隔距离,⽐如⼤学究竟⽐⾼中⾼出多少,是 没有确切的尺度来测量的。 定距变量:区别同⼀类别个案中等级次序及其距离的变量。它除了包括定序变量的特性外,还能确切测量出个案之间⾼低、⼤⼩次序之 间的距离。 定距变量是最常见、区分度最⾼的变量,这类变量可以被求取均值、⽅差、标准差和标准误等描述性信息,在中最受欢迎,被称为⾼测 度数据。定序变量和定类变量则因为数据的特点,通常⽆法求取它们的均值和⽅差等信息,被称为低测度数据,需要采⽤与定距变量不同的 分析技术。
Mann-Whitney U检验是一种非参数检验方法,用于比较两个独立样本的中位数是否相等。Python中可以使用SciPy模块中的mannwhitneyu函数进行Mann-Whitney U检验。 下面是四组数据的Mann-Whitney U检验的示例代码: ```python from scipy.stats import mannwhitneyu # 数据组1 data1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 数据组2 data2 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] # 数据组3 data3 = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] # 数据组4 data4 = [3, 5, 7, 9, 11, 13, 15, 17, 19, 21] # 对数据组1和数据组2进行Mann-Whitney U检验 statistic12, pvalue12 = mannwhitneyu(data1, data2) print("数据组1和数据组2的Mann-Whitney U检验结果:") print("统计量:", statistic12) print("P值:", pvalue12) # 对数据组3和数据组4进行Mann-Whitney U检验 statistic34, pvalue34 = mannwhitneyu(data3, data4) print("数据组3和数据组4的Mann-Whitney U检验结果:") print("统计量:", statistic34) print("P值:", pvalue34) ``` 输出结果如下: ``` 数据组1和数据组2的Mann-Whitney U检验结果: 统计量: 0.0 P值: 0.0001220703125 数据组3和数据组4的Mann-Whitney U检验结果: 统计量: 50.0 P值: 0.478946033853266 ``` 其中,统计量表示Mann-Whitney U检验的统计结果,P值表示检验的显著性水平。如果P值小于显著性水平(通常为0.05),则可以拒绝原假设,即两组数据的中位数不相等。如果P值大于显著性水平,则不能拒绝原假设。在上面的例子中,数据组1和数据组2的P值小于显著性水平,因此可以拒绝原假设,即两组数据的中位数不相等;而数据组3和数据组4的P值大于显著性水平,因此不能拒绝原假设,即两组数据的中位数相等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值