首页 文章

Wilcoxon Rank Sum测试在每种可能的组合中

提问于
浏览
3

我有5个数值的群体,我想在每种可能的组合中运行Wilcoxon秩和检验 .

运行测试后,我想将p值存储在矩阵中 . 我也附加了数据集 .

Population1 Population2 Population3 Population4 Population5
3.09    3.51349697  3.164190018 3.518407469 3.620480389
2.575   3.635713772 3.856745405 3.795780041 3.47405986
4.045   4.345129949 3.723526111 4.033668309 3.799417462
4.05    4.228530049 3.782229842 3.90679146  3.781252404
2.36    3.656315008 3.590211196 3.204999548 3.333981072
3.265   4.190930929 3.712583274 3.927421494 3.597604196
3.86    4.34070563  3.860239538 4.047323965 3.765763075
3.715   3.932171123 3.575872952 3.360518373 3.362403803
3.155   3.743746825 3.87061761  3.722034198 3.716139828

我编写了一个代码,但它只返回最后一列

x=read.csv("Book1.csv")

pvalue<-matrix(nrow=5, ncol=5)

for(i in 1:length(x)){
  for(j in 1:length(x)){
   }
  pvalue[i*j]<-wilcox.test(x[,i], x[,j], paired=TRUE)$p.value 
  colnames(pvalue) <- colnames(x)
  rownames(pvalue)<- colnames(x)
}

我想要这种格式的输出

enter image description here

在此先感谢您的帮助 .

2 回答

  • 1

    你快到了;只有两个小错误:你的第一个}太早了,长度(x)是整个矩阵的长度,即45而不是5,这就是你想要的 .

    这应该工作:

    for(i in 1:length(colnames(x))){
               for(j in 1:length(colnames(x))){
                  pvalue[i,j]<-wilcox.test(x[,i], x[,j], paired=TRUE)$p.value 
         colnames(pvalue) <- colnames(x)
         rownames(pvalue)<- colnames(x)} }
    
  • 1

    你可以使用pairwise.wilcox.test,它会返回你想要的矩阵,并进行多次比较校正 .

    library('MASS')
    X <- mvrnorm(100,1:5, diag(5))
    pairwise.wilcox.test(t(X), g = seq(1,5), p.adjust.method = 'BH')
    

    g是定义组的因子,因此在转置后,您的第一行是第1组第2行第2组,依此类推 .

相关问题