Variable selection for generalized linear models and the Cox proportional-hazards model in ultrahigh dimensions via the iterated block Gibbs sampler (IBGS). The sampler is implemented in C with parallel block screening through 'OpenMP', and supports the gaussian, binomial and poisson families (fitted by least squares or iteratively reweighted least squares) as well as the Cox model for survival analysis (fitted by its Efron partial likelihood), together with the AIC, BIC, AICc and extended BIC model selection criteria.
Iterated Block Gibbs Sampler for ultrahigh-dimensional variable selection and model averaging
IBGS performs variable selection for generalized linear models and the Cox proportional-hazards model when the number of predictors is very large. The sampler is implemented in C with parallel block screening through OpenMP, and returns a small set of high-scoring models together with marginal inclusion probabilities and model-averaged predictions. Methods are described in Chen (2022).
AIC, BIC, AICc and extended BIC (exBIC).*IBGS), and a plain block Gibbs
sampler (*Gibbs).predict(), fitted() and coef() average
over the retained top models with smooth-SIC (BMA-style) weights.Install the released version from CRAN:
install.packages("IBGS")
A C compiler is required to build from source (OpenMP is used when available for the parallel block screening). To install the development version from a local copy of the source:
R CMD INSTALL IBGS
or, from within R:
# install.packages("remotes")
remotes::install_local("IBGS")
library(IBGS)
## 50 predictors, only the first three are active
x <- matrix(rnorm(100 * 50), 100, 50)
y <- rowSums(x[, 1:3]) + rnorm(100)
fit <- glmIBGS(y, x, criterion = "BIC")
fit # concise overview
summary(fit) # selected-variable, top-model tables and convergence diagnostics
plot(fit) # criterion trace, marginal probabilities, model frequencies, R_hat, autocorrelation
coef(fit) # best model; coef(fit, average = TRUE) to average
predict(fit, x[1:5, ]) # model-averaged predictions on new data
fitted(fit) # model-averaged fitted values
| Model family | Iterated block Gibbs (with refinement) | Plain block Gibbs |
|---|---|---|
| GLM (gaussian / binomial / poisson) | glmIBGS() |
glmGibbs() |
| Cox proportional hazards | coxIBGS() |
coxGibbs() |
| Linear mixed model | lmeIBGS() |
lmeGibbs() |
Each sampler returns an object of class "IBGS" with print(), summary(),
plot(), coef(), predict() and fitted() methods. The plotting helpers
plotICtrace(), plotMargProb(), plotModelFreq(), plotGelman() and
plotAutocorr() are also exported for drawing the individual diagnostics.
Common arguments include criterion (selection criterion), n.models (number
of top models to retain and average over), threshold (marginal-probability
cut-off for the reported selected variables), inv.temp (inverse temperature),
and n.cores (OpenMP threads for block screening). For survival data,
coxIBGS(y, status, x) takes the follow-up time y and the event indicator
status; for lmeIBGS(), group/Z specify the random-effects structure.
See the package help (?glmIBGS, ?coxIBGS, ?predict.IBGS, ...) and the
package vignette:
vignette("IBGS")
Chen, L. (2022). Model selection and averaging by Gibbs sampler with a tropical cyclone seasonal forecasting application, PhD thesis, The University of Melbourne. https://hdl.handle.net/11343/311691
GPL-3.