我有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)
}
我想要这种格式的输出
提前感谢您的帮助。
答案 0 :(得分: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 :(得分: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组,依此类推。