approx_horseshoe: Run approximate MCMC algorithm for horseshoe prior

View source: R/approximate_algorithm.R

approx_horseshoeR Documentation

Run approximate MCMC algorithm for horseshoe prior

Description

The approximate MCMC algorithm for the horseshoe prior

Usage

approx_horseshoe(
  y,
  X,
  burn = 1000,
  iter = 5000,
  auto.threshold = TRUE,
  tau = 1,
  s = 0.8,
  sigma2 = 1,
  alpha = 0.05,
  ...
)

Arguments

y

Response vector, y \in \mathbb{R}^{N}.

X

Design matrix, X \in \mathbb{R}^{N \times p}.

burn

Number of burn-in samples. The default is 1000.

iter

Number of samples to be drawn from the posterior. The default is 5000.

auto.threshold

Argument to set whether to use the the adaptive threshold selection method.

tau

Initial value of the global shrinkage parameter \tau when starting the algorithm. The default is 1.

s

s^{2} is the variance of tau's MH proposal distribution. 0.8 is a good default. If set to 0, the algorithm proceeds by fixing the global shrinkage parameter \tau to the initial setting value.

sigma2

Initial value of error variance \sigma^{2}. The default is 1.

alpha

100(1-\alpha)\% credible interval setting argument.

...

There are additional arguments threshold, a, b, w, t, p0, and p1. threshold is used when auto.threshold=FALSE is selected and threshold is set directly. The default value is threshold = 1/p. a and b are arguments of the internal rejection sampler function, and the default values are a = 1/5,\ b = 10. w is the argument of the prior for \sigma^{2}, and the default value is w = 1. t, p0, and p1 are arguments of the adaptive threshold selection method, and the default values are t = 10,\ p0 = 0,\ p1 = -4.6 \times 10^{-4}.

Details

This function implements the approximate algorithm introduced in Section 2.2 of Johndrow et al. (2020) and the method proposed in this package, which improves computation speed when p >> N. The approximate algorithm introduces a threshold and uses only a portion of the total p columns for matrix multiplication, reducing the computational cost compared to the existing MCMC algorithms for the horseshoe prior. The "auto.threshold" argument determines whether the threshold used in the algorithm will be selected by the adaptive method proposed in this package. For more information, browseVignettes("Mhorseshoe").

Value

BetaHat

Posterior mean of \beta.

LeftCI

Lower bound of 100(1-\alpha)\% credible interval for \beta.

RightCI

Upper bound of 100(1-\alpha)\% credible interval for \beta.

Sigma2Hat

Posterior mean of \sigma^{2}.

TauHat

Posterior mean of \tau.

LambdaHat

Posterior mean of \lambda_{j},\ j=1,2,...p..

ActiveMean

Average number of elements in the active set per iteration in this algorithm.

BetaSamples

Posterior samples of \beta.

LambdaSamples

Posterior samples of local shrinkage parameters.

TauSamples

Posterior samples of global shrinkage parameter.

Sigma2Samples

Posterior samples of sigma^{2}.

ActiveSet

\mathbb{R}^{iter \times p} Matrix indicating active elements as 1 and non-active elements as 0 per iteration of the MCMC algorithm.

References

Johndrow, J., Orenstein, P., & Bhattacharya, A. (2020). Scalable Approximate MCMC Algorithms for the Horseshoe Prior. In Journal of Machine Learning Research, 21, 1-61.

Examples

# Making simulation data.
set.seed(123)
N <- 200
p <- 100
true_beta <- c(rep(1, 10), rep(0, 90))

X <- matrix(1, nrow = N, ncol = p) # Design matrix X.
for (i in 1:p) {
  X[, i] <- stats::rnorm(N, mean = 0, sd = 1)
}

y <- vector(mode = "numeric", length = N) # Response variable y.
e <- rnorm(N, mean = 0, sd = 2) # error term e.
for (i in 1:10) {
  y <- y + true_beta[i] * X[, i]
}
y <- y + e

# Run with auto.threshold set to TRUE
result1 <- approx_horseshoe(y, X, burn = 0, iter = 100,
                            auto.threshold = TRUE)

# Run with fixed custom threshold
result2 <- approx_horseshoe(y, X, burn = 0, iter = 100,
                            auto.threshold = FALSE, threshold = 1/(5 * p))

# posterior mean
betahat <- result1$BetaHat

# Lower bound of the 95% credible interval
leftCI <- result1$LeftCI

# Upper bound of the 95% credible interval
RightCI <- result1$RightCI


Mhorseshoe documentation built on April 12, 2025, 1:33 a.m.