Mann-Whitney-Wilcoxon在R中给出错误测试

时间:2015-12-28 18:03:24

标签: r distribution

我正在尝试跨大型数据集运行Mann-Whitney测试。以下是我输入的摘录:

GeneID  GeneID-2    GeneName    TSS-ID  Locus-ID    TAp73fTfTAAdEmp TAp73fTfTFAdEmp TAp73fTfTJAdEmp TAp73fTfTAAdCre TAp73fTfTFAdCre TAp73fTfTJAdCre
ENSMUSG00000028180  ENSMUSG00000028180  Zranb2  TSS1050,TSS17719,TSS52367,TSS53246,TSS72833,TSS73222    3:157534159-157548390   11.32013333 11.66344    11.87956667 13.01974667 14.70944667 10.94043867
ENSMUSG00000028184  ENSMUSG00000028184  Lphn2   TSS23298,TSS2403,TSS74519   3:148815585-148989316   15.0983 15.09572    14.03578667 17.00742667 17.90735333 14.69675333
ENSMUSG00000028187  ENSMUSG00000028187  Rpf1    TSS66485    3:146506347-146521423   12.34542667 14.11470667 10.493766   14.57954    11.93746667 11.07405867
ENSMUSG00000028189  ENSMUSG00000028189  Ctbs    TSS36674,TSS72417   3:146450469-146465849   1.288003867 1.435658    1.959620667 1.427768    1.502116667 1.243928267
ENSMUSG00000020755  ENSMUSG00000020755  Sap30bp TSS14892,TSS218,TSS54781,TSS58430   11:115933281-115966725  31.91070667 31.68585333 26.86939333 39.05116667 30.62916667 27.22893333
ENSMUSG00000020752  ENSMUSG00000020752  Recql5  TSS26689,TSS42686,TSS60902,TSS75513,TSS9111 11:115892594-115933477  10.55415467 9.373216667 8.315984    7.255579333 7.022178    8.553787333
ENSMUSG00000020758  ENSMUSG00000020758  Itgb4   TSS23937,TSS28540,TSS29211,TSS34600,TSS36953,TSS4070,TSS6591,TSS68296   11:115974708-116008412  130.2124    117.3862    129.323 134.1108667 134.8743333 165.3330667
ENSMUSG00000069833  ENSMUSG00000069833  Ahnak   TSS54612    19:8989283-9076919  116.3223333 135.2628    130.1286    147.045 142.8164    127.2352
ENSMUSG00000033863  ENSMUSG00000033863  Klf9    TSS87300    19:23141225-23166911    23.23418667 27.46006    26.56143333 21.09004667 18.47022    16.63767333
ENSMUSG00000069835  ENSMUSG00000069835  Sat2    TSS71535,TSS9615    11:69622023-69623870    0.975045133 0.886760067 1.593631333 1.469496    1.2373384   1.292182733
ENSMUSG00000028233  ENSMUSG00000028233  Tgs1    TSS24151,TSS28446,TSS50213,TSS68499,TSS79096    4:3574874-3616619   4.221024667 4.212087333 4.160574    5.113266667 6.917347333 5.22148
ENSMUSG00000028232  ENSMUSG00000028232  Tmem68  TSS12134,TSS25773,TSS25778,TSS49743,TSS7797 4:3549040-3574853   4.048868    3.906129333 6.024607333 4.613682    6.292972    4.287184

我为t-test编写了相同的脚本并且它有效。然而," wilcox"给了我错误:

Error in wilcox.test.default(x[i, 1:3], x[i, 4:6], var.equal = TRUE) : 
  'x' must be numeric

我的代码是:

library(preprocessCore)
err <-file("err.Rout", open="wt")
sink(err, type="message")
x <- read.table("Data.txt", row.names=1, header=TRUE, sep="\t",        na.strings="NA")
x<-x[,5:ncol(x)] 
p<-matrix(0,nrow(x),3)
for (i in 1:nrow(x)) { 
myTest <- try(wilcox.test(x[i,1:3], x[i,4:6], var.equal=TRUE))
if (inherits(myTest, "try-error"))
{ p[i,2]=1 } 
else 
{p[i,2]=myTest$p.value; num=rowMeans(x[i,1:3], na.rm = FALSE);    den=rowMeans(x[i,4:6], na.rm = FALSE); ratio=num/den; p[i,1]=ratio }
}
p[,3] = p.adjust(p[,2], method="none")
colnames(p) <- c("FoldChange", "p-value", "Adjusted-p")
write.table(p, file = "tmpPval-fold.txt", append = FALSE, quote = FALSE, sep = "\t", row.names = FALSE, col.names = TRUE)
sink()

我很感激你在这件事上的帮助。正如我所说,如果我使用测试而不是&#39; wilcox&#39;它完美地工作。

1 个答案:

答案 0 :(得分:1)

目前您的代码存在(至少)两个问题,其中一个是导致该错误的原因。 x[i,1:3]返回的对象的类是data.frame,它是一个列表对象,未通过is.numeric内的wilcox.test测试。尝试强迫:

wilcox.test(as.numeric(x[1,(1:3)]), as.numeric(x[1,(4:6)]), var.equal=TRUE)

但是什么-F是var.equal在调用非参数测试时做的,它不会有任何相等方差的假设? (实际上它正在被忽略的是正在发生的事情。)当你只提供3个项目而不是3个项目时,你如何期望从测试中获得有用的信息。这永远不会让人感到非常重要&#34;甚至特别提供信息。我怀疑t.test在3比3时可以提供信息,但是基于值排序的非参数测试将更不可能给出&#34;显着性的统计信号&# 34。