2015-12-28 17 views
0

我試圖跨大數據集運行Mann-Whitney測試。這裏是我的輸入摘錄:R中的Mann-Whitney-Wilcoxon測試給出錯誤

 
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測試腳本,它的工作。但是,通過「威爾科克斯」替換試驗是給我的錯誤:

 
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() 

我會很感激你在這個問題上的幫助。正如我所說,如果我使用測試而不是'wilcox',它會很好地工作。

+0

添加一個可重複的示例,因爲它是我們無法測試您的數據集。 – MLavoie

+0

'x'和'y'應該是向量。你看起來是一個3列數據框的子集...... –

+0

在你的數據中,當調用'wilcox.test'中有像'19:8989283-9076919'這樣的東西時,它看起來像你引用的列,這很可能導致錯誤。 – steveb

回答

1

您的代碼目前存在(至少)兩個問題,其中之一是導致該錯誤的原因。由x[i,1:3]返回的對象的類是data.frame,它是一個列表對象,並且wilcox.test內的is.numeric測試失敗。試着強迫:

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

但是-的-F是var.equal在做一個呼叫到非參數檢驗,不會有方差相等的任何假設? (事實上​​,它被忽略的是發生了什麼。)當你只給3個項目和3個項目時,你如何從測試中獲得有用的信息。這永遠不會是「重要的」,甚至是特別的信息量。我懷疑t.test可能是3比3的信息,但基於數值排序的非參數測試更不可能給出「顯着性」的統計信號。

+0

謝謝,我同意var.equal不應該在那裏。我只是從ttest複製相同的腳本,以表明它在那裏工作。至於樣本數量,這是一個較大的Python腳本的一部分,它有時會比較每組100個樣本,而這只是3個樣本的樣本/試驗,可以讓事情更快地工作。儘管如此,測試工作只需將其轉換爲數字。所以謝謝你提出這個建議。 – BioProgram

相關問題