2015-10-11 56 views
0

我使用來自qvalue包(bioconductor)的qvalue,並將其應用於來自t.test的pvalues。然後我將結果寫到一個txt文件中,但是我有兩列,一列用於pvalues,另一列用於qvalues。爲什麼發生這種情況?qvalue結果混亂,是兩列?

PVal<-as.matrix(Pval) 
str(PVal) 
qobj <- qvalue(PVal) 
qwrite(qobj, filename = "my-qvalue-results.txt") 

回答

1

這是函數的預期行爲。它返回估計qvalue的和原來的p值,你可以看到如下(從vignette拍攝)兩種:

qvalues: A vector of the estimated q-values (the main quantity of interest)

pvalues A vector of the original p-values

作爲一個簡單的例子:

set.seed(9) 
#fake p-values 
a <- runif(15) 
qvalue(a) 

> identical(a, qvalue(a)$pvalues) 
[1] TRUE 

正如你所看到的p值是相同的在運行qvalue函數之前和之後。

如果您對它們沒有興趣,您可以忽略p值列。此外,如果你只是想輸出中的qvalue的事:

#you should be using write and not qwrite (qwrite doesnt exist) 
qwrite(qobj$qvalues, filename = "my-qvalue-results.txt") 
+0

@ LyzandeR謝謝您的回覆,我想上面的代碼,但IAM越來越錯誤?錯誤:估計的pi0 <= 0.檢查您是否有有效的p值或使用其他lambda方法。 – Azize

+0

@ LyzandeR沒有上面的代碼作爲測試它產生的錯誤:錯誤:估計pi0 <= 0.檢查您有有效的p值或使用另一個lambda方法 – Azize

+0

這很奇怪。 'set.seed(10)'產生一個等於零的值:P。現在再試一次。 'runif'產生0到1之間的隨機值。現在用'set.seed(9)'嘗試它,它會起作用。 – LyzandeR