如何在 r 中执行 mann-whitney u 检验
当样本分布不呈正态分布且样本量较小 (n < 30) 时, Mann-Whitney U 检验(有时称为 Wilcoxon 秩和检验)用于比较两个独立样本之间的差异。
它被认为是独立双样本 t 检验的非参数等效项。
本教程介绍如何在 R 中执行 Mann-Whitney U 检验。
示例:R 中的 Mann-Whitney U 检验
研究人员想知道一种新药是否能有效预防恐慌发作。总共 12 名患者被随机分为两组,每组 6 人,并分配接受新药或安慰剂。然后患者记录他们在一个月内经历的恐慌发作的次数。
结果如下所示:
新药 | 安慰剂 |
---|---|
3 | 4 |
5 | 8 |
1 | 6 |
4 | 2 |
3 | 1 |
5 | 9 |
进行曼-惠特尼 U 检验,以确定安慰剂组患者与新药组患者惊恐发作次数是否存在差异。使用显着性水平 0.05。
有两种不同的方法可以执行 Mann-Whitney U 检验,但这两种方法都使用wilcox.test()函数,并且都得到相同的结果。
选项 1:将数据输入为两个单独的向量。
#create a vector for each group new <- c(3, 5, 1, 4, 3, 5) placebo <- c(4, 8, 6, 2, 1, 9) #perform the Mann Whitney U test wilcox.test(new, placebo) #output Wilcoxon rank sum test with continuity correction data: new and placebo W = 13, p-value = 0.468 alternative hypothesis: true location shift is not equal to 0
选项 2:在具有两列的数据框中输入数据。一列包含恐慌发作的次数,另一列包含恐慌发作的组。
#create a data frame with two columns, one for each group drug_data <- data.frame(attacks = c(3, 5, 1, 4, 3, 5, 4, 8, 6, 2, 1, 9), drug_group = c(rep("old", 6), rep("placebo", 6))) #perform the Mann Whitney U test wilcox.test(attacks~drug_group, data = drug_data) #output data: attacks by drug_group W = 13, p-value = 0.468 alternative hypothesis: true location shift is not equal to 0
请注意,这两种方法都会产生完全相同的结果。即,检验统计量为 W = 13 ,相应的 p 值为0.468 。
由于 p 值大于 0.05,我们无法拒绝原假设。
这意味着我们没有足够的证据表明安慰剂组患者经历的惊恐发作次数与新药组患者不同。
使用 Wilcox.test() 的注意事项
默认情况下, wilcox.test()假设您要运行双边假设检验。但是,如果您想运行单方面测试,则可以指定alternative=”less”或alternative=”more” 。
例如,假设我们想检验新药比安慰剂引起的惊恐发作更少的假设。在这种情况下,我们可以在 wilcox.test() 函数中指定Alternative=”less” :
#create a vector for each group new <- c(3, 5, 1, 4, 3, 5) placebo <- c(4, 8, 6, 2, 1, 9) #perform the Mann Whitney U test, specify alternative="less" wilcox.test(new, placebo, alternative="less") #output Wilcoxon rank sum test with continuity correction data: new and placebo W = 13, p-value = 0.234 alternative hypothesis: true location shift is less than 0
请注意,检验统计量仍为 W = 13,但 p 值现在为0.234 ,这恰好是双尾检验之前 p 值的一半。
由于 p 值始终大于 0.05,我们仍然无法拒绝原假设。
我们没有足够的证据表明新药组患者经历惊恐发作的次数低于安慰剂组患者。