spike_slab_probit {ScaleSpikeSlab}R Documentation

spike_slab_probit

Description

Generates Markov chain targeting the posterior corresponding to Bayesian probit regression with spike and slab priors

Usage

spike_slab_probit(
  chain_length,
  X,
  y,
  tau0,
  tau1,
  q,
  rinit = NULL,
  verbose = FALSE,
  burnin = 0,
  store = TRUE,
  Xt = NULL,
  XXt = NULL,
  tau0_inverse = NULL,
  tau1_inverse = NULL
)

Arguments

chain_length

Markov chain length

X

matrix of length n by p

y

Response

tau0

prior hyperparameter (non-negative real)

tau1

prior hyperparameter (non-negative real)

q

prior hyperparameter (strictly between 0 and 1)

rinit

initial distribution of Markov chain (default samples from the prior)

verbose

print iteration of the Markov chain (boolean)

burnin

chain burnin (non-negative integer)

store

store chain trajectory (boolean)

Xt

Pre-calculated transpose of X

XXt

Pre-calculated matrix X*transpose(X) (n by n matrix)

tau0_inverse

Pre-calculated matrix inverse(I + tau0^2*XXt) (n by n matrix)

tau1_inverse

Pre-calculated matrix inverse(I + tau1^2*XXt) (n by n matrix)

Value

Output from Markov chain targeting the posterior corresponding to Bayesian logistic regression with spike and slab priors

Examples

# Synthetic dataset
syn_data <- synthetic_data(n=100,p=200,s0=5,error_std=2,type='probit')
X <- syn_data$X
Xt <- t(X)
y <- syn_data$y

# Hyperparamters
params <- spike_slab_params(n=nrow(X),p=ncol(X))

# Run S^3
sss_chain <- spike_slab_probit(chain_length=4e3,burnin=1e3,X=X,y=y,
tau0=params$tau0,tau1=params$tau1,q=params$q,verbose=FALSE,store=FALSE)

# Use posterior probabilities for variable selection
sss_chain$z_ergodic_avg[1:10]

[Package ScaleSpikeSlab version 1.0 Index]