Calculate the p-value for an omnibus GFisher test when input p-values are independent. This is the gold standard for independent inputs.
pval.oGFisher_ind(p, DF, W, combine = "cct")A numeric vector of input p-values.
A matrix of degrees of freedom. Each row is the df vector for a GFisher test.
A matrix of weights. Each row is the weight vector for a GFisher test.
Character string: "cct" for Cauchy combination (default), or
"minp" for minimum p-value with multivariate normal distribution.
A list with the following components:
The p-value of the oGFisher test
Vector of individual p-values for each GFisher test
Calculate oGFisher P-Value Under Independence
This function is the gold standard for oGFisher tests under independence.
Cauchy Combination (combine = "cct"):
Uses the Cauchy combination test statistic. The p-value is: $$P = P(\text{Cauchy} > \text{cct})$$
For extremely large CCT values (> 1e15), uses the approximation \(P \approx 1/(\text{cct} \cdot \pi)\).
Minimum P-Value (combine = "minp"):
Uses the correlation structure among GFisher tests (computed via getGFisherCOR
with M = I) to calculate the p-value of the minimum p-value statistic via
multivariate normal distribution.
Zhang, H., & Wu, Z. (2023). The generalized Fisher's combination and accurate p-value calculation under dependence. Biometrics, 79(2), 1159-1172.
Liu, Y., & Xie, J. (2020). Cauchy combination test: a powerful test with analytic p-value calculation under arbitrary dependency structures. Journal of the American Statistical Association, 115(529), 393-402.
if (FALSE) { # \dontrun{
# Requires coga package
if (requireNamespace("coga", quietly = TRUE)) {
set.seed(122)
n <- 10
nGF <- 20
# Create test configurations
DF <- matrix(runif(n * nGF, 0.5, 5), ncol = n) / 10
W <- abs(matrix(rnorm(n * nGF), ncol = n))
# Test data
p <- runif(n)
p[1] <- 0.00001
# CCT combination (default)
result_cct <- pval.oGFisher_ind(p = p, DF = DF, W = W, combine = "cct")
print(result_cct)
# Minimum p-value combination
result_minp <- pval.oGFisher_ind(p = p, DF = DF, W = W, combine = "minp")
print(result_minp)
# Compare with general method
result_general_cct <- pval.oGFisher(p = p, DF = DF, W = W, M = diag(n),
method = "MR", combine = "cct")
print(result_general_cct)
}
} # }