如何解决比较箱线图和 Wilcoxon 检验
我正在使用 R 中的 ggplot2 包将两组长度(不同的个体)与箱线图进行比较。我想比较这两个分布,但到目前为止,我发现使用 wilcoxon 测试的唯一方法是“ggpubr”包中的 stat_compare_means .这是比较分布的正确方法吗?我可以比较分布而不是具体的平均值吗?如您所见,我是统计领域的新手。谢谢!
解决方法
Base R 有一个内置函数来进行 Wilcoxon 检验:wilcox.test
。您可以为其提供两个数值向量或将数值变量与因子变量(具有两个级别)相关联的公式。
# vector input
setosa_SL <- iris$Sepal.Length[which(iris$Species == "setosa")]
versicolor_SL <- iris$Sepal.Length[which(iris$Species == "versicolor")]
wilcox.test(setosa_SL,versicolor_SL)
Wilcoxon rank sum test with continuity correction
data: setosa_SL and versicolor_SL
W = 168.5,p-value = 8.346e-14
alternative hypothesis: true location shift is not equal to 0
# formula input
wilcox.test(Sepal.Length ~ Species,data = iris[which(iris$Species != "virginica"),])
Wilcoxon rank sum test with continuity correction
data: Sepal.Length by Species
W = 168.5,p-value = 8.346e-14
alternative hypothesis: true location shift is not equal to 0
但是,iris$Species
具有三个级别。如果我们想同时做这三件事怎么办?
基础 stats
包也有 pairwise.wilcox.test
。
pairwise.wilcox.test(iris$Sepal.Length,iris$Species)
Pairwise comparisons using Wilcoxon rank sum test with continuity correction
data: iris$Sepal.Length and iris$Species
setosa versicolor
versicolor 1.7e-13 -
virginica < 2e-16 5.9e-07
P value adjustment method: holm
现在,我怀疑您想绘制此图。您需要 pairwise_wilcox_test
包中的 add_xy_position
和 rstatix
以及 stat_pvalue_manual
包中的 ggpubr
。 pairwise_wilcox_test
函数是对基 R pairwise.wilcox.text
的改进,因为它返回一个小标题而不是类 htest
的列表。
library(rtatix)
librarr(ggpubr)
iris %>% pairwise_wilcox_test(Sepal.Length ~ Species)
# A tibble: 3 x 9
.y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
* <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
1 Sepal.Length setosa versicolor 50 50 168. 8.35e-14 1.67e-13 ****
2 Sepal.Length setosa virginica 50 50 38.5 6.40e-17 1.92e-16 ****
3 Sepal.Length versicolor virginica 50 50 526 5.87e- 7 5.87e- 7 ****
函数 add_xy_positions
添加 x 和 y 坐标信息使此数据更适合绘图,而 stat_pvalue_manual
添加包含 p 值信息的层。
ggplot(iris,aes(x = Species,y = Sepal.Length)) +
geom_boxplot() +
stat_pvalue_manual(iris %>%
pairwise_wilcox_test(Sepal.Length ~ Species) %>%
add_xy_position())
,
此信息是初步的:
如果您想测试您的数据是否呈正态分布,请使用 Kolmogorov-Smirnov 测试。
如果数据呈正态分布,请使用 t 检验来比较两组的均值。
如果数据不是正态分布,则使用 Wilcoxon 秩和检验(= Mann Whitney U 检验)来比较两组的中位数。
dput()
你的数据,我可以给你看代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。