# Combining very small p-values - Fisher's method gives 0

I have 30 p-values all very small (varying between $10^{-140}$ and $10^{-110}$), and I want to combine them in some way to get a single statistic. I learned about Fisher's method, but if I apply it to those small p-values, what I get is 0, probably due to lost of precision. But I want to get a certain number, not 0, since my purpose is to do the same for multiple methods and compare the statistics for each of them (each of the methods give 30 p-values, again all very small). I get 0 for each of the the methods, although they are in fact different, and getting 0 for all of the methods makes it impossible to compare them. A way is to get the mean of the logarithms of the 30 p-values, but I am not sure how much it makes sense. How can I solve this problem?

• You get 0 for what exactly? - the test statistic or its p-value? Can you explain your calculation? Aug 16, 2015 at 7:10
• I get 0 for the p-value of the statistic. I am doing the calculation using pchisq(-2*sum(log(pvals)), 2*length(pvals), lower.tail=FALSE) in R. I think what I should do is to add log.p=TRUE to the parameters of pchisq function. Aug 16, 2015 at 7:22
• Edit the question to include that info. - it comes down to evaluating the cdf of the chi-squared distribution far out in the upper tail. Aug 16, 2015 at 7:29
• Just curiosity: did R really give you such small p-values?! Most commands only go to 2*10^-16 as far as I know Aug 17, 2015 at 7:51
• Yes, I used Wilcoxon test (wilcox.test in R) and it gave those p-values. Aug 18, 2015 at 3:12

Note that Fishers method actually compares $-2\sum_{i=1}^k \log(p_i)$ to a $\chi^2_{2k}$ ... so Fisher would also be working on the log scale.