Random-effects meta-analysis of S-LDSC quantities across traits
Source:R/sldscWrapper.R
metaSldscRandom.RdRandom-effects meta-analysis (DerSimonian-Laird, via
metafor::rma) of one S-LDSC quantity for one annotation across
multiple traits.
Usage
metaSldscRandom(
perTraitEstimates,
category,
quantity = c("tauStar", "enrichment", "enrichstat")
)Details
Per-trait \(SE_i\) sources: - `quantity = "tauStar"`: jackknife SE from per-block \(\tau^*\). - `quantity = "enrichment"`: polyfun-reported `Enrichment_std_error`. - `quantity = "enrichstat"`: back-solved SE from polyfun's `Enrichment_p`.
Examples
mkRun <- function(cats) {
n <- length(cats)
list(categories = cats, tau = setNames(rep(1e-7, n), cats),
tauSe = setNames(rep(3e-8, n), cats),
enrichment = setNames(rep(2, n), cats),
enrichmentSe = setNames(rep(0.4, n), cats),
enrichmentP = setNames(rep(0.01, n), cats),
propH2 = setNames(rep(0.2, n), cats),
propSnps = setNames(rep(0.1, n), cats), h2g = 0.3,
tauBlocks = matrix(1e-7, 10, n, dimnames = list(NULL, cats)),
nBlocks = 10L)
}
annot <- data.frame(CHR = c(1, 1, 1, 2, 2, 2), SNP = paste0("rs", 1:6),
annot_A = c(1, 0, 1, 0, 1, 0), annot_B = c(2.1, 1.8, 2.5, 1.9, 2.3, 2))
frq <- data.frame(CHR = c(1, 1, 1, 2, 2, 2), SNP = paste0("rs", 1:6),
MAF = rep(0.2, 6))
mkTrait <- function() {
list(single = list(mkRun(c("annot_A_0", "baselineLD_0")),
mkRun(c("annot_B_0", "baselineLD_0"))),
joint = mkRun(c("annot_A_0", "annot_B_0", "baselineLD_0")))
}
traits <- setNames(list(mkTrait(), mkTrait()), c("traitX", "traitY"))
sd <- SldscData(annot = annot, frq = frq, traits = traits)
pp <- sldscPostprocessingPipeline(sd)
#> [sldsc] Computing M_ref...
#> [sldsc] M_ref = 6 (MAF cutoff 0.05)
#> [sldsc] Computing per-annotation sd...
#> [sldsc] sd computed for 2 annotation columns
#> [sldsc] Detecting binary vs continuous annotations...
#> [sldsc] Auto-detected 2 target categories
#> [sldsc] Detected 1 baseline annotations: baselineLD_0
#> [sldsc] Standardizing 2 traits...
#> [sldsc] Running random-effects meta across traits...
metaSldscRandom(pp$per_trait, category = "annot_A_0",
quantity = "enrichment")
#> $mean
#> [1] NA
#>
#> $se
#> [1] NA
#>
#> $p
#> [1] NA
#>
#> $nTraits
#> [1] 0
#>
#> $traitsUsed
#> character(0)
#>
#> $tau2
#> [1] NA
#>