| Title: | Variational Bayesian Algorithm for Multi-Source Heterogeneous Models |
|---|---|
| Description: | A Variational Bayesian algorithm for high-dimensional multi-source heterogeneous linear models. More details have been written up in a paper submitted to the journal Statistics in Medicine, and the details of variational Bayesian methods can be found in Ray and Szabo (2021) <doi:10.1080/01621459.2020.1847121>. It simultaneously performs parameter estimation and variable selection. The algorithm supports two model settings: (1) local models, where variable selection is only applied to homogeneous coefficients, and (2) global models, where variable selection is also performed on heterogeneous coefficients. Two forms of Spike-and-Slab priors are available: the Laplace distribution and the Gaussian distribution as the Slab component. |
| Authors: | Lu Luo [aut, cre], Huiqiong Li [aut] |
| Maintainer: | Lu Luo <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 1.0.0 |
| Built: | 2026-06-06 08:40:31 UTC |
| Source: | https://github.com/cran/VBMS |
A variational Bayesian algorithm is proposed for multi-source heterogeneous models under the Laplace Spike-and-Slab prior, enabling simultaneous variable selection for both homogeneous and #' heterogeneous covariates.
vb_gauss_global( X, Z, Y, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1 )vb_gauss_global( X, Z, Y, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1 )
X |
Homogeneous covariates |
Z |
Heterogeneous covariates |
Y |
Response covariates |
max_iter |
Maximum number of iterations, Defaut:1000 |
tol |
Algorithm convergence tolerance, Defaut:1e-6 |
a |
A prior of Beta distribution, Defaut:1 |
b |
A prior of Beta distribution, Defaut:10 |
lambda |
A prior of Laplace distribution, Defaut:1 |
The mean of the homogeneity coefficient:mu1; The variance of homogeneity coefficient:sigma1; Selection coefficient:gamma1; The mean of the heterogeneous coefficient:mu2; The variance of heterogeneous coefficient:sigma2; Selection heterogeneous:gamma2.
A variational Bayesian algorithm, based on the Gauss Spike-and-Slab prior, is tailored for multi-source heterogeneous models and focuses on variable selection exclusively for the homogeneous covariates.
vb_gauss_local(X, Z, Y, max_iter, tol, a = 1, b = 10, lambda = 1)vb_gauss_local(X, Z, Y, max_iter, tol, a = 1, b = 10, lambda = 1)
X |
Homogeneous covariates |
Z |
Heterogeneous covariates |
Y |
Response covariates |
max_iter |
Maximum number of iterations, Defaut:1000 |
tol |
Algorithm convergence tolerance, Defaut:1e-6 |
a |
A prior of Beta distribution, Defaut:1 |
b |
A prior of Beta distribution, Defaut:10 |
lambda |
A prior of Laplace distribution, Defaut:1 |
The mean of the homogeneity coefficient:mu; The variance of homogeneity coefficient:sigma; Selection coefficient:gamma; Mean and covariance of heterogeneity coefficients:m, s2.
A variational Bayesian algorithm is proposed for multi-source heterogeneous models under the Laplace Spike-and-Slab prior, enabling simultaneous variable selection for both homogeneous and #' heterogeneous covariates.
vb_lap_global(X, Z, Y, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1)vb_lap_global(X, Z, Y, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1)
X |
Homogeneous covariates |
Z |
Heterogeneous covariates |
Y |
Response covariates |
max_iter |
Maximum number of iterations, Defaut:1000 |
tol |
Algorithm convergence tolerance, Defaut:1e-6 |
a |
A prior of Beta distribution, Defaut:1 |
b |
A prior of Beta distribution, Defaut:10 |
lambda |
A prior of Laplace distribution, Defaut:1 |
The mean of the homogeneity coefficient:mu1; The variance of homogeneity coefficient:sigma1; Selection coefficient:gamma1; The mean of the heterogeneous coefficient:mu2; The variance of heterogeneous coefficient:sigma2; Selection heterogeneous:gamma2.
A variational Bayesian algorithm, based on the Laplace Spike-and-Slab prior, is tailored for multi-source heterogeneous models and focuses on variable selection exclusively for the homogeneous covariates.
vb_lap_local(X, Z, Y, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1)vb_lap_local(X, Z, Y, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1)
X |
Homogeneous covariates |
Z |
Heterogeneous covariates |
Y |
Response covariates |
max_iter |
Maximum number of iterations, Defaut:1000 |
tol |
Algorithm convergence tolerance, Defaut:1e-6 |
a |
A prior of Beta distribution, Defaut:1 |
b |
A prior of Beta distribution, Defaut:10 |
lambda |
A prior of Laplace distribution, Defaut:1 |
The mean of the homogeneity coefficient:mu; The variance of homogeneity coefficient:sigma; Selection coefficient:gamma; Mean and covariance of heterogeneity coefficients:m, s2.
This package implements a variational Bayesian algorithm for high-dimensional multi-source heterogeneous linear models. It simultaneously performs parameter estimation and variable selection. The algorithm supports two model settings: (1) local models, where variable selection is only #' applied to homogeneous coefficients, and (2) global models, where variable selection is also #' performed on heterogeneous coefficients. Two forms of Spike-and-Slab priors are available: the #' Laplace distribution and the Gaussian distribution as the Slab component.
vbms( X, Z, Y, global, prior, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1 )vbms( X, Z, Y, global, prior, max_iter = 1000, tol = 1e-06, a = 1, b = 10, lambda = 1 )
X |
Homogeneous covariates |
Z |
Heterogeneous covariates |
Y |
Response covariates |
global |
Indicates whether variable selection is required for het coefficients, if TRUE, Variable selection will be made for het coefficients. |
prior |
Forms of Slab distribution in Spike-and-Slab prior, "laplace" or "gauss". |
max_iter |
Maximum number of iterations, Defaut:1000 |
tol |
Algorithm convergence tolerance, Defaut:1e-6 |
a |
A prior of Beta distribution, Defaut:1 |
b |
A prior of Beta distribution, Defaut:10 |
lambda |
A prior of Laplace distribution, Defaut:1 |
mu_hom |
The mean of the homogeneous coefficients |
sigma_hom |
The variance of homogeneous coefficients |
gamma_hom |
Selection indicators for homogeneous coefficients |
mu_het |
The mean of the heterogeneous coefficients |
sigma_het |
The variance of heterogeneous coefficients |
gamma_het |
Selection indicators for heterogeneous coefficients (NULL for local models) |
# Simulate multi-source heterogeneous data n <- 50 # number of samples per source K <- 3 # number of sources p <- 100 # number of homogeneous covariates q <- 5 # number of heterogeneous covariates set.seed(1) theta <- matrix(c(c(-1,0.5,1,-0.5,2),rep(0,p-5)), ncol = 1) beta <- matrix(1, nrow = q, ncol = K) for (k in 1:K) { beta[,k] <- matrix(c(rep(log(k+1),5),rep(0,q-5)), ncol = 1) } zdata <- MASS::mvrnorm(K*n, rep(0,q), diag(q)) Z <- array(data=zdata,dim=c(n,q,K)) xdata <- MASS::mvrnorm(K*n, rep(0,p), diag(p)) X <- array(data=xdata,dim=c(n,p,K)) Y <- matrix(0, nrow = n, ncol = K) for (k in 1:K) { Y[,k] <- MASS::mvrnorm(1, X[,,k]%*%theta+Z[,,k]%*%beta[,k], diag(n)) } # Fit local model with Laplace prior res <- vbms(X, Z, Y, global=FALSE, prior='laplace') # View results print(head(res$mu_hom)) # Homogeneous coefficients mean print(head(res$gamma_hom)) # Homogeneous variable selection print(res$mu_het) # Heterogeneous coefficients mean# Simulate multi-source heterogeneous data n <- 50 # number of samples per source K <- 3 # number of sources p <- 100 # number of homogeneous covariates q <- 5 # number of heterogeneous covariates set.seed(1) theta <- matrix(c(c(-1,0.5,1,-0.5,2),rep(0,p-5)), ncol = 1) beta <- matrix(1, nrow = q, ncol = K) for (k in 1:K) { beta[,k] <- matrix(c(rep(log(k+1),5),rep(0,q-5)), ncol = 1) } zdata <- MASS::mvrnorm(K*n, rep(0,q), diag(q)) Z <- array(data=zdata,dim=c(n,q,K)) xdata <- MASS::mvrnorm(K*n, rep(0,p), diag(p)) X <- array(data=xdata,dim=c(n,p,K)) Y <- matrix(0, nrow = n, ncol = K) for (k in 1:K) { Y[,k] <- MASS::mvrnorm(1, X[,,k]%*%theta+Z[,,k]%*%beta[,k], diag(n)) } # Fit local model with Laplace prior res <- vbms(X, Z, Y, global=FALSE, prior='laplace') # View results print(head(res$mu_hom)) # Homogeneous coefficients mean print(head(res$gamma_hom)) # Homogeneous variable selection print(res$mu_het) # Heterogeneous coefficients mean