如何绘制wilcox.test()的p值?

时间:2015-05-28 16:25:13

标签: r plot

我正在尝试将两个算法f(n)g(n)wilcox.test()进行比较,以表明f优于g

数据框如下:

Algorithm 0   20 40 60 ...
f         100 90 80 70 ...
g         110 92 81 71 ...
f         130 100 90 85 ...
g         135 99 95 90 ...
f         ...
g         ...
f         ...
g         ...
...

我手动获得每列(大约40列)的p值,并将它们存储到csv中并绘制它。

> wilcox.test(..., alternative="less", paired=FALSE) for column 0
> wilcox.test(..., alternative="less", paired=FALSE) for column 20
> wilcox.test(..., alternative="less", paired=FALSE) for column 40
> # feels like forever

问题是,我发现我在实现算法时遇到了错误,所以我需要重新运行程序并再次执行。

如何获取每列的p值并绘制它?这可能是一个新手问题,我知道这可能看起来像一个没有充分调查的问题,但我需要认真帮助。所以请帮助我。

2 个答案:

答案 0 :(得分:0)

你需要一个for循环:

results <- numeric(0) # an empty vector 
for (i in 1:ncol(mydata))) {
    results[i] <- wilcox.test(mydata[,i] ~ mydata$algorithm)$p.value
}

未测试。

答案 1 :(得分:0)

假设您的数据位于dat data.frame:

Algorithm =rep(c("f","g"),leng=nrow(dat))
Names=unique(Algorithm )
pvals=apply(dat,2,function(co){
sdf=lapply(Names,function(x) co[Names == x])
wilcox.test(sdf[[1]],sdf[[2]], alternative="less", paired=FALSE)$p.value
})

barplot(pvals,names.arg = colnames(dat),col=rainbow(ncol(dat)))

enter image description here