graper | R Documentation |
Fit a regression model with graper given a matrix
of predictors (X
), a response vector (y
) and
a vector of group memberships for each predictor
in X
(annot
).
For each group a different strength of penalization
is determined adaptively.
graper( X, y, annot, factoriseQ = TRUE, spikeslab = TRUE, intercept = TRUE, family = "gaussian", standardize = TRUE, n_rep = 1, max_iter = 3000, th = 0.01, d_tau = 0.001, r_tau = 0.001, d_gamma = 0.001, r_gamma = 0.001, r_pi = 1, d_pi = 1, calcELB = TRUE, verbose = TRUE, freqELB = 1, nogamma = FALSE, init_psi = 1 )
X |
design matrix of size n (samples) x p (features) |
y |
response vector of size n |
annot |
factor of length p indicating group membership of each feature (column) in X |
factoriseQ |
if set to TRUE, the variational distribution is assumed to fully factorize across features (faster, default). If FALSE, a multivariate variational distribution is used. |
spikeslab |
if set to TRUE, a spike and slab prior on the coefficients (default). |
intercept |
whether to include an intercept into the model |
family |
Likelihood model for the response, either "gaussian" for linear regression or "binomial" for logistic regression |
standardize |
whether to standardize the predictors to unit variance |
n_rep |
number of repetitions with different random initializations to be fit |
max_iter |
maximum number of iterations |
th |
convergence threshold for the evidence lower bound (ELB) |
d_tau |
hyper-parameters for prior of tau (noise precision) |
r_tau |
hyper-parameters for prior of tau (noise precision) |
d_gamma |
hyper-parameters for prior of gamma (coefficients' prior precision) |
r_gamma |
hyper-parameters for prior of gamma (coefficients' prior precision) |
r_pi |
hyper-parameters for Beta prior of the mixture probabilities in the spike and slab prior |
d_pi |
hyper-parameters for Beta prior of the mixture probabilities in the spike and slab prior |
calcELB |
whether to calculate the evidence lower bound (ELB) |
verbose |
whether to print out intermediate messages during fitting |
freqELB |
frequency at which the evidence lower bound (ELB) is to be calculated, i.e. each freqELB-th iteration |
nogamma |
if TRUE, the normal prior will have same variance for all groups (only relevant for spikeslab = TRUE) |
init_psi |
initial value for the spike variables |
The function trains the graper model given
a matrix of predictors (X
), a response vector (y
)
and a vector of group memberships for each predictor in X
(annot
). For each feature group as specified in
annot
a penalty factor and sparsity level is learnt.
By default it uses a Spike-and-Slab prior on the coefficients
and uses a fully factorized variational distribution
in the inference. This provides a fast way to train the model.
Using spikeslab=FALSE
a ridge regression like model can
be fitted using a normal instead of the spike and slab prior.
Setting factoriseQ = FALSE
gives a more exact inference
scheme based on a multivariate variational distribution,
but can be much slower.
As the optimization is non-convex is can be helpful to
use multiple random initializations by setting n_rep
to a value larger 1. The returned model is then chosen
as the optimal fit with respect to the evidence lower bound (ELB).
Depending on the response vector a linear regression model
(family = "gaussian"
) or a logistic regression model
(family = "binomial"
) is fitted.
Note, that the implementation of logistic regression is still
experimental.
A graper object containing
estimated model coefficients in liner/logistic regression
estimated posterior-inclusion probabilities for each feature
estimated intercept term
annotation vector of features to the groups as
specified when calling graper
estimated penalty factor per group
estimated sparsity level per group (from 1 (dense) to 0 (sparse))
estimated noise precision
parameters of the variational distributions of beta, gamma, tau and pi
final value of the evidence lower bound
values of the evidence lower bound for all iterations
other options used when calling graper
# create data dat <- makeExampleData() # fit a sparse model with spike and slab prior fit <- graper(dat$X, dat$y, dat$annot) fit # print fitted object beta <- coef(fit, include_intercept=FALSE) # model coeffients pips <- getPIPs(fit) # posterior inclusion probabilities pf <- fit$EW_gamma # penalty factors per group sparsities <- fit$EW_pi # sparsity levels per group # fit a dense model without spike and slab prior fit <- graper(dat$X, dat$y, dat$annot, spikeslab=FALSE) # fit a dense model using a multivariate variational distribution fit <- graper(dat$X, dat$y, dat$annot, factoriseQ=TRUE, spikeslab=FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.