shrinkage.regression {BoomSpikeSlab}R Documentation

Shrinking Regression Coefficients


Fits a Bayesian regression model with a shrinkage prior on the coefficient. The model is

y[i] ~ N(x[i,] * beta, sigma^2) 1 / sigma^2 ~ Gamma(df/2, ss/2) group(beta, 1) ~ N(b1, v1) group(beta, 2) ~ N(b2, v2) ...

In this notation, group(beta, k) ~ N(bk, vk) indicates that the subset of coefficients in group k are a priori independent draws from the specified normal distribution. In addition, each subset-level prior may include a hyperprior, in which case the subset-level prior parameters will be updated as part of the MCMC. The hyperprior has the form of independent priors on the mean and precision parameters:

bi ~ N(prior.mean, prior.variance) 1.0 / vi ~ Chisq(df,


ShrinkageRegression(response, predictors, coefficient.groups,
                    residual.precision.prior = NULL,
                    suf = NULL, niter, ping = niter / 10,
                    seed = NULL)

CoefficientGroup(indices, mean.hyperprior = NULL, sd.hyperprior = NULL,
                 prior = NULL)



The numeric vector of responses.


The matrix of predictors, including an intercept term, if desired.


A list of objects of type CoefficientGroup, defining the pattern in which the coefficients should be shrunk together. Each coefficient must belong to exactly one CoefficientGroup.


An object of type SdPrior describing the prior distribution of the residual standard deviation.


An object of class RegressionSuf containing the sufficient statistics for the regression model. If this is NULL then it will be computed from response and predictors. If it is supplied then response and predictors are not used and can be left missing.


The desired number of MCMC iterations.


The frequency with which to print status updates.


The integer-valued seed (or NULL) to use for the C++ random number generator.


A vector of integers giving the positions of the regression coefficients that should be viewed as exchangeable.


A NormalPrior object describing the hyperprior distribution for the average coefficient.


An SdPrior object describing the hyperprior distribution for the standard deviation of the coefficients.


An object of type NormalPrior giving the initial value of the distribution describing the collection of coefficients in this group. If either hyperprior is NULL then the corresponding prior parameter will not be updated. If both hyperpriors are non-NULL then this parameter can be left unspecified.


ShrinkageRegression returns a list containing MCMC draws from the posterior distribution of model parameters. Each of the following is a matrix, with rows corresponding to MCMC draws, and columsn to distinct parameters.

CoefficientGroup is a configuration utility used to define which coefficients should be shrunk together. It returns an object (list) formatted in the manner expected by ShrinkageRegression.


Steven L. Scott


b0 <- -1
b1 <- rnorm(20, 3, .2)
b2 <- rnorm(30, -4, 7)
nobs <- 10000
beta <- c(b0, b1, b2)

X <- cbind(1, matrix(rnorm(nobs * (length(beta) - 1)), nrow = nobs, ncol = length(beta) - 1))
y.hat <- X %*% beta
y <- rnorm(nobs, y.hat, .5)

groups <- list(intercept = CoefficientGroup(1, prior = NormalPrior(0, 100)),
               first = CoefficientGroup(2:21,
                                        mean.hyperprior = NormalPrior(0, 100),
                                        sd.hyperprior = SdPrior(.2, 1)),
               second = CoefficientGroup(22:51,
                                         mean.hyperprior = NormalPrior(0, 100),
                                         sd.hyperprior = SdPrior(7, 1)))

model <- ShrinkageRegression(y, X, groups,
                             residual.precision.prior = SdPrior(.5, 1),
                             niter = 1000)

[Package BoomSpikeSlab version 1.2.4 Index]