R:从 conover 测试中绘制 p 值的问题(Dunn 的工作正常)
R: problems plotting p-values from conover test (Dunn's works fine)
我遇到了无法解决的错误消息。
我将以下代码用于 运行 R 中的 Kruskal Wallis,然后使用 Dunn 的代码进行成对比较:
res.kruskal <- mydata %>% kruskal_test(values ~ group)
res.kruskal
stat.test <- mydata %>% dunn_test(values ~ group, p.adjust.method = "hochberg")
stat.test
stat.test <- stat.test %>% add_xy_position(x = "group")
然后我使用这个结果来绘制出意义,如下所示:
ggboxplot(mydata, x = "group", y = "values, fill = "group") +
stat_pvalue_manual(stat.test, hide.ns = FALSE)
得到的情节很漂亮(万岁!)
但是 Cover Test 显然比 Dunn 的更强大并且更受欢迎...(也欢迎对此提出任何意见!)。 运行下面的代码returns一个错误:
res.kruskal <- immdatamed %>% kruskal_test(LplastinTL ~ group)
res.kruskal
attach(immdatamed)
stat.test <- conover.test(LplastinTL, group, method = "hochberg")
stat.test
stat.test <- stat.test %>% add_xy_position(x = "group")
detach(immdatamed)
stat.test <- stat.test %>% add_xy_position(x = "group")
Error in asserttat_group_columns_exists(test) :
data should contain group1 and group2 columns
我想不通...我可以 运行 Conover 测试正常但无法解决上述错误以使其与 ggboxplot 一起工作。
我实际上更喜欢使用更美观的 ggplot & geom_boxplot 但根本无法将其与 Dunn_test 交互...
欢迎任何解决方案!
谢谢
P.S。我将其与 ggplot 一起使用:http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/76-add-p-values-and-significance-levels-to-ggplots 但我继续想要 wilcoxon 或 t.test 进行成对比较...
解释我在做什么很长,因为我预计您对 R 和统计数据都没有经验。我什至不会解释为什么 Conover vs Dunn 那更 stats exchange thing see here
以后请说清楚你用的是什么包,比如你从来不提rstatix
。 请包含您的数据样本。
#
library(dplyr)
library(ggpubr)
library(rstatix)
# I'm going to get the Conover test from this package
require(DescTools)
# You didn't provide data I will use mtcars
mydata <- mtcars %>% select(mpg, gear)
mydata$gear <- factor(mydata$gear)
# Here's what you were doing
stat.test.dunn <- mydata %>% dunn_test(mpg ~ gear, p.adjust.method = "hochberg")
stat.test.dunn <- stat.test.dunn %>% add_xy_position(x = "gear")
stat.test.dunn
#> # A tibble: 3 x 13
#> .y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
#> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 mpg 3 4 15 12 3.76 1.69e-4 5.06e-4 ***
#> 2 mpg 3 5 15 5 1.65 9.98e-2 2.00e-1 ns
#> 3 mpg 4 5 12 5 -1.14 2.54e-1 2.54e-1 ns
#> # … with 4 more variables: y.position <dbl>, groups <named list>, xmin <int>,
#> # xmax <int>
ggboxplot(mydata, x = "gear", y = "mpg", fill = "gear") +
stat_pvalue_manual(stat.test.dunn, hide.ns = FALSE)
我们可以这样 "fake it out"
stat.test.Conover <- DescTools::ConoverTest(mpg ~ gear, mydata, method = "hochberg" )
stat.test.Conover
#>
#> Conover's test of multiple comparisons : hochberg
#>
#> mean.rank.diff pval
#> 4-3 13.658333 8.5e-05 ***
#> 5-3 7.966667 0.0767 .
#> 5-4 -5.691667 0.1434
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
stat.test.Conover[[1]]
#> mean rank diff pval
#> 4-3 13.658333 8.490683e-05
#> 5-3 7.966667 7.666748e-02
#> 5-4 -5.691667 1.433731e-01
things_we_want <- rstatix::add_significance(data = as.data.frame(stat.test.Conover[[1]]))
things_we_want
#> mean rank diff pval pval.signif
#> 1 13.658333 8.490683e-05 ****
#> 2 7.966667 7.666748e-02 ns
#> 3 -5.691667 1.433731e-01 ns
stat.test.Conover <- stat.test.dunn
stat.test.Conover
#> # A tibble: 3 x 13
#> .y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
#> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 mpg 3 4 15 12 3.76 1.69e-4 5.06e-4 ***
#> 2 mpg 3 5 15 5 1.65 9.98e-2 2.00e-1 ns
#> 3 mpg 4 5 12 5 -1.14 2.54e-1 2.54e-1 ns
#> # … with 4 more variables: y.position <dbl>, groups <named list>, xmin <int>,
#> # xmax <int>
stat.test.Conover$p.adj <- things_we_want$pval
stat.test.Conover$p.adj.signif <- things_we_want$pval.signif
stat.test.Conover
#> # A tibble: 3 x 13
#> .y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
#> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 mpg 3 4 15 12 3.76 1.69e-4 8.49e-5 ****
#> 2 mpg 3 5 15 5 1.65 9.98e-2 7.67e-2 ns
#> 3 mpg 4 5 12 5 -1.14 2.54e-1 1.43e-1 ns
#> # … with 4 more variables: y.position <dbl>, groups <named list>, xmin <int>,
#> # xmax <int>
ggboxplot(mydata, x = "gear", y = "mpg", fill = "gear") +
stat_pvalue_manual(stat.test.Conover, hide.ns = FALSE)
我遇到了无法解决的错误消息。
我将以下代码用于 运行 R 中的 Kruskal Wallis,然后使用 Dunn 的代码进行成对比较:
res.kruskal <- mydata %>% kruskal_test(values ~ group)
res.kruskal
stat.test <- mydata %>% dunn_test(values ~ group, p.adjust.method = "hochberg")
stat.test
stat.test <- stat.test %>% add_xy_position(x = "group")
然后我使用这个结果来绘制出意义,如下所示:
ggboxplot(mydata, x = "group", y = "values, fill = "group") +
stat_pvalue_manual(stat.test, hide.ns = FALSE)
得到的情节很漂亮(万岁!)
但是 Cover Test 显然比 Dunn 的更强大并且更受欢迎...(也欢迎对此提出任何意见!)。 运行下面的代码returns一个错误:
res.kruskal <- immdatamed %>% kruskal_test(LplastinTL ~ group)
res.kruskal
attach(immdatamed)
stat.test <- conover.test(LplastinTL, group, method = "hochberg")
stat.test
stat.test <- stat.test %>% add_xy_position(x = "group")
detach(immdatamed)
stat.test <- stat.test %>% add_xy_position(x = "group")
Error in asserttat_group_columns_exists(test) :
data should contain group1 and group2 columns
我想不通...我可以 运行 Conover 测试正常但无法解决上述错误以使其与 ggboxplot 一起工作。
我实际上更喜欢使用更美观的 ggplot & geom_boxplot 但根本无法将其与 Dunn_test 交互...
欢迎任何解决方案!
谢谢
P.S。我将其与 ggplot 一起使用:http://www.sthda.com/english/articles/24-ggpubr-publication-ready-plots/76-add-p-values-and-significance-levels-to-ggplots 但我继续想要 wilcoxon 或 t.test 进行成对比较...
解释我在做什么很长,因为我预计您对 R 和统计数据都没有经验。我什至不会解释为什么 Conover vs Dunn 那更 stats exchange thing see here
以后请说清楚你用的是什么包,比如你从来不提rstatix
。 请包含您的数据样本。
#
library(dplyr)
library(ggpubr)
library(rstatix)
# I'm going to get the Conover test from this package
require(DescTools)
# You didn't provide data I will use mtcars
mydata <- mtcars %>% select(mpg, gear)
mydata$gear <- factor(mydata$gear)
# Here's what you were doing
stat.test.dunn <- mydata %>% dunn_test(mpg ~ gear, p.adjust.method = "hochberg")
stat.test.dunn <- stat.test.dunn %>% add_xy_position(x = "gear")
stat.test.dunn
#> # A tibble: 3 x 13
#> .y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
#> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 mpg 3 4 15 12 3.76 1.69e-4 5.06e-4 ***
#> 2 mpg 3 5 15 5 1.65 9.98e-2 2.00e-1 ns
#> 3 mpg 4 5 12 5 -1.14 2.54e-1 2.54e-1 ns
#> # … with 4 more variables: y.position <dbl>, groups <named list>, xmin <int>,
#> # xmax <int>
ggboxplot(mydata, x = "gear", y = "mpg", fill = "gear") +
stat_pvalue_manual(stat.test.dunn, hide.ns = FALSE)
我们可以这样 "fake it out"
stat.test.Conover <- DescTools::ConoverTest(mpg ~ gear, mydata, method = "hochberg" )
stat.test.Conover
#>
#> Conover's test of multiple comparisons : hochberg
#>
#> mean.rank.diff pval
#> 4-3 13.658333 8.5e-05 ***
#> 5-3 7.966667 0.0767 .
#> 5-4 -5.691667 0.1434
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
stat.test.Conover[[1]]
#> mean rank diff pval
#> 4-3 13.658333 8.490683e-05
#> 5-3 7.966667 7.666748e-02
#> 5-4 -5.691667 1.433731e-01
things_we_want <- rstatix::add_significance(data = as.data.frame(stat.test.Conover[[1]]))
things_we_want
#> mean rank diff pval pval.signif
#> 1 13.658333 8.490683e-05 ****
#> 2 7.966667 7.666748e-02 ns
#> 3 -5.691667 1.433731e-01 ns
stat.test.Conover <- stat.test.dunn
stat.test.Conover
#> # A tibble: 3 x 13
#> .y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
#> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 mpg 3 4 15 12 3.76 1.69e-4 5.06e-4 ***
#> 2 mpg 3 5 15 5 1.65 9.98e-2 2.00e-1 ns
#> 3 mpg 4 5 12 5 -1.14 2.54e-1 2.54e-1 ns
#> # … with 4 more variables: y.position <dbl>, groups <named list>, xmin <int>,
#> # xmax <int>
stat.test.Conover$p.adj <- things_we_want$pval
stat.test.Conover$p.adj.signif <- things_we_want$pval.signif
stat.test.Conover
#> # A tibble: 3 x 13
#> .y. group1 group2 n1 n2 statistic p p.adj p.adj.signif
#> <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <chr>
#> 1 mpg 3 4 15 12 3.76 1.69e-4 8.49e-5 ****
#> 2 mpg 3 5 15 5 1.65 9.98e-2 7.67e-2 ns
#> 3 mpg 4 5 12 5 -1.14 2.54e-1 1.43e-1 ns
#> # … with 4 more variables: y.position <dbl>, groups <named list>, xmin <int>,
#> # xmax <int>
ggboxplot(mydata, x = "gear", y = "mpg", fill = "gear") +
stat_pvalue_manual(stat.test.Conover, hide.ns = FALSE)