Anomal pvalue distribution and qvalue calculation
0
1
Entering edit mode
6.5 years ago
oselm ▴ 50

I am working on differential gene expression data ans I am using the qvalue R package to calculate qvalues of out of this pvalues distribution:

Pval distribution

The lowest qs are around 0.22.

If we have a look at the p-values histogram, we see that there are actually more low ps than expected by chance. But with a q cut-off at 0.15 there is only one marker resulting as significant. When raising the threshold to 0.25, the number of significant tests raise to 10'000.

I think this is due to the fact that low ps frequency decreases toward 0, therefore making it not possible to calculate respective qvalues.

How do you interpret this? Is there a way to obtain a qvalue in this situation?

thank you

Os

RNA-Seq q-value • 1.8k views
ADD COMMENT
0
Entering edit mode

What does pi0est() return? I wonder if the gradual (rather than sudden) increase in p-value density from right to left is throwing that off. What do you get if you just use p.adjust()?

ADD REPLY
0
Entering edit mode

Pi0est returns:

$pi0
[1] 0.5676673

$pi0.lambda
 [1] 0.9271837 0.8510835 0.7918458 0.7430548 0.7095104 0.6840553 0.6615802 0.6438723 0.6268776
[10] 0.6143542 0.6053025 0.5967893 0.5902369 0.5834115 0.5833420 0.5778953 0.5764620 0.5848014
[19] 0.5900136

$lambda
 [1] 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90
[19] 0.95

$pi0.smooth
 [1] 0.8612499 0.8275990 0.7945038 0.7626412 0.7326789 0.7051467 0.6803975 0.6586166 0.6398420
[10] 0.6239913 0.6108811 0.6002522 0.5917985 0.5851860 0.5800655 0.5760807 0.5728928 0.5701815
[19] 0.5676673

With p.adjust() (using the fdr method) the result is similar, shown here below:

adj.pval vs pval

ADD REPLY
1
Entering edit mode

Interesting, my only guess is that this is due to the decrease in p-value frequency with very low values. You might want to post this on the bioconductor support site, since then John Storey (author of the qvalue package) or Gordon Smyth (I think he wrote p.adjust()) can have a look.

ADD REPLY

Login before adding your answer.

Traffic: 2153 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6