approx_horseshoe {Mhorseshoe}R 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,
  threshold = 0,
  tau = 1,
  s = 0.8,
  sigma2 = 1,
  w = 1,
  alpha = 0.05,
  a = 0.2,
  b = 10,
  t = 10,
  adapt_p0 = 0,
  adapt_p1 = -4.6 * 10^(-4)
)

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 for setting whether to use an algorithm that automatically updates the threshold using adaptive probability.

threshold

Threshold to be used in the approximate MCMC algorithm. This argument is ignored when auto.threshold=TRUE. If you select auto.threshold = FALSE and threshold = 0 (This is the default value for the threshold argument), the threshold is set to \sqrt{p \times min(N, p)} as suggested in Johndrow et al. (2020). Or, you can set your custom value directly through this argument. For more information about \delta, browseVignettes("Mhorseshoe") and 4.1 of Johndrow et al. (2020).

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.

w

A hyperparameter of gamma prior for \sigma^{2}. The default is 1.

alpha

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

a

A tuning parameter of the rejection sampler, where the default value is a = 1/5.

b

A tuning parameter of the rejection sampler, where the default value is b = 10.

t

Threshold update cycle for adaptive probability algorithm when auto.threshold is set to TRUE. The default is 10.

adapt_p0

A tuning parameter p_{0} of the adaptive probability, p(t) = exp[p_{0} + p_{1}t]. The default is 0.

adapt_p1

A tuning parameter a_{1} of the adaptive probability, p(t) = exp[p_{0} + p_{1}t]. The default is -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 updated by the adaptive method proposed in this package.

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


[Package Mhorseshoe version 0.1.3 Index]