sumlog {metap}R Documentation

Combine p-values by the sum of logs (Fisher's) 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, log.p = FALSE, log.input = FALSE)
## S3 method for class 'sumlog'
print(x, ...)

Arguments

p

A vector of significance values

log.p

Logical, if TRUE result is returned as log(p)

log.input

Logical, if TRUE the input \(p\) values are assumed to be logged

x

An object of class ‘sumlog

...

Other arguments to be passed through

Details

The method relies on the fact that \[\sum_{i=1}^k - 2 \log p_i\] is a chi-squared with \(2 k\) df where \(k\) is the number of studies (Fisher 1925).

The values of \(p_i\) should be such that \(0 < p_i\le 1\) and a warning is given if that is not true. A warning is given if, possibly as a result of removing illegal values, fewer than two values remain and the return values are set to NA.

The log.input parameter may be beneficial when the input values are already logged and would be small if exponentiated since it avoids a conversion.

The plot method for class ‘metap’ calls plotp 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.

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

Author(s)

Michael Dewey

References

Becker BJ (1994). “Combining significance levels.” In Cooper H, Hedges LV (eds.), A handbook of research synthesis, 215–230. Russell Sage, New York.

Fisher RA (1925). Statistical methods for research workers. Oliver and Boyd, Edinburgh.

Rosenthal R (1978). “Combining results of independent studies.” Psychological Bulletin, 85, 185–193.

Sutton AJ, Abrams KR, Jones DR, Sheldon TA, Song F (2000). Methods for meta-analysis in medical research. Wiley, Chichester.

See Also

See also plotp

Examples

data(dat.metap)
teachexpect <- dat.metap$teachexpect
sumlog(teachexpect) # chisq = 69.473, df = 38, p = 0.0014, from Becker
beckerp <- dat.metap$beckerp
sumlog(beckerp) # chisq = 18.533, df = 10, sig
rosenthal <- dat.metap$rosenthal
sumlog(rosenthal$p) # chisq = 22.97, df = 10, p = 0.006 one sided
cholest <- dat.metap$cholest$p
sumlog(cholest) # chisq = 58.62, df = 68, p = 0.78
validity <- dat.metap$validity$p
sumlog(validity) # chisq = 159.82, df = 40, p = 2.91 * 10^{-16}
sumlog(c(0.0001, 0.0001, 0.9999, 0.9999)) # is significant
all.equal(exp(sumlog(validity, log.p = TRUE)$p), sumlog(validity)$p)
all.equal(sumlog(log(validity), log.input = TRUE)$p, sumlog(validity)$p)

[Package metap version 1.11 Index]