[R] phyper returning zero

Martin Maechler maechler at stat.math.ethz.ch
Fri Mar 15 10:36:46 CET 2013


>>>>> "eh" == elliott harrison <e.harrison at epistem.co.uk>
>>>>>     on Fri, 15 Mar 2013 08:52:36 +0000 writes:

    eh> Hi,
    eh> I am attempting to use phyper to test the significance
    eh> of two overlapping lists. I keep getting a zero and
    eh> wondered if that was determining non-significance of my
    eh> overlap or a p-value too small to calculate?

well what do you guess?  (:-)

    eh> overlap = 524
    eh> lista = 2784
    eh> totalpop = 54675
    eh> listb = 1296

    eh> phyper(overlap, lista, totalpop, listb,lower.tail = FALSE, log.p=F)
    eh> [1] 0

Well, just *do* use  log.p=TRUE :

  > phyper(overlap, lista, totalpop, listb,lower.tail = FALSE, log.p=TRUE)
  [1] -800.0408

so, indeed   P = exp(-800)  which is smaller than the smallest
positive number in double precision,
which by the way is available in R as

 > .Machine$double.xmin
 [1] 2.225074e-308

I'm pretty sure that I cannot think of a situation where it is
important to know that the more exact probability is around  
10^(-347.45)

  > phyper(overlap, lista, totalpop, listb,lower.tail = FALSE, 
           log.p=TRUE) / log(10)
 [1] -347.4533

rather than to know that it is very very very small.
Martin

> 
    eh> If I plug in some different values I get a p-value but since zero is actually lower is the overlap significant, or more likely have I made a mistake in using the function?
    eh> phyper(10, 100, 20000, 100,lower.tail = FALSE, log.p=F)
    eh> [1] 2.582795e-12


    eh> Thanks
    eh> Elliott



More information about the R-help mailing list