0

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

排序和绘图工作得很好,但我很难找到一种方法将 wilcox.test 应用于以下模式中的数据框:

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

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

我也想将所有 p 值存储在一个数据框中,其中包含一行(包含 p 值),并且每一行都具有作为 wilcox.test 中参数的两列的名称,因为我不想只绘制所有列(每列都代表一个“解决方案”),但我也想在控制台中打印每个测试的 p 值(例如:“Wilcoxon-test with 'Solution1' and 'Solution2'导致 p 值:'来自解决方案 1 和解决方案 2 的 wilcox.test 的 p 值',这意味着解决方案是/不是显着不同的“)。

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

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

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

4

1 回答 1

0

似乎是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()在每对上完成。例如,第 1 列与第 2 列:

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

w$p.value
[1] 9.812123e-51
于 2021-01-10T20:35:16.023 回答