簡體   English   中英

R-x中的Wilcoxon檢驗必須是數字誤差

[英]Wilcoxon test in R - x must be numeric error

我在R中的wilcox.test有問題。我的數據對象是一個矩陣,其中第一列包含一個名稱,所有其他列包含一個(基因表達式)度量,它是數字:

str(myMatrix)
'data.frame':   2000 obs. of  143 variables:
$ precursor               : chr  "name1" "name2" "name3" "name4" ...
$ sample1: num  1.46e-03 2.64e+02 1.46e-03 1.46e-03 1.46e-03 ...
$ sample2: num  1.46e-03 1.91e+02 1.46e-03 1.46e-03 1.46e-03 ...
$ sample3: num  1.46e-03 3.01e+02 1.46e-03 1.46e-03 4.96 ...

對於所有2000行,我想測試矩陣的2個給定部分之間是否存在差異。 我嘗試了4種不同的方式:

wilcox.test(as.numeric(myMatrix[i,2:87],myMatrix[i,88:98]))$p.value
#[1] 1.549484e-16

wilcox.test(myMatrix[i,2:87],myMatrix[i,88:98])$p.value
#Error in wilcox.test.default(myMatrix[i, 2:87], myMatrix[i, 88:98]) : 
#'x' must be numeric

t.test(as.numeric(myMatrix[i,2:87],myMatrix[i,88:98]))$p.value
#[1] 0.2973957

t.test(myMatrix[i,2:87],myMatrix[i,88:98])$p.value
#[1] 0.3098505

因此,正如您所看到的,只有在已經使用數字值時才使用as.numeric() ,我得到的結果沒有用於Wilcoxon測試的錯誤消息,但結果與t.test結果完全不同,即使它們不應該。

使用在線工具手動驗證表明使用as.numeric()值的t.test結果是錯誤的。

關於如何解決這個問題並進行正確的Wilcoxon測試的任何建議? 如果您需要更多信息,請告訴我。

實際上,myMatrix [i,2:87]仍然是一個data.frame。 請參閱以下示例。

> myMat  
    fir X1 X2 X3 X4  
1 name1  1  5  9 13  
2 name2  2  6 10 14  
3 name3  3  7 11 15  
4 name4  4  8 12 16  
> class(myMat[1, 2:4])  
[1] "data.frame"  
> as.numeric(myMat[1, 2:4])  
[1] 1 5 9  

將您的數據更改為真實Matrix將解決您的問題。

> myMat_01 <- myMat[, 2:5]  
> rownames(myMat_01) <- myMat$fir  
> myMat_01 <- as.matrix(myMat_01)  
> class(myMat_01[1, 2:4])  
[1] "integer"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM