Skip to contents

Computes per-method TWAS z-scores using the FUSION formula and combines p-values across methods via ACAT (Aggregated Cauchy Association Test) or HMP (Harmonic Mean P-value).

Usage

otters_association(
  weights,
  gwas_z,
  LD,
  combine_method = c("acat", "hmp", "fisher", "stouffer", "invchisq", "gbj", "bj", "hc",
    "ghc", "minp", "gbj_omni", "aspu", "gates")
)

Arguments

weights

Named list of weight vectors (output from otters_weights or any named list of numeric vectors).

gwas_z

Numeric vector of GWAS z-scores, same length and order as the weights vectors. Must be aligned to the same variants and allele orientation as the weights and LD matrix. Use allele_qc or rss_basic_qc for harmonization before calling this function.

LD

LD correlation matrix R, aligned to the same variants as weights and gwas_z.

combine_method

Method to combine p-values across methods. Correlation-free (valid under arbitrary dependence): "acat" (default), "hmp". Correlation-adjusted via poolr (generalized multivariate theory): "fisher" (Brown's method), "stouffer" (Strube's method), "invchisq". Set-based tests via GBJ (uses TWAS z-scores and inter-method correlation): "gbj", "bj", "hc", "ghc", "minp", "gbj_omni". Adaptive and Simes-type tests via aSPU: "aspu" (adaptive sum of powered scores), "gates" (extended Simes / GATES). The poolr, GBJ, and aSPU methods automatically compute the inter-method TWAS z-score correlation from the weight vectors and LD matrix.

Value

A data.frame with columns:

method

Method name (per-method rows plus a combined row).

twas_z

TWAS z-score (NA for combined row).

twas_pval

TWAS p-value.

n_snps

Number of non-zero weight SNPs used.

Details

The FUSION TWAS statistic (Gusev et al. 2016) is: $$Z_{TWAS} = \frac{w^T z}{\sqrt{w^T R w}}$$ where \(w\) are eQTL weights, \(z\) are GWAS z-scores, and \(R\) is the LD correlation matrix.

Examples

set.seed(42)
p <- 20
gwas_z <- rnorm(p)
R <- diag(p)
weights <- list(method1 = rnorm(p, sd = 0.01), method2 = rnorm(p, sd = 0.01))
otters_association(weights, gwas_z, R)
#>          method    twas_z  twas_pval n_snps
#> 1       method1 2.2164891 0.02665802     20
#> 2       method2 0.2466401 0.80518676     20
#> 3 ACAT_combined        NA 0.05998009     NA