微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较箱线图和 Wilcoxon 检验

如何解决比较箱线图和 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_positionrstatix 以及 stat_pvalue_manual 包中的 ggpubrpairwise_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())

enter image description here

,

此信息是初步的:

如果您想测试您的数据是否呈正态分布,请使用 Kolmogorov-Smirnov 测试。

如果数据呈正态分布,请使用 t 检验来比较两组的均值。

如果数据不是正态分布,则使用 Wilcoxon 秩和检验(= Mann Whitney U 检验)来比较两组的中位数。 dput() 你的数据,我可以给你看代码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。