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 ‘ |
... |
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)