Hi guys,
I'm running MethylKit to find differently methylated CpG. I have three replicates in the control and three in the treatment. When I run the code myDiff=calculateDiffMeth(meth,mc.cores=4,method="fdr")
and then hyper=getMethylDiff(myDiff,difference=10,qvalue=0.01,type="hyper")
the output give me qvalues lower than pvalues. Some of these pvalues are not even statistically significant. The result is the same changing the adjustment method (SLIM/BH)
> hyper
methylDiff object with 12912 rows
--------------
chr start end strand pvalue qvalue meth.diff
chr1.1 226898 226898 + 0.02917285 0.001714451 20.02165
chr1.1 227164 227164 + 0.43722433 0.001714451 11.76471
chr1.1 227258 227258 + 0.07721846 0.001714451 30.04769
chr1.1 273666 273666 + 0.08245243 0.001714451 15.38462
chr1.1 293303 293303 + 0.04406780 0.001714451 15.38462
chr1.1 297572 297572 + 0.33056133 0.001714451 11.02757
How is it possible to have qvalues higher than pvalues with so many multiple comparisons (~8 millions )? What should I do to overcome this problem and find reliable results (p-value lower than 0.05 and q-value lower than 0.01).
You may try to use the standard
p.adjust
withmethod = "BH
" (which is the FDR-correction) on the hyper's pvalue.It may be that the parallel computing messed up the qvalues.
Have you solved the same q-value problem? I had the same problem
This Cross Validated post may be helpful to you:
https://stats.stackexchange.com/questions/263831/over-represented-values-in-fdr-adjusted-p-values