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")

Arguments

p

A numeric vector of input p-values.

DF

A matrix of degrees of freedom. Each row is the df vector for a GFisher test.

W

A matrix of weights. Each row is the weight vector for a GFisher test.

combine

Character string: "cct" for Cauchy combination (default), or "minp" for minimum p-value with multivariate normal distribution.

Value

A list with the following components:

pval

The p-value of the oGFisher test

pval_indi

Vector of individual p-values for each GFisher test

Details

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.

References

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.

Author

Hong Zhang, Zheyang Wu

Examples

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)
}
} # }