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)

Arguments

m

the mash fit

factor

a number in [0,1] the factor within which effects are considered to be shared

lfsr_thresh

the lfsr threshold for including an effect in the assessment

FUN

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.

Details

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.

Examples

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