Combine p-values using the sum of z method
sumz(p, weights = NULL, data = NULL, subset = NULL, na.action = na.fail,
log.p = FALSE, log.input = FALSE)
# S3 method for sumz
print(x, ...)
An object of class ‘sumz
’ and
‘metap
’, a list with entries
Transformed sum of z values
Associated p-value
The input vector with illegal values removed
The weight vector corresponding to validp
A vector of significance values
A vector of weights
Optional data frame containing variables
Optional vector of logicals to specify a subset of the p-values
A function indicating what should happen when data contains NAs
Logical, if TRUE result is returned as log(p)
Logical, if TRUE the input p values are assumed to be logged
An object of class ‘sumz
’
Other arguments to be passed through
Michael Dewey
Defined as _i=1^k w_i z(p_i) _i=1^k w_i ^ 2sum (w * z(p)) / sqrt(sum (w * w)) is a z where k is the number of studies and w are the weights stouffer49metap. By default the weights are equal. In the absence of effect sizes (in which case a method for combining effect sizes would be more appropriate anyway) best results are believed to be obtained with weights proportional to the square root of the sample sizes zaykin11metap
becker94metap rosenthal78metap
The values of p_i should be such that 0 < p_i < 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. If the omitted p values had supplied weights a further warning is issued.
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
See also plotp
data(dat.metap)
teachexpect <- dat.metap$teachexpect
sumz(teachexpect) # z = 2.435, p = 0.0074, from Becker
beckerp <- dat.metap$beckerp
sumz(beckerp) # z = 1.53, NS, from Beckerp
rosenthal <- dat.metap$rosenthal
sumz(rosenthal$p) # 2.39, p = 0.009
sumz(p, df, rosenthal) # 3.01, p = 0.0013
validity <- dat.metap$validity$p
sumz(validity) # z = 8.191, p = 1.25 * 10^{-16}
all.equal(exp(sumz(validity, log.p = TRUE)$p), sumz(validity)$p)
all.equal(sumz(log(validity), log.input = TRUE)$p, sumz(validity)$p)
Run the code above in your browser using DataLab