首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将boxplot与Wilcoxon检验进行比较

将boxplot与Wilcoxon检验进行比较
EN

Stack Overflow用户
提问于 2021-03-15 01:12:22
回答 2查看 621关注 0票数 0

我正在使用R中的ggplot2包比较两组长度(不同的个体)和盒图。我想比较两个分布,但到目前为止,我发现使用wilcoxon测试的唯一方法是"ggpubr“包中的stat_compare_means。这是比较分布的正确方式吗?我可以比较分布而不是均值吗?正如您所看到的,我是统计世界中的一个新手。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-03-15 01:49:01

Base R有一个内置的函数来执行Wilcoxon测试:wilcox.test。您可以向它提供两个数值向量或一个将数值变量与因子变量相关联的公式(具有两个级别)。

代码语言:javascript
复制
# 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

代码语言:javascript
复制
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 

现在,我怀疑你想要把这个画出来。您需要来自rstatix包的pairwise_wilcox_testadd_xy_position以及来自ggpubr包的stat_pvalue_manualpairwise_wilcox_test函数是对基本的R pairwise.wilcox.text的改进,因为它返回的是tibble而不是htest类的列表。

代码语言:javascript
复制
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值信息的层。

代码语言:javascript
复制
ggplot(iris, aes(x = Species, y = Sepal.Length)) +
  geom_boxplot() +
  stat_pvalue_manual(iris %>% 
                       pairwise_wilcox_test(Sepal.Length ~ Species) %>% 
                       add_xy_position())

票数 3
EN

Stack Overflow用户

发布于 2021-03-15 01:46:12

此信息是预定义的:

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

如果数据是正态分布的,则使用t-test比较两组的均值。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66627357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档