Performs an omnibus test combining Burden, SKAT, and Fisher tests using the Cauchy Combination Test (CCT). The omnibus test adapts to different genetic architectures by combining multiple test statistics, providing robust power across various scenarios.
GLOW_Omni computes:
Burden test (optimal + equal weights)
SKAT test (optimal + equal weights)
Fisher test (optimal + equal weights)
CCT of SNV-level p-values (variant-level minimum p-value combination)
CCT combining all the above tests (final omnibus p-value)
The final omnibus p-value provides protection against model misspecification and is powerful across diverse genetic architectures.
GLOW_Omni(
marg_score_stats,
B,
PI,
test_specs = NULL,
include_snv_cct = TRUE,
return_weights = FALSE,
...
)List output from getZ_marg_score or
getZ_marg_score_binary_SPA containing:
Numeric vector of marginal score Z-scores
Correlation matrix of Z-scores
Covariance matrix of score statistics
Scalar standard deviation under null
Numeric vector of effect size estimates (length m).
Numeric vector of variant-importance scores (length m, values in \([0,1]\)).
List of test specification lists (default: NULL uses
default_test_specs, the standard 3-family configuration).
See default_test_specs for the spec format.
Logical. If TRUE (default), append SNV-level CCT and final omnibus CCT rows to the output.
Logical (default FALSE). If TRUE, attach the
internally-assembled weight matrix to the result (forwarded from
run_bsf_tests). Rows: weight schemes; columns: variants.
Additional arguments passed to omni_SgZ_test and weight
functions (e.g., method, nsim).
A list with:
Matrix (n x 1) of test statistics. With default specs, n=16.
Matrix (n x 1) of p-values. Last row is the final omnibus.
Character vector of row names.
(Only when return_weights = TRUE.) Weight matrix
(n_schemes x p).
Algorithm:
Internally delegates to run_bsf_tests(), which:
For each test family in test_specs, computes optimal and equal
weights, then evaluates the weighted test statistic.
Combines all individual test p-values via CCT (BSF omnibus).
Computes SNV-level CCT from marginal p-values (if
include_snv_cct = TRUE).
Combines individual + SNV CCT for final omnibus p-value.
Transformation Details:
Scaled effect sizes: \(B^* = \sqrt{diag(M_s)} \times B / s_0\)
Burden uses g(x) = x, df = Inf
SKAT uses g(x) = x^2, df = 1
Fisher uses g(x) = g_GFisher_two(x, df=2), df = 2
Output Structure (default 3-family spec, 16 rows):
Rows 1-5: SKAT tests (BE_N, APR_N, BE_sparse, APR_sparse, equ)
Rows 6-8: Burden tests (BE, APR, equ)
Rows 9-13: Fisher tests (BE_N, APR_N, BE_sparse, APR_sparse, equ)
Row 14: BSF Omni (CCT of rows 1-13)
Row 15: SNV-level CCT
Row 16: Final omnibus CCT
With custom test_specs, the number of rows varies.
Computational Complexity: O(k * m^2) where k is number of weight schemes, m is number of variants
Zhang, H., Liu, M., Landers, J. E., and Wu, Z. (2026). Integrated weighted association test with application to genetic association studies. The Annals of Applied Statistics, 20(3), 2074-2097. doi:10.1214/26-AOAS2223
Liu Y, Xie J (2020). "Cauchy Combination Test: A Powerful Test With Analytic p-Value Calculation Under Arbitrary Dependency Structures." JASA, 115(529), 393-402.
default_test_specs for the test specification format
glow_test for the high-level test runner
GLOW_Omni_byP for omnibus test from pre-computed p-values
if (FALSE) { # \dontrun{
# Simulate data
set.seed(123)
n <- 500; m <- 20
G <- matrix(rbinom(n*m, 2, 0.1), n, m)
X <- matrix(rnorm(n*2), n, 2)
Y <- rbinom(n, 1, 0.3)
marg_stats <- getZ_marg_score(G, X, Y, trait="binary")
B <- rnorm(m, mean=0, sd=0.2)
PI <- runif(m, 0.1, 0.9)
# Standard omnibus (16 rows)
result <- GLOW_Omni(marg_stats, B, PI)
result$PVAL[nrow(result$PVAL), ]
# Custom 2-family spec
my_specs <- list(
list(family = "SKAT", g = function(x) x^2, df = 1),
list(family = "Burden", g = function(x) x, df = Inf)
)
result2 <- GLOW_Omni(marg_stats, B, PI, test_specs = my_specs)
} # }