This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Limma Lmfit/Ebayes And P-Values Of 0?

This is something I've been thinking about on and off since the first time I ran through a full microarray differential expression workflow in R a few months ago.

I noticed that applying lmFit and eBayes resulted in a number of p-values that are 0. While I acknowledge that there are very many different ways of calculating p-values and that 0 is potentially valid, I have not seen instances in the literature of p-values of 0. It seems more like an artifact from rounding, or something other setting somewhere that I'm missing. I haven't set the number of display significant digits, and everything else is default environment-wise. I see the same values when I write out the results using write.fit.

Please let me know if I'm crazy or just missing something. It's a little awkward doing p-value histograms and such on this data, and then trying to figure out how so many values could be exactly 0 in order to explain the results to others.

Thank you

bioconductor limma

Update: investigating further, it seems to be only in the output of write.fit, even though I'm not trying to output corrected p-values. If I take the actual output of eBayes and output the uncorrected p-values using another method, it looks like they don't end up being rounded.

Update2: write.fit defaults to rounding to 3 digits, which doesn't seem to match the behavior of similar methods like topTable. I somehow missed that there's an argument in write.fit to specify the number to round to. Closing since it turns out this wasn't a great question.

1 answer

There is a limit to the accuracy of floating point representations inside of a computer. Zero is most likely the indication that this limit has been reached and from that point of view the value that you get is indistinguishable from all other small values.

The limit is around 1E-16 so your p-values are all smaller than that.

Is this something you've seen before? I'm mostly concerned because I've rarely seen such values reported in literature, and our sample sizes are not large.

I've seen this before in R with an unrelated package and I believe it to be an underflow type error. Of course you should not report 0 for you p-values as it would be incorrect.

Log in to answer this question.