| bama {bama} | R Documentation |
Bayesian Mediation Analysis
Description
bama is a Bayesian inference method that uses continuous shrinkage priors
for high-dimensional Bayesian mediation analysis, developed by Song et al
(2019, 2020). bama provides estimates for the regression coefficients as
well as the posterior inclusion probability for ranking mediators.
Usage
bama(
Y,
A,
M,
C1,
C2,
method,
burnin,
ndraws,
weights = NULL,
inits = NULL,
control = list(k = 2, lm0 = 1e-04, lm1 = 1, lma1 = 1, l = 1, lambda0 = 0.04, lambda1 =
0.2, lambda2 = 0.2, phi0 = 0.01, phi1 = 0.01, a0 = 0.01 * ncol(M), a1 = 0.05 *
ncol(M), a2 = 0.05 * ncol(M), a3 = 0.89 * ncol(M)),
seed = NULL
)
Arguments
Y |
Length |
A |
Length |
M |
|
C1 |
|
C2 |
|
method |
String indicating which method to use. Options are
|
burnin |
number of iterations to run the MCMC before sampling |
ndraws |
number of draws to take from MCMC (includes burnin draws) |
weights |
Length |
inits |
list of initial values for the Gibbs sampler. Options are
|
control |
list of Gibbs algorithm control options. These include prior
and hyper-prior parameters. Options vary by method selection. If
If
If
|
seed |
numeric seed for GIBBS sampler |
Details
bama uses two regression models for the two conditional relationships,
Y | A, M, C and M | A, C. For the outcome model, bama
uses
Y = M \beta_M + A * \beta_A + C* \beta_C + \epsilon_Y
For the mediator model, bama uses the model
M = A * \alpha_A + C * \alpha_C + \epsilon_M
For high dimensional tractability, bama employs continuous Bayesian
shrinkage priors to select mediators and makes the two following assumptions:
First, it assumes that all the potential mediators contribute small effects
in mediating the exposure-outcome relationship. Second, it assumes
that only a small proportion of mediators exhibit large effects
("active" mediators). bama uses a Metropolis-Hastings within Gibbs
MCMC to generate posterior samples from the model.
NOTE: GMM not currently supported. Instead, use method = 'PTG'.
Value
If method = "BSLMM", then bama returns a object of type "bama" with 12 elements:
- beta.m
ndraws x pmatrix containing outcome model mediator coefficients.- r1
ndraws x pmatrix indicating whether or not each beta.m belongs to the larger normal component (1) or smaller normal component (0).- alpha.a
ndraws x pmatrix containing the mediator model exposure coefficients.- r3
ndraws x pmatrix indicating whether or not each alpha.a belongs to the larger normal component (1) or smaller normal component (0).- beta.a
Vector of length
ndrawscontaining the beta.a coefficient.- pi.m
Vector of length
ndrawscontaining the proportion of non zero beta.m coefficients.- pi.a
Vector of length
ndrawscontaining the proportion of non zero alpha.a coefficients.- sigma.m0
Vector of length
ndrawscontaining the standard deviation of the smaller normal component for mediator-outcome coefficients (beta.m).- sigma.m1
Vector of length
ndrawscontaining standard deviation of the larger normal component for mediator-outcome coefficients (beta.m).- sigma.ma0
Vector of length
ndrawscontaining standard deviation of the smaller normal component for exposure-mediator coefficients (alpha.a).- sigma.ma1
Vector of length
ndrawscontaining standard deviation of the larger normal component for exposure-mediator coefficients (alpha.a).- call
The R call that generated the output.
NOTE: GMM not currently supported. Instead, use method = 'PTG'
If method = "GMM", then bama returns a object of type "bama" with:
- beta.m
ndraws x pmatrix containing outcome model mediator coefficients.- alpha.a
ndraws x pmatrix containing the mediator model exposure coefficients.- betam_member
ndraws x pmatrix of 1's and 0's where item = 1 only if beta.m is non-zero.- alphaa_member
ndraws x pmatrix of 1's and 0's where item = 1 only if alpha.a is non-zero.- alpha.c
ndraws x (q2 + p)matrix containing alpha_c coefficients. Since alpha.c is a matrix of dimension q2 x p, the draws are indexed as alpha_c(w, j) = w * p + j- beta.c
ndraws x q1matrix containing beta_c coefficients. Since beta.c is a matrix of dimension q1 x p- beta.a
Vector of length
ndrawscontaining the beta.a coefficient.- sigma.sq.a
Vector of length
ndrawsvariance of beta.a effect- sigma.sq.e
Vector of length
ndrawsvariance of outcome model error- sigma.sq.g
Vector of length
ndrawsvariance of mediator model error
If method = "PTG", then bama returns a object of type "bama" with:
- beta.m
ndraws x pmatrix containing outcome model mediator coefficients.- alpha.a
ndraws x pmatrix containing the mediator model exposure coefficients.- alpha.c
ndraws x (q2 + p)matrix containing alpha_c coefficients. Since alpha.c is a matrix of dimension q2 x p, the draws are indexed as alpha_c(w, j) = w * p + j- beta.c
ndraws x q1matrix containing beta_c coefficients. Since beta.c is a matrix of dimension q1 x p- betam_member
ndraws x pmatrix of 1's and 0's where item = 1 only if beta.m is non-zero.- alphaa_member
ndraws x pmatrix of 1's and 0's where item = 1 only if alpha.a is non-zero.- beta.a
Vector of length
ndrawscontaining the beta.a coefficient.- sigma.sq.a
Vector of length
ndrawsvariance of beta.a effect- sigma.sq.e
Vector of length
ndrawsvariance of outcome model error- sigma.sq.g
Vector of length
ndrawsvariance of mediator model error
References
Song, Y, Zhou, X, Zhang, M, et al. Bayesian shrinkage estimation of high dimensional causal mediation effects in omics studies. Biometrics. 2019; 1-11. doi:10.1111/biom.13189
Song, Yanyi, Xiang Zhou, Jian Kang, Max T. Aung, Min Zhang, Wei Zhao, Belinda L. Needham et al. "Bayesian Sparse Mediation Analysis with Targeted Penalization of Natural Indirect Effects." arXiv preprint arXiv:2008.06366 (2020).
Examples
library(bama)
Y <- bama.data$y
A <- bama.data$a
# grab the mediators from the example data.frame
M <- as.matrix(bama.data[, paste0("m", 1:100)], nrow(bama.data))
# We just include the intercept term in this example as we have no covariates
C1 <- matrix(1, 1000, 1)
C2 <- matrix(1, 1000, 1)
beta.m <- rep(0, 100)
alpha.a <- rep(0, 100)
out <- bama(Y = Y, A = A, M = M, C1 = C1, C2 = C2, method = "BSLMM", seed = 1234,
burnin = 100, ndraws = 110, weights = NULL, inits = NULL,
control = list(k = 2, lm0 = 1e-04, lm1 = 1, lma1 = 1, l = 1))
# The package includes a function to summarise output from 'bama'
summary <- summary(out)
head(summary)
# Product Threshold Gaussian
ptgmod = bama(Y = Y, A = A, M = M, C1 = C1, C2 = C2, method = "PTG", seed = 1234,
burnin = 100, ndraws = 110, weights = NULL, inits = NULL,
control = list(lambda0 = 0.04, lambda1 = 0.2, lambda2 = 0.2))
mean(ptgmod$beta.a)
apply(ptgmod$beta.m, 2, mean)
apply(ptgmod$alpha.a, 2, mean)
apply(ptgmod$betam_member, 2, mean)
apply(ptgmod$alphaa_member, 2, mean)