Calculate the p-value for an omnibus GFisher test, which combines multiple GFisher statistics using either Cauchy combination or multivariate normal distribution.
pval.oGFisher(
p,
DF,
W,
M,
p.type = "two",
method = "HYB",
combine = "cct",
nsim = NULL,
seed = NULL
)A numeric vector of input p-values for the oGFisher test.
A matrix of degrees of freedom for inverse chi-square transformation for each p-value. Each row represents a GFisher test.
A matrix of non-negative weights. Each row represents a GFisher test.
Correlation matrix of the input Z-scores from which the input p-values were obtained.
Character string: "two" for two-sided (default), "one" for one-sided input p-values.
Character string specifying calculation method:
"MR": Simulation-assisted moment ratio matching
"HYB": Moment ratio matching by quadratic approximation (default)
"GB": Brown's method with calculated variance
Character string specifying combination method:
"cct": oGFisher using the Cauchy combination test (default)
"mvn": oGFisher using multivariate normal distribution (minimum p-value approach)
Number of simulations used in the "MR" method. Default is 5e4.
Optional seed for random number generation. Default is NULL.
A list with the following components:
The test statistic: CCT statistic if combine = "cct", or minimum p-value if combine = "mvn"
The p-value of the oGFisher test
Vector of individual p-values for each GFisher test
Vector of individual GFisher statistics
Compute the oGFisher Test P-Value
This function performs the omnibus GFisher test by:
Computing individual GFisher statistics and p-values for each test configuration
Combining these p-values using either:
CCT (Cauchy Combination Test): Robust to dependence, analytically tractable
MVN (Multivariate Normal): Uses correlation structure to compute minimum p-value distribution
Cauchy Combination Method (combine = "cct"):
The CCT approach is preferred when the individual tests may be highly dependent.
The p-value is calculated as \(P(\text{Cauchy} > \text{cct})\) where cct is the
Cauchy combination statistic from stat.oGFisher.
Minimum P-Value Method (combine = "mvn"):
This approach accounts for the correlation among GFisher tests using their theoretical
correlation matrix (computed via getGFisherCOR). The p-value is:
$$P = 1 - P(\text{all normalized p-values} > \Phi^{-1}(1-\text{minp}))$$
where the probability is computed using the 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.
# Example: oGFisher test with Cauchy combination
set.seed(123)
n <- 10
M <- matrix(0.3, n, n) + diag(0.7, n, n)
zscore <- matrix(rnorm(n), nrow = 1) %*% chol(M)
pval <- 2 * (1 - pnorm(abs(zscore)))
# Define multiple GFisher tests
DF <- rbind(rep(1, n), rep(2, n))
W <- rbind(rep(1, n), 1:10)
# CCT combination
result_cct <- pval.oGFisher(pval, DF, W, M, p.type = "two",
method = "HYB", combine = "cct")
print(result_cct)
#> $stat
#> [1] -0.9173186
#>
#> $pval
#> [1] 0.7362819
#>
#> $pval_indi
#> [1] 0.7410839 0.7313432
#>
#> $stat_indi
#> [1] 0.5928568 1.3687900
#>
# MVN combination (minimum p-value)
result_mvn <- pval.oGFisher(pval, DF, W, M, p.type = "two",
method = "HYB", combine = "mvn")
print(result_mvn)
#> $stat
#> [1] 0.7313432
#>
#> $pval
#> [1] 0.7800525
#>
#> $pval_indi
#> [1] 0.7410839 0.7313432
#>
#> $stat_indi
#> [1] 0.5928568 1.3687900
#>
# Alternative: single df per test
DF_short <- rbind(1, 2)
result <- pval.oGFisher(pval, DF = DF_short, W, M, p.type = "two",
method = "HYB", combine = "cct")