我想在我的数据上总共运行4个Dunn测试,在它的四个子集上,虚拟数据,其中grp是我用于dunn测试的分组:
d var1 var2 grp
-1.26431512 a c A
1.28852253 b d A
-0.06951728 a c A
0.21254560 b c Z
-0.20723889 b d Z
0.02315806 b d Z目前,我正在过滤每个变量,然后运行dunn.test:
a_c<-filter(df, var1 %in% "a", var2 %in% "c")
a_c_results<-dunn.test(df$d, g=df$grp, method="bh")以此类推,对于这四个组合,a_c, a_d, b_c, b_d
我试过这段代码,因为它在我之前运行的Kruskal-Wallis测试上工作得很好,但是由于Dunn测试的输出是一个列表,所以我假设这就是为什么这种方法不起作用:
dunn_results<-df %>%
group_by(var1, var2) %>%
summarise(p.value=dunn.test(d, grp)$p.value)我从上面的代码中得到了以下错误:
Error: column 'p.value' is of unsupportetd type NULL发布于 2019-11-17 10:34:33
Dunn测试结构
你已经很接近了。问题不在于dunn.test返回一个列表--您处理得很正确。问题是该列表没有名为p.value.的成员
library(tidyverse)
library(dunn.test)
rslt <- dunn.test(df$d, df$grp)
str(rslt)
#> List of 5
#> $ chi2 : num 0.0476
#> $ Z : num -0.218
#> $ P : num 0.414
#> $ P.adjusted : num 0.414
#> $ comparisons: chr "A - Z"
rslt$p.value
#> NULL不过,这应该是可行的:
dunn_results <- df %>%
group_by(var1, var2) %>%
summarise(p.value = dunn.test(d, grp)$P)更新:额外的错误处理
这还没有结束,因为dunn.test()可能会返回错误。在样本集中,有两个错误:
因此,我们需要将运行Dunn测试并提取P值向量的函数放入一个错误捕获函数中。对于Dunn测试作为摘要的p.value经历的任何错误,这将静默地返回NA。
dunn_test_wrapper <- function(x, y) {
tryCatch(dunn.test(x, y)$P, error = function(cond) NA)
}
dunn_results<-df %>%
group_by(var1, var2) %>%
summarise(p.value = dunn_test_wrapper(d, grp))https://stackoverflow.com/questions/58894484
复制相似问题