Type: | Package |
Title: | Bayesian Model Averaging for Univariate Link Latent Gaussian Models |
Version: | 0.1.2 |
Author: | Gregor Zens [aut, cre], Mark F.J. Steel [aut] |
Maintainer: | Gregor Zens <zens@iiasa.ac.at> |
Description: | Bayesian model averaging (BMA) algorithms for univariate link latent Gaussian models (ULLGMs). For detailed information, refer to Steel M.F.J. & Zens G. (2024) "Model Uncertainty in Latent Gaussian Models with Univariate Link Function" <doi:10.48550/arXiv.2406.17318>. The package supports various g-priors and a beta-binomial prior on the model space. It also includes auxiliary functions for visualizing and tabulating BMA results. Currently, it offers an out-of-the-box solution for model averaging of Poisson log-normal (PLN) and binomial logistic-normal (BiL) models. The codebase is designed to be easily extendable to other likelihoods, priors, and link functions. |
Encoding: | UTF-8 |
License: | MIT + file LICENSE |
RoxygenNote: | 7.3.1 |
Imports: | ggplot2 (≥ 3.5.1), knitr (≥ 1.47), mnormt (≥ 2.1.1), progress (≥ 1.2.3), reshape2 (≥ 1.4.4) |
Suggests: | rmarkdown |
VignetteBuilder: | knitr |
NeedsCompilation: | no |
Packaged: | 2025-04-08 20:49:24 UTC; Gregor |
Repository: | CRAN |
Date/Publication: | 2025-04-08 21:10:02 UTC |
Bayesian Model Averaging for Poisson Log-Normal and Binomial Logistic-Normal Regression Models
Description
ULLGM_BMA
estimates Bayesian regression models using either a Poisson log-normal (PLN) or binomial logistic-normal (BiL) regression framework. It accounts for model uncertainty via Bayesian model averaging.
Usage
ULLGM_BMA(X,
y,
model = "PLN",
gprior = "BRIC",
nsave = 10000,
nburn = 2000,
Ni = NULL,
m = NULL,
verbose = TRUE)
Arguments
X |
A n x p design matrix where n is the number of observations and p is the number of explanatory variables. |
y |
A n x 1 response vector. For PLN and BiL models, this is a count response. |
model |
Indicates the model to be estimated. Options are |
gprior |
Specifies the g-prior to be used. Options under fixed g are |
nsave |
The number of saved posterior samples. Defaults to 10,000. |
nburn |
The number of initial burn-in samples. Defaults to 2,000. |
Ni |
A vector containing the number of trials for each observation when estimating a binomial logistic-normal model. Required if |
m |
The prior expected model size as per the beta-binomial prior of Ley and Steel (2009). Defaults to |
verbose |
Logical indicator of whether progress should be printed during estimation. Default is |
Value
A list containing the inputs and selected posterior simulation outputs, such as posterior chains for the coefficients and inclusion vectors.
Note
All explanatory variables in X
are automatically demeaned within the function. All models do automatically include an intercept term.
References
Liang, F., Paulo, R., Molina, G., Clyde, M. A., & Berger, J. O. (2008). Mixtures of g priors for Bayesian variable selection. Journal of the American Statistical Association, 103(481), 410-423.
Zellner, A., & Siow, A. (1980). Posterior odds ratios for selected regression hypotheses. Trabajos de estadÃstica y de investigación operativa, 31, 585-603.
Ley, E., & Steel, M. F. J. (2009). On the effect of prior assumptions in Bayesian model averaging with applications to growth regression. Journal of Applied Econometrics, 24(4), 651-674.
Examples
# Load package
library(LatentBMA)
# Example 1: Estimate a PLN model under a BRIC prior with m = p/2 using simulated data
# Note: Use more samples for actual analysis
# Note: nsave = 250 and nburn = 250 are for demonstration purposes
X <- matrix(rnorm(100*20), 100, 20)
z <- 2 + X %*% c(0.5, -0.5, rep(0, 18)) + rnorm(100, 0, sqrt(0.25))
y <- rpois(100, exp(z))
results_pln <- ULLGM_BMA(X = X, y = y, model = "PLN", nsave = 250, nburn = 250)
# Example 2: Estimate a BiL model under a Zellner-Siow prior with m = 5 using simulated data
# Note: Use more samples for actual analysis
# Note: nsave = 250 and nburn = 250 are for demonstration purposes
X <- matrix(rnorm(100*20), 100, 20)
Ni <- rep(50, 100)
z <- 2 + X %*% c(0.5, -0.5, rep(0, 18)) + rnorm(100, 0, sqrt(0.25))
y <- rbinom(100, Ni, 1 / (1 + exp(-z)))
results_bil <- ULLGM_BMA(X = X, y = y, Ni = Ni, model = "BiL", nsave = 250, nburn = 250,
m = 5, gprior = "zellnersiow")
Visualization of Posterior Means of Coefficients
Description
plotBeta
produces a visualization of the estimated posterior means of the coefficients, extracted from ULLGM_BMA
results.
Usage
plotBeta(x,
variable_names = NULL,
sort = TRUE)
Arguments
x |
The output object of |
variable_names |
A character vector specifying the names of the columns of X. |
sort |
Logical, indicating whether the plot should be sorted by posterior mean. Defaults to |
Value
Returns a 'ggplot2::ggplot' object.
Author(s)
Gregor Zens
Examples
# Load package
library(LatentBMA)
# Example: Estimate a PLN model under a BRIC prior with m = p/2 using simulated data
# Note: Use more samples for actual analysis
# Note: nsave = 250 and nburn = 250 are for demonstration purposes
X <- matrix(rnorm(100*20), 100, 20)
z <- 2 + X %*% c(0.5, -0.5, rep(0, 18)) + rnorm(100, 0, sqrt(0.25))
y <- rpois(100, exp(z))
results_pln <- ULLGM_BMA(X = X, y = y, model = "PLN", nsave = 250, nburn = 250)
plotBeta(results_pln)
Visualization of Model Size Posterior Distribution
Description
plotModelSize
produces a visualization of the posterior distribution of model size, extracted from ULLGM_BMA
results.
Usage
plotModelSize(x)
Arguments
x |
The output object of |
Value
Returns a 'ggplot2::ggplot' object visualizing the posterior distribution of model size.
Author(s)
Gregor Zens
Examples
# Load package
library(LatentBMA)
# Example: Estimate a PLN model under a BRIC prior with m = p/2 using simulated data
# Note: Use more samples for actual analysis
# Note: nsave = 250 and nburn = 250 are for demonstration purposes
X <- matrix(rnorm(100*20), 100, 20)
z <- 2 + X %*% c(0.5, -0.5, rep(0, 18)) + rnorm(100, 0, sqrt(0.25))
y <- rpois(100, exp(z))
results_pln <- ULLGM_BMA(X = X, y = y, model = "PLN", nsave = 250, nburn = 250)
plotModelSize(results_pln)
Visualization of Posterior Inclusion Probabilities
Description
plotPIP
produces a visualization of the posterior inclusion probabilities (PIPs) extracted from ULLGM_BMA
results.
Usage
plotPIP(x,
variable_names = NULL,
sort = TRUE)
Arguments
x |
The output object of |
variable_names |
A character vector specifying the names of the columns of X. |
sort |
Logical, indicating whether the plot should be sorted by PIP. Defaults to |
Value
Returns a 'ggplot2::ggplot' object.
Author(s)
Gregor Zens
Examples
# Load package
library(LatentBMA)
# Example: Estimate a PLN model under a BRIC prior with m = p/2 using simulated data
# Note: Use more samples for actual analysis
# Note: nsave = 250 and nburn = 250 are for demonstration purposes
X <- matrix(rnorm(100*20), 100, 20)
z <- 2 + X %*% c(0.5, -0.5, rep(0, 18)) + rnorm(100, 0, sqrt(0.25))
y <- rpois(100, exp(z))
results_pln <- ULLGM_BMA(X = X, y = y, model = "PLN", nsave = 250, nburn = 250)
plotPIP(results_pln)
Summary Tables for ULLGM_BMA
Estimation Results
Description
summaryBMA
produces a table with estimated posterior means, standard deviations, and posterior inclusion probabilities (PIPs) for the results of a ULLGM_BMA
estimation.
Usage
summaryBMA(x,
variable_names = NULL,
digits = 3,
sort = FALSE,
type = "pandoc")
Arguments
x |
The output object of |
variable_names |
A character vector specifying the names of the columns of X. |
digits |
Number of digits to round the table to. Defaults to 3. |
sort |
Logical, indicating whether the table should be sorted by PIPs. Default is |
type |
A character string indicating the format of the table. Options are |
Value
Returns a 'knitr::kable' object containing the summary table.
Author(s)
Gregor Zens
Examples
# Load package
library(LatentBMA)
# Example: Estimate a PLN model under a BRIC prior with m = p/2 using simulated data
# Note: Use more samples for actual analysis
# Note: nsave = 250 and nburn = 250 are for demonstration purposes
X <- matrix(rnorm(100*20), 100, 20)
z <- 2 + X %*% c(0.5, -0.5, rep(0, 18)) + rnorm(100, 0, sqrt(0.25))
y <- rpois(100, exp(z))
results_pln <- ULLGM_BMA(X = X, y = y, model = "PLN", nsave = 250, nburn = 250)
summaryBMA(results_pln)
Extract Top Models from ULLGM_BMA
Estimation Results
Description
topModels
produces a table of the top n models from a ULLGM_BMA
object, sorted by posterior model probabilities.
Usage
topModels(x,
variable_names = NULL,
type = "pandoc",
digits = 3,
n = 5)
Arguments
x |
The output object of |
variable_names |
A character vector specifying the names of the columns of X. |
type |
A character string indicating the format of the table. Options are |
digits |
Number of digits to round the table to. Defaults to 3. |
n |
Number of top models to be returned. Defaults to 5. |
Value
Returns a 'knitr::kable' object containing the table of top models.
Author(s)
Gregor Zens
Examples
# Load package
library(LatentBMA)
# Example: Estimate a PLN model under a BRIC prior with m = p/2 using simulated data
# Note: Use more samples for actual analysis
# Note: nsave = 250 and nburn = 250 are for demonstration purposes
X <- matrix(rnorm(100*20), 100, 20)
z <- 2 + X %*% c(0.5, -0.5, rep(0, 18)) + rnorm(100, 0, sqrt(0.25))
y <- rpois(100, exp(z))
results_pln <- ULLGM_BMA(X = X, y = y, model = "PLN", nsave = 250, nburn = 250)
# Top 5 models
topModels(results_pln)
Traceplots for Selected Parameters
Description
tracePlot
produces traceplots for selected parameters, extracted from ULLGM_BMA
results.
Usage
tracePlot(x, parameter = "beta", index = 1)
Arguments
x |
The output object of |
parameter |
Specifies which parameter should be considered for the traceplot. Options are |
index |
If |
Value
Returns a 'ggplot2::ggplot' object.
Author(s)
Gregor Zens