r语言 - 用于威尔科森测试的两个统计函数之间的差异



我知道stats::wilcox.test和stats::p airwise.wilcox.test之间的主要区别在于计算p.adjust值。此值仅由 stats::p airwise.wilcox.test 一步计算。但是当我收到以下代码的错误时,有一些连线的东西。我希望得到相同的结果,但它得到组大小的错误?!

df <- dataframe(group = c(rep("before",5), rep("after",5)),
a = runif(1:10),
b = runif(1:10),
c = runif(1:10))
#wilcox.test withour error
df %>%
summarise_each(funs(wilcox.test(.[group == "before"], .[group == "after"], 
paired = TRUE)$p.value), vars = a:c)
#pairwise.wilcox.test with error
df %>%
summarise_each(funs(pairwise.wilcox.test(.[group == "before"], .[group == "after"])), 
vars = a:c)

您的代码有多个问题。因此,我会尝试这个:

首先使用简单的子集检查函数和结果

wilcox.test(a ~ group, df)
pairwise.wilcox.test(df$a, df$group, p.adjust.method = "none") 

然后,尝试tidyverse

df %>% 
gather(key, value, -group) %>% 
group_by(key) %>% 
summarise(pvalue = wilcox.test(value ~ group)$p.value)
# A tibble: 3 x 2
key   pvalue
<chr>  <dbl>
1 a     0.0916
2 b     0.386 
3 c     0.969

绝对不需要使用成对版本,因为数据中只有两个组值。 如果您坚持总结,请尝试

df %>% 
summarise_at(vars(-1), list(~wilcox.test(. ~ group)$p.value))
a         b         c
1 0.09155406 0.3858534 0.9693262

使用的数据

set.seed(123)
df <- data.frame(group = c(rep("before",5), rep("after",5)),
a = runif(50),
b = runif(50),
c = runif(50))

最新更新