Combine p-values using the sum of z (Stouffer's) method
Combine p-values using the sum of z (Stouffer's) method
Combine \mjseqn p-values using the sum of z method\loadmathjax
sumz(p, weights =NULL, data =NULL, subset =NULL, na.action = na.fail, log.p =FALSE, log.input =FALSE)## S3 method for class 'sumz'print(x,...)
Arguments
p: A vector of significance values
weights: A vector of weights
data: Optional data frame containing variables
subset: Optional vector of logicals to specify a subset of the \mjseqn p-values
na.action: A function indicating what should happen when data contains NAs
log.p: Logical, if TRUE result is returned as log(p)
log.input: Logical, if TRUE the input \mjseqn p values are assumed to be logged
x: An object of class ‘sumz’
...: Other arguments to be passed through
Details
Defined as \mjdeqn \frac \sum _i=1^k w_i z(p_i)\sqrt \sum _i=1^k w_i ^ 2sum (w * z(p)) / sqrt(sum (w * w))
is a \mjseqn z where \mjseqn k is the number of studies and \mjseqn w are the weights \insertCite 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 \insertCite zaykin11metap
\insertNoCite becker94metap
\insertNoCite rosenthal78metap
The values of \mjseqn p_i should be such that \mjseqn 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 \mjseqn 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 p-values.
Returns
An object of class ‘sumz’ and ‘metap’ , a list with entries - z: Transformed sum of \mjseqn z values
p: Associated \mjseqn p-value
validp: The input vector with illegal values removed
weights: The weight vector corresponding to validp
References
\insertAllCited
Author(s)
Michael Dewey
See Also
See also plotp
Examples
data(dat.metap)teachexpect <- dat.metap$teachexpect
sumz(teachexpect)# z = 2.435, p = 0.0074, from Beckerbeckerp <- dat.metap$beckerp
sumz(beckerp)# z = 1.53, NS, from Beckerprosenthal <- dat.metap$rosenthal
sumz(rosenthal$p)# 2.39, p = 0.009sumz(p, df, rosenthal)# 3.01, p = 0.0013validity <- 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)