将 wilcox.test 应用于数据框中的所有配对列

问题描述

对于我的硕士项目我尝试按中位数对(由用户)给定数据帧的所有列进行排序,通过特定模式(稍后提到)在列上应用 wilcox.test,然后在盒须图中绘制每列的值。

排序和绘图工作正常,但我找不到将 wilcox.test 应用于以下架构中的数据框的方法:

wilcox.test(i,j,paired=TRUE)

i=1j=2 并且都递增直到 j=ncol(dataframe)。所以我想用第 1 列和第 2 列的参数运行该函数,然后是第 2 列和第 3 列,依此类推,直到 j 是数据框的最后一列。

我也想将所有 p 值存储在一行(包含 p 值)的数据框中,每一行都有两列的名称,它们是 wilcox.test 中的参数,因为我不仅想要绘制所有列(每列代表一个“解决方案”),但我也想在控制台中打印每个测试的 p 值(类似于:“Wilcoxon-test with 'Solution1''Solution2' 得到 p 值:'p-value from wilcox.test of Solution1 和 Solution2',这意味着解决方案是/没有显着不同").

我尝试调整其他帖子中有关此问题的一些代码,但没有任何效果。不幸的是,我在 R 方面也非常缺乏经验,所以我希望我上面写的也不是完全胡说八道。 我也尝试以 Java 方式使用 for 循环和增量迭代数据帧的列,因为这是我教过的唯一编程语言,但这根本不起作用(真令人惊讶)。>

我的代码基于具有非常不同值的数据框创建的图:

谢谢大家给我的建议,非常感谢!

解决方法

似乎是 matrixTests 包的工作。以下是使用 iris 数据集的演示:

library(matrixTests)
col_wilcoxon_twosample(iris[,1:3],iris[,2:4])

             obs.x obs.y obs.tot statistic       pvalue alternative location.null exact corrected
Sepal.Length   150   150     300   22497.5 9.812123e-51   two.sided             0 FALSE      TRUE
Sepal.Width    150   150     300    7793.5 4.151103e-06   two.sided             0 FALSE      TRUE
Petal.Length   150   150     300   19348.5 3.735718e-27   two.sided             0 FALSE      TRUE

返回的结果与每对上的 wilcox.test() 匹配。例如,第一列与第二列:

w <- wilcox.test(iris[,1],2])

w$p.value
[1] 9.812123e-51

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...