R/get_functions.R
get_pairwise_sharing.Rd
Compute the proportion of (significant) signals shared by magnitude in each pair of conditions, based on the poterior mean
get_pairwise_sharing(m, factor = 0.5, lfsr_thresh = 0.05, FUN = identity)
the mash fit
a number in [0,1] the factor within which effects are considered to be shared
the lfsr threshold for including an effect in the assessment
a function to be applied to the estimated effect sizes before assessing sharing. The most obvious choice beside the default 'FUN=identity' would be 'FUN=abs' if you want to ignore the sign of the effects when assesing sharing.
For each pair of tissues, first identify the effects that are significant (by lfsr<lfsr_thresh) in at least one of the two tissues. Then compute what fraction of these have an estimated (posterior mean) effect size within a factor `factor` of one another. The results are returned as an R by R matrix.
simdata = simple_sims(50,5,1)
data = mash_set_data(simdata$Bhat, simdata$Shat)
m = mash(data, cov_canonical(data))
#> - Computing 200 x 141 likelihood matrix.
#> - Likelihood calculations took 0.01 seconds.
#> - Fitting model with 141 mixture components.
#> - Model fitting took 0.17 seconds.
#> - Computing posterior matrices.
#> - Computation allocated took 0.00 seconds.
get_pairwise_sharing(m) # sharing by magnitude (same sign)
#> condition_1 condition_2 condition_3 condition_4 condition_5
#> condition_1 1.0000000 0.7272727 0.7272727 0.5454545 0.8888889
#> condition_2 0.7272727 1.0000000 0.8000000 0.8000000 0.6000000
#> condition_3 0.7272727 0.8000000 1.0000000 0.7000000 0.7777778
#> condition_4 0.5454545 0.8000000 0.7000000 1.0000000 0.5000000
#> condition_5 0.8888889 0.6000000 0.7777778 0.5000000 1.0000000
get_pairwise_sharing(m, factor=0) # sharing by sign
#> condition_1 condition_2 condition_3 condition_4 condition_5
#> condition_1 1.0000000 1.0 1.0 0.9090909 1.0
#> condition_2 1.0000000 1.0 1.0 0.9000000 1.0
#> condition_3 1.0000000 1.0 1.0 0.9000000 1.0
#> condition_4 0.9090909 0.9 0.9 1.0000000 0.9
#> condition_5 1.0000000 1.0 1.0 0.9000000 1.0
get_pairwise_sharing(m, FUN=abs) # sharing by magnitude when sign is ignored
#> condition_1 condition_2 condition_3 condition_4 condition_5
#> condition_1 1.0000000 0.7272727 0.7272727 0.6363636 0.8888889
#> condition_2 0.7272727 1.0000000 0.8000000 0.9000000 0.6000000
#> condition_3 0.7272727 0.8000000 1.0000000 0.7000000 0.7777778
#> condition_4 0.6363636 0.9000000 0.7000000 1.0000000 0.6000000
#> condition_5 0.8888889 0.6000000 0.7777778 0.6000000 1.0000000