| mixedBayes | R Documentation |
fit a Bayesian longitudinal regularized quantile mixed model
mixedBayes(
y,
e,
X,
g,
k,
iterations = 10000,
burn.in = 5000,
slope = TRUE,
robust = TRUE,
quant = 0.5,
sparse = TRUE,
structure = "bilevel"
)
y |
a numeric vector of repeated-measure responses in long format. The current version only supports continuous response. |
e |
the long-format matrix for environmental/treatment effects. In applications, this corresponds to a set of dummy variables encoding treatment levels. |
X |
the long-format matrix, including an intercept term and optionally time covariates. |
g |
the long-format matrix of genetic predictors. |
k |
a positive integer. Number of repeated measurements per subject. |
iterations |
the number of MCMC iterations. The default value is 10,000. |
burn.in |
the number of iterations for burn-in. If NULL, no burn-in is applied and all MCMC samples are retained. The default value is 5,000. |
slope |
logical flag. If TRUE, random intercept-and-slope model will be used. Otherwise, random intercept model will be used. The default value is TRUE. |
robust |
logical flag. If TRUE, robust methods will be used. Otherwise, non-robust methods will be used. The default value is TRUE. |
quant |
the quantile level specified by users. Required when robust = TRUE. Ignored (set to NULL) when robust = FALSE. The default value is 0.5. |
sparse |
logical flag. If TRUE, spike-and-slab priors will be adopted to impose exact sparsity on regression coefficients. Otherwise, Laplacian shrinkage will be adopted. The default value is TRUE. |
structure |
two choices are available. "bilevel" performs selection on both main effects and interaction effects corresponding to individual and group levels, whereas "individual" performs selections only on individual levels by ignoring the group structure. |
Data layout
Consider a longitudinal study with repeated measurements per subject, where each subject has the same number of repeated measurements.
The response vector y and the design matrices X, e and g must all be provided in long format and share the same row ordering. In practice, each row corresponds to one observation from a particular subject at a particular time point.
The interaction terms between genetic and environmental factors (G×E) are constructed internally within the function and therefore do not need to be provided by the user.
Model
Consider the data model described in "data":
Y_{ij} = \boldsymbol{X^\top_{ij}}\boldsymbol{\gamma_{0}}+\boldsymbol{E^\top_{ij}}\boldsymbol{\gamma_{1}}+\boldsymbol{G^\top_{ij}}\boldsymbol{\gamma_{2}}+(\boldsymbol{G_{ij}}\bigotimes \boldsymbol{E_{ij}})^\top\boldsymbol{\gamma_{3}}+\boldsymbol{Z^\top_{ij}}\boldsymbol{\alpha_{i}}+\epsilon_{ij}.
Here \boldsymbol{\gamma_{0}} is the coefficient vector for \boldsymbol{X_{ij}}, \boldsymbol{\gamma_{1}} is the coefficient vector for \boldsymbol{E_{ij}}, \boldsymbol{\gamma_{2}} is the coefficient vector for the genetic variants, and \boldsymbol{\gamma_{3}} is the coefficient vector for the interactions of the genetic variants with environment factors.
where \boldsymbol{\gamma_{1}}=(\gamma_{11},\dots,\gamma_{1p})^\top, \boldsymbol{\gamma_{2}}=(\gamma_{21},\dots,\gamma_{2m})^\top, \boldsymbol{\gamma_{3}}=(\boldsymbol{\gamma_{31}},\dots,\boldsymbol{\gamma_{3m}})^\top where \boldsymbol{\gamma_{3l}}=(\gamma_{3l1},\dots,\gamma_{3lp})^\top for l=1,\dots,m.
The subject-specific random effects \boldsymbol{\alpha_i} capture within-subject correlation. For random intercept-and-slope model, \boldsymbol{Z^\top_{ij}} = (1,j) and \boldsymbol{\alpha_{i}} = (\alpha_{i1},\alpha_{i2})^\top. For random intercept model, Z_{ij} = 1 and \alpha_{i} = \alpha_{i1}.
When 'structure=bilevel'(default), bi-level selection on main and interaction effects will be conducted corresponding to individual and group levels, respectively. When 'structure="individual"', selections only on individual levels by ignoring the group structure will be performed.
When 'slope=TRUE' (default), random intercept-and-slope model will be used as the mixed effects model. Otherwise, random intercept model will be used.
When 'sparse=TRUE' (default), spike-and-slab priors are imposed to identify important main and interaction effects. Otherwise, Laplacian shrinkage will be used.
When 'robust=TRUE' (default), the distribution of \epsilon_{ij} is defined as an asymmetric Laplace distribution with density.
f(\epsilon_{ij}|\theta,\tau) = \theta(1-\theta)\exp\left\{-\tau\rho_{\theta}(\epsilon_{ij})\right\}
, (i=1,\dots,n,j=1,\dots,k ), which leads to a Bayesian formulation of quantile regression. Otherwise, \epsilon_{ij} follows a normal distribution.
Please check the references for more details about the prior distributions.
An object of class "mixedBayes" is returned, which is a list with components:
posterior |
Posterior samples for fixed effects and random effects. |
coefficient |
Posterior median estimates of fixed effects and random effects. |
sparse |
Logical value indicating whether spike-and-slab priors were used. |
robust |
Logical value indicating whether the robust (quantile regression) model was used. |
slope |
Logical value indicating whether a random intercept-and-slope model was used. |
quant |
Quantile level used when |
structure |
Character string specifying the selection structure ("bilevel" or "individual"). |
k |
Number of repeated measurements per subject. |
iterations |
Total number of MCMC iterations. |
burn.in |
Number of burn-in iterations. |
data
data(data)
## default method (robust sparse bi-level selection under random intercept-and-slope model)
fit = mixedBayes(y,e,X,g,k,structure="bilevel")
fit$coefficient
## Compute TP and FP
b = selection(fit,sparse=TRUE)
index = which(coeff!=0)
pos = which(b != 0)
tp = length(intersect(index, pos))
fp = length(pos) - tp
list(tp=tp, fp=fp)
## alternative: robust sparse individual level selections under random intercept-and-slope model
fit = mixedBayes(y,e,X,g,k,structure="individual")
fit$coefficient
## alternative: non-robust sparse bi-level selection under random intercept-and-slope model
fit = mixedBayes(y,e,X,g,k,robust=FALSE, quant = NULL, structure="bilevel")
fit$coefficient
## alternative: robust sparse bi-level selection under random intercept model
fit = mixedBayes(y,e,X,g,k,slope=FALSE, structure="bilevel")
fit$coefficient
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.