引言
Wilcoxon检验(也被称为Mann-Withney-Wilcoxon检验)是一种非参数检验,意味着它不依赖于属于任何特定参数的概率分布家族的数据。非参数检验的目标与参数检验的目标相同。然而,它们比参数检验有一个优势:它们不需要假设分布的正态性。例如,学生t检验只有在数据是高斯的或样本量足够大(通常n≥30)时才适用。在其他情况下,应该使用非参数检验。
有人可能会问,为什么我们不总是使用非参数检验,这样我们就不必为检验正态性而烦恼。原因是,当正态性假设成立时,非参数检验通常不如相应的参数检验有力。因此,在其他条件相同的情况下,如果数据遵循正态分布,使用非参数检验,当无效假设为假时,你拒绝无效假设的可能性就会降低。因此,在满足假设的情况下,最好使用统计检验的参数化版本。
我们将介绍Wilcoxon检验的两种情况,以及如何通过两个例子在R中执行它们。
采用Wilcoxon检验比较两组是否存在显著性差异。要比较的两组是:
- 独立样本
- 非独立样本
独立样本
对于独立样本的Wilcoxon检验,假设我们想测试女性和男性学生在统计学考试中的成绩是否不同。
我们收集了24名学生的成绩(12名女生,12名男生):
#rep("Girl",12)为把字符“Girl”重复12次
dat <- data.frame(
Sex = as.factor(c(rep("Girl", 12), rep("Boy", 12))),
Grade = c(
19, 18, 9, 17, 8, 7, 16, 19, 20, 9, 11, 18,
16, 5, 15, 2, 14, 15, 4, 7, 15, 6, 7, 14
)
)
dat
按照性别划分的成绩分布:
library(ggplot2)
ggplot(dat) +
aes(x = Sex, y = Grade) +
geom_boxplot(fill = "#0c4c8a") +
theme_minimal()
女孩成绩的频率分布:
hist(subset(dat, Sex == "Girl")$Grade,
main = "Grades for girls",
xlab = "Grades"
)
男孩成绩的频率分布:
hist(subset(dat, Sex == "Boy")$Grade,
main = "Grades for boys",
xlab = "Grades"
)
从上面两张图可以看出,两个都不服从正态分布这个限制条件。
直方图显示两种分布似乎都不符合正态分布,Shapiro-Wilk检验的p值证实了这一点(如果P值显著,那么拒绝正态分布假设,数据不符合正态分布)。
shapiro.test(subset(dat, Sex == "Girl")$Grade)
shapiro.test(subset(dat, Sex == "Boy")$Grade)
下面就可以践行wilcox检验了:
H0: 两组是相似的
H1: 两组是不同的
test <- wilcox.test(dat$Grade ~ dat$Sex)
test
test <- wilcox.test(dat$Grade ~ dat$Sex,
alternative = "less"
)
test
P值为0.021,因此,在5%显著性水平下,我们拒绝原假设,并得出结论:女生和男生的成绩存在显著差异。考虑到上面展示的按性别划分的分数箱形图,你可能会发现女孩似乎比男孩表现得更好。可以通过添加alternative = "less"。P值是0.01。因此,在5%显著性水平下,我们拒绝原假设,并得出男孩表现明显低于女孩的结论(这相当于得出女孩表现明显优于男孩的结论)。
非独立样本
对于第二种情况,考虑我们在学期初对一个有12名学生的班级进行了一次数学测试,并在学期末对完全相同的学生进行了一次类似测试。我们有以下数据:
dat <- data.frame(
Beginning = c(16, 5, 15, 2, 14, 15, 4, 7, 15, 6, 7, 14),
End = c(19, 18, 9, 17, 8, 7, 16, 19, 20, 9, 11, 18)
)
#将数据转换为对其的格式
dat2 <- data.frame(
Time = c(rep("Before", 12), rep("After", 12)),
Grade = c(dat$Beginning, dat$End)
)
dat2
学期初和学期后的成绩分布:
# Reordering dat2$Time
dat2$Time <- factor(dat2$Time,
levels = c("Before", "After")
)
ggplot(dat2) +
aes(x = Time, y = Grade) +
geom_boxplot(fill = "#0c4c8a") +
theme_minimal()
在这个例子中,很明显两个样本不是独立的,因为同样的12名学生在学期前后参加了考试。同时假设正态性假设被违背,我们因此使用配对样本的Wilcoxon检验。
这个测试的R代码与独立样本相似,我们在wilcox.test()函数中添加了paired = TRUE参数,以考虑两个样本之间的依赖关系:
test <- wilcox.test(dat2$Grade ~ dat2$Time,
paired = TRUE)
test
P值为0.169。因此,在5%显著性水平下,我们不拒绝学期前后成绩相似的原假设。
我希望这篇文章能够帮助您使用Wilcoxon检验来比较两个不遵循R正态分布的组。如果您需要执行参数版本的Wilcoxon检验,请参阅Student的t检验。
正态性假设可以通过3种互补的方法进行检验:(i)直方图,(ii) QQ-plot和(iii)正态性检验(最常见的是Shapiro-Wilk test)。
注意,为了使用t检验(Wilcoxon检验的参数化版本),需要两个样本服从正态分布。因此,即使一个样本服从正态分布(而另一个不服从正态分布),也建议使用非参数检验
注意,相等元素(tie)的存在阻止了精确的p值计算
我们添加alternative = "less"(alternative = "greater"),因为我们想测试男孩的分数比女孩的分数低。使用“少”或“多”可以从数据集的参考水平中扣除
学习网址:Wilcoxon test in R: how to compare 2 groups under the non-normality assumption | R-bloggers
本文内容从上述网址翻译和学习而形成