Learn R Programming

metap (version 0.8)

sumlog: Combine p-values by the sum of logs method

Description

Combine \(p\)-values by the sum of logs method, also known as Fisher's method, and sometimes as the chi-square (2) method.

Usage

sumlog(p)
# S3 method for sumlog
print(x, ...)

Arguments

p

A vector of \(p\)-values

x

An object of class ‘sumlog

...

Other arguments to be passed through

Value

An object of class ‘sumlog’ and ‘metap’, a list with entries

chisq

Value of chi-squared statistic

df

Associated degrees of freedom

p

Associated p-value

validp

The input vector with the illegal values removed

%% ...

Details

The method relies on the fact that $$\sum - 2 \log p$$ is a chi-squared with \(2 k\) df where \(k\) is the number of studies.

The values of \(p\) should be such that \(0<p\le{}1\) and a warning is given if that is not true. An error is given if possibly as a result of deletions fewer than two studies remain.

The plot method for class ‘metap’ calls schweder on the valid \(p\)-values. Inspection of the distribution of \(p\)-values is highly recommended as extreme values in opposite directions do not cancel out. See last example. This may not be what you want.

References

Becker, B J. Combining significance levels. In Cooper, H and Hedges, L V, editors A handbook of research synthesis, chapter 15, pages 215--230. Russell Sage, New York, 1994.

Rosenthal, R. Combining the results of independent studies. Psychological Bulletin, 85:185--193, 1978.

Sutton A J, Abrams, K R, Jones D R, Sheldon T A and Song, F. Methods for meta-analysis in medical research. Wiley, Chichester, 2000.

See Also

See also schweder

Examples

Run this code
# NOT RUN {
data(teachexpect)
sumlog(teachexpect) # chisq = 69.473, df = 38, p = 0.0014, from Becker
data(beckerp)
sumlog(beckerp) # chisq = 18.533, df = 10, sig
data(rosenthal)
sumlog(rosenthal$p) # chisq = 22.97, df = 10, p = 0.006 one sided
data(cholest)
sumlog(cholest) # chisq = 58.62, df = 68, p = 0.78
data(validity)
sumlog(validity) # chisq = 159.82, df = 40, p = 2.91 * 10^{-16}
sumlog(c(0.0001, 0.0001, 0.9999, 0.9999)) # is significant
# }

Run the code above in your browser using DataLab