【发布时间】:2023-02-14 12:55:52
【问题描述】:
大家好, 我有一个这样的数据框,我想用结果 LesionResponse 来估计 wilcoxon 测试每个特征的 p 值。我实际上有 158 个特征和 1052 行,这是一个示例:
structure(list(LesionResponse = structure(c(1L,2L,2L,2L,1L,2L), .Label = c("0", "1"), class = "factor"), F1= c(677.0119, 275.281, 582.131, 173.747, 6140.739, 558.277), F2=c(27390, 2818, 9856, 3176, 2312, 9800), F3=c(6573,876,246,432,9840,3455)), row.names = c(NA, -6L), class = c("data.frame"))
我试过这个并且有效
data->d
out <- lapply(3:158, function(x) pairwise.wilcox.test(d[[x]],d[["LesionResponse"]]))
names(out) <- names(d)[3:158]
pvalue<-sapply(out, function(x) {
p <- x$p.value
n <- outer(rownames(p), colnames(p), paste, sep='v')
p <- as.vector(p)
names(p) <- n
p
})
在那之前没问题,但我记得我必须在组之间使用波浪号 bc LesionResponse 是阶乘... 当我想使用它时,它无法正常工作......我收到一条错误消息:
Error in factor(g) : argument "g" is missing, with no default
第二点,如果我想用 Bonferroni 或 Hochberg 方法调整结果,我是否必须将它包含在前面的公式中,或者我必须尝试这样的事情(其他主题中的某人给了我这个提示):
pvalue.adj<-pvalue %>%
mutate(bonferroni = p.adjust(p_values, method="bonferroni"),
hochberg = p.adjust(p_values, method="hochberg"))
谢谢 !
【问题讨论】:
-
“我记得我必须在组之间使用波浪号”……哪里说的?
g可以是“分组向量或因子”(来自?pairwise.wilcox.test)。如果您的第一个代码块有效,是否有迹象表明结果不正确?如果不是,为什么要改变? -
事实上,我是一名学习 R 的医学生。我只是一个初学者,并不知道所有的技巧,所以我让老板检查我调整后的结果(没有低于 0.05 的值......),他告诉了我。事实上,我选择 pairwise.wilcox 因为这个......
-
@r2evans 事实上,当我绘制未经调整的值时,有一个很大的信号,其中大部分 p 值低于 0.05。在肯定保守的Hochberg之后,变化很大,我的所有值都接近1......
标签: r statistics pairwise.wilcox.test bonferroni