Title: | Fitting Shared Atoms Nested Models via Markov Chains Monte Carlo |
---|---|
Description: | Estimate Bayesian nested mixture models via Markov Chain Monte Carlo methods. Specifically, the package implements the common atoms model (Denti et al., 2023), its finite version (D'Angelo et al., 2023), and a hybrid finite-infinite model. All models use Gaussian mixtures with a normal-inverse-gamma prior distribution on the parameters. Additional functions are provided to help analyzing the results of the fitting procedure. References: Denti, Camerlenghi, Guindani, Mira (2023) <doi:10.1080/01621459.2021.1933499>, D’Angelo, Canale, Yu, Guindani (2023) <doi:10.1111/biom.13626>. |
Authors: | Francesco Denti [aut, cre] , Laura D'Angelo [aut, cph] |
Maintainer: | Francesco Denti <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.1.1 |
Built: | 2024-10-31 06:24:53 UTC |
Source: | CRAN |
Given the MCMC output, estimate the observational and distributional partitions using salso::salso()
.
estimate_clusters(object, burnin = 0, ncores = 0)
estimate_clusters(object, burnin = 0, ncores = 0)
object |
object of class |
burnin |
the length of the burn-in to be discarded before estimating the clusters (default is 2/3 of the iterations). |
ncores |
the number of CPU cores to use, i.e., the number of simultaneous runs at any given time. A value of zero indicates to use all cores on the system. |
Object of class SANclusters
. The object contains:
est_oc
estimated partition at the observational level. It is an object of class salso.estimate
.
est_dc
estimated partition at the distributional level. It is an object of class salso.estimate
.
clus_means
cluster-specific sample means of the estimated partition.
clus_vars
cluster-specific sample variances of the estimated partition.
salso::salso()
, print.SANmcmc
, plot.SANmcmc
, print.SANclusters
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) estimate_clusters(out)
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) estimate_clusters(out)
Plot method for objects of class SANmcmc
.
The function displays two graphs, meant to analyze the estimated distributional and observational clusters.
## S3 method for class 'SANmcmc' plot( x, type = c("boxplot", "ecdf", "scatter"), estimated_clusters = NULL, burnin = 0, palette_brewed = FALSE, ncores = 1, ... )
## S3 method for class 'SANmcmc' plot( x, type = c("boxplot", "ecdf", "scatter"), estimated_clusters = NULL, burnin = 0, palette_brewed = FALSE, ncores = 1, ... )
x |
object of class |
type |
what type of plot should be drawn (only for the left-side plot). Possible types are "boxplot", "ecdf", and "scatter". |
estimated_clusters |
the output of a call to |
burnin |
the length of the burn-in to be discarded (default is 2/3 of the iterations). |
palette_brewed |
(logical) the color palette to be used. Default is |
ncores |
if the partition is computed, the number of CPU cores to use to estimate the clusters, i.e., the number of simultaneous runs at any given time. A value of zero indicates to use all cores on the system. |
... |
additional graphical parameters to be passed when |
The function plots a summary of the fitted model.
print.SANmcmc
, estimate_clusters
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) plot(out, type = "ecdf", palette_brewed = TRUE)
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) plot(out, type = "ecdf", palette_brewed = TRUE)
Print the cluster-specific sample means and variances of the estimated observational and distributional partition.
## S3 method for class 'SANclusters' print(x, ...)
## S3 method for class 'SANclusters' print(x, ...)
x |
object of class |
... |
ignored. |
The function prints a summary of the estimated clusters.
Print method for objects of class SANmcmc
.
## S3 method for class 'SANmcmc' print(x, ...)
## S3 method for class 'SANmcmc' print(x, ...)
x |
object of class |
... |
ignored. |
The function prints a summary of the fitted model.
estimate_clusters
, plot.SANmcmc
sample_CAM
is used to perform posterior inference under the common atoms model (CAM) of Denti et al. (2023) with Gaussian likelihood.
The model uses Dirichlet process mixtures (DPM) at both the observational and distributional levels.
The implemented algorithm is based on the nested slice sampler of Denti et al. (2023), based on the algorithm of Kalli, Griffin and Walker (2011).
sample_CAM(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 1, hyp_alpha2 = 1, hyp_beta1 = 1, hyp_beta2 = 1, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
sample_CAM(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 1, hyp_alpha2 = 1, hyp_beta1 = 1, hyp_beta2 = 1, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
nrep |
Number of MCMC iterations. |
burn |
Number of discarded iterations. |
y |
Vector of observations. |
group |
Vector of the same length of y indicating the group membership (numeric). |
maxK |
Maximum number of distributional clusters (default = 50). |
maxL |
Maximum number of observational clusters (default = 50). |
m0 , tau0 , lambda0 , gamma0
|
Hyperparameters on |
hyp_alpha1 , hyp_alpha2
|
If a random |
hyp_beta1 , hyp_beta2
|
If a random |
alpha |
Distributional DP parameter if fixed (optional). The distribution is |
beta |
Observational DP parameter if fixed (optional). The distribution is |
warmstart , nclus_start
|
Initialization of the observational clustering.
|
mu_start , sigma2_start , M_start , S_start , alpha_start , beta_start
|
Starting points of the MCMC chains (optional).
|
progress |
show a progress bar? (logical, default TRUE). |
seed |
set a fixed seed. |
Data structure
The common atoms mixture model is used to perform inference in nested settings, where the data are organized into groups.
The data should be continuous observations
, where each
contains the
observations from group
, for
.
The function takes as input the data as a numeric vector
y
in this concatenated form. Hence y
should be a vector of length
. The
group
parameter is a numeric vector of the same size as y
indicating the group membership for each
individual observation.
Notice that with this specification the observations in the same group need not be contiguous as long as the correspondence between the variables
y
and group
is maintained.
Model
The data are modeled using a univariate Gaussian likelihood, where both the mean and the variance are observational-cluster-specific, i.e.,
where is the observational cluster indicator of observation
in group
.
The prior on the model parameters is a Normal-Inverse-Gamma distribution
,
i.e.,
,
(shape, rate).
Clustering
The model performs a clustering of both observations and groups.
The clustering of groups (distributional clustering) is provided by the allocation variables , with
The distribution of the probabilities is ,
where GEM is the Griffiths-Engen-McCloskey distribution of parameter
,
which characterizes the stick-breaking construction of the DP (Sethuraman, 1994).
The clustering of observations (observational clustering) is provided by the allocation variables , with
The distribution of the probabilities is for all
sample_CAM
returns four objects:
model
: name of the fitted model.
params
: list containing the data and the parameters used in the simulation. Details below.
sim
: list containing the simulated values (MCMC chains). Details below.
time
: total computation time.
Data and parameters:
params
is a list with the following components:
nrep
Number of MCMC iterations.
y, group
Data and group vectors.
maxK, maxL
Maximum number of distributional and observational clusters.
m0, tau0, lambda0, gamma0
Model hyperparameters.
hyp_alpha1,hyp_alpha2
) or alpha
Either the hyperparameters on (if
random), or the value for
(if fixed).
hyp_beta1,hyp_beta2
) or beta
Either the hyperparameters on (if
random), or the value for
(if fixed).
Simulated values:
sim
is a list with the following components:
mu
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the mean parameter for each observational cluster .
sigma2
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the variance parameter for each observational cluster .
obs_cluster
Matrix of size (nrep
, n), with n = length(y)
.
Each row is a posterior sample of the observational cluster allocation variables .
distr_cluster
Matrix of size (nrep
, J), with J = length(unique(group))
.
Each row is a posterior sample of the distributional cluster allocation variables .
pi
Matrix of size (nrep
, maxK
).
Each row is a posterior sample of the distributional cluster probabilities .
omega
3-d array of size (maxL
, maxK
, nrep
).
Each slice is a posterior sample of the observational cluster probabilities.
In each slice, each column is a vector (of length
maxL
) observational cluster probabilities
for distributional cluster
.
alpha
Vector of length nrep
of posterior samples of the parameter .
beta
Vector of length nrep
of posterior samples of the parameter .
maxK
Vector of length nrep
of the number of distributional DP components used by the slice sampler.
maxL
Vector of length nrep
of the number of observational DP components used by the slice sampler.
Denti, F., Camerlenghi, F., Guindani, M., and Mira, A. (2023). A Common Atoms Model for the Bayesian Nonparametric Analysis of Nested Data. Journal of the American Statistical Association, 118(541), 405-416. <doi:10.1080/01621459.2021.1933499>
Kalli, M., Griffin, J.E., and Walker, S.G. (2011). Slice Sampling Mixture Models, Statistics and Computing, 21, 93–105. <doi:10.1007/s11222-009-9150-y>
Sethuraman, A.J. (1994). A Constructive Definition of Dirichlet Priors, Statistica Sinica, 4, 639–650.
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_CAM(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxL = 20, maxK = 20) out
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_CAM(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxL = 20, maxK = 20) out
sample_fiSAN
is used to perform posterior inference under the finite-infinite shared atoms nested (fiSAN) model with Gaussian likelihood.
The model uses a Dirichlet process mixture prior at the distributional level,
and Dirichlet mixture with an unknown number of components (following the specification of Frühwirth-Schnatter et al., 2021) at the observational level.
The algorithm for the nonparametric component is based on the slice sampler for DPM of Kalli, Griffin and Walker (2011).
sample_fiSAN(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 1, hyp_alpha2 = 1, hyp_beta1 = 6, hyp_beta2 = 3, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
sample_fiSAN(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 1, hyp_alpha2 = 1, hyp_beta1 = 6, hyp_beta2 = 3, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
nrep |
Number of MCMC iterations. |
burn |
Number of discarded iterations. |
y |
Vector of observations. |
group |
Vector of the same length of y indicating the group membership (numeric). |
maxK |
Maximum number of distributional clusters |
maxL |
Maximum number of observational clusters |
m0 , tau0 , lambda0 , gamma0
|
Hyperparameters on |
hyp_alpha1 , hyp_alpha2
|
If a random |
hyp_beta1 , hyp_beta2 , eps_beta
|
If a random |
alpha |
Distributional DP parameter if fixed (optional). The distribution is |
beta |
Observational Dirichlet parameter if fixed (optional). The distribution is Dirichlet( |
warmstart , nclus_start
|
Initialization of the observational clustering.
|
mu_start , sigma2_start , M_start , S_start , alpha_start , beta_start
|
Starting points of the MCMC chains (optional). Default is |
progress |
show a progress bar? (logical, default TRUE). |
seed |
set a fixed seed. |
Data structure
The finite-infinite common atoms mixture model is used to perform inference in nested settings, where the data are organized into groups.
The data should be continuous observations
, where each
contains the
observations from group
, for
.
The function takes as input the data as a numeric vector
y
in this concatenated form. Hence y
should be a vector of length
. The
group
parameter is a numeric vector of the same size as y
indicating the group membership for each
individual observation.
Notice that with this specification the observations in the same group need not be contiguous as long as the correspondence between the variables
y
and group
is maintained.
Model
The data are modeled using a univariate Gaussian likelihood, where both the mean and the variance are observational-cluster-specific, i.e.,
where is the observational cluster indicator of observation
in group
.
The prior on the model parameters is a Normal-Inverse-Gamma distribution
,
i.e.,
,
(shape, rate).
Clustering
The model performs a clustering of both observations and groups.
The clustering of groups (distributional clustering) is provided by the allocation variables , with
The distribution of the probabilities is ,
where GEM is the Griffiths-Engen-McCloskey distribution of parameter
,
which characterizes the stick-breaking construction of the DP (Sethuraman, 1994).
The clustering of observations (observational clustering) is provided by the allocation variables , with
The distribution of the probabilities is for all
.
Moreover, the dimension
is random (see Frühwirth-Schnatter et al., 2021).
sample_fiSAN
returns four objects:
model
: name of the fitted model.
params
: list containing the data and the parameters used in the simulation. Details below.
sim
: list containing the simulated values (MCMC chains). Details below.
time
: total computation time.
Data and parameters:
params
is a list with the following components:
nrep
Number of MCMC iterations.
y, group
Data and group vectors.
maxK, maxL
Maximum number of distributional and observational clusters.
m0, tau0, lambda0, gamma0
Model hyperparameters.
hyp_alpha1,hyp_alpha2
) or alpha
Either the hyperparameters on (if
random), or the value for
(if fixed).
hyp_beta1, hyp_beta2, eps_beta
) or beta
Either the hyperparameters on and MH step size (if
random), or the value for
(if fixed).
Simulated values:
sim
is a list with the following components:
mu
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the mean parameter for each observational cluster .
sigma2
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the variance parameter for each observational cluster .
obs_cluster
Matrix of size (nrep
, n), with n = length(y)
.
Each row is a posterior sample of the observational cluster allocation variables .
distr_cluster
Matrix of size (nrep
, J), with J = length(unique(group))
.
Each row is a posterior sample of the distributional cluster allocation variables .
pi
Matrix of size (nrep
, maxK
).
Each row is a posterior sample of the distributional cluster probabilities .
omega
3-d array of size (maxL
, maxK
, nrep
).
Each slice is a posterior sample of the observational cluster probabilities.
In each slice, each column is a vector (of length
maxL
) observational cluster probabilities
for distributional cluster
.
alpha
Vector of length nrep
of posterior samples of the parameter .
beta
Vector of length nrep
of posterior samples of the parameter .
maxK
Vector of length nrep
of the number of distributional DP components used by the slice sampler.
L_plus
Vector of length nrep
of posterior samples of the number of observational clusters.
L
Vector of length nrep
of posterior samples of the observational Dirichlet dimension.
Frühwirth-Schnatter, S., Malsiner-Walli, G. and Grün, B. (2021). Generalized mixtures of finite mixtures and telescoping sampling. Bayesian Analysis, 16(4), 1279–1307. <doi:10.1214/21-BA1294>
Kalli, M., Griffin, J.E., and Walker, S.G. (2011). Slice Sampling Mixture Models, Statistics and Computing, 21, 93–105. <doi:10.1007/s11222-009-9150-y>
Sethuraman, A.J. (1994). A Constructive Definition of Dirichlet Priors, Statistica Sinica, 4, 639–650.
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) out
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) out
sample_fiSAN_sparsemix
is used to perform posterior inference under the finite-infinite shared atoms nested (fiSAN) model with Gaussian likelihood.
The model uses a Dirichlet process mixture prior at the distributional level,
and a sparse (overfitted) Dirichlet mixture (Malsiner-Walli et al., 2016) at the observational level.
The algorithm for the nonparametric component is based on the slice sampler for DPM of Kalli, Griffin and Walker (2011).
sample_fiSAN_sparsemix(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 1, hyp_alpha2 = 1, hyp_beta = 10, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
sample_fiSAN_sparsemix(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 1, hyp_alpha2 = 1, hyp_beta = 10, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
nrep |
Number of MCMC iterations. |
burn |
Number of discarded iterations. |
y |
Vector of observations. |
group |
Vector of the same length of y indicating the group membership (numeric). |
maxK |
Maximum number of distributional clusters |
maxL |
Maximum number of observational clusters |
m0 , tau0 , lambda0 , gamma0
|
Hyperparameters on |
hyp_alpha1 , hyp_alpha2
|
If a random |
hyp_beta , eps_beta
|
If a random |
alpha |
Distributional DP parameter if fixed (optional). The distribution is |
beta |
Observational Dirichlet parameter if fixed (optional). The distribution is Dirichlet( |
warmstart , nclus_start
|
Initialization of the observational clustering.
|
mu_start , sigma2_start , M_start , S_start , alpha_start , beta_start
|
Starting points of the MCMC chains (optional). Default is |
progress |
show a progress bar? (logical, default TRUE). |
seed |
set a fixed seed. |
Data structure
The finite-infinite common atoms mixture model is used to perform inference in nested settings, where the data are organized into groups.
The data should be continuous observations
, where each
contains the
observations from group
, for
.
The function takes as input the data as a numeric vector
y
in this concatenated form. Hence y
should be a vector of length
. The
group
parameter is a numeric vector of the same size as y
indicating the group membership for each
individual observation.
Notice that with this specification the observations in the same group need not be contiguous as long as the correspondence between the variables
y
and group
is maintained.
Model
The data are modeled using a univariate Gaussian likelihood, where both the mean and the variance are observational-cluster-specific, i.e.,
where is the observational cluster indicator of observation
in group
.
The prior on the model parameters is a Normal-Inverse-Gamma distribution
,
i.e.,
,
(shape, rate).
Clustering
The model performs a clustering of both observations and groups.
The clustering of groups (distributional clustering) is provided by the allocation variables , with
The distribution of the probabilities is ,
where GEM is the Griffiths-Engen-McCloskey distribution of parameter
,
which characterizes the stick-breaking construction of the DP (Sethuraman, 1994).
The clustering of observations (observational clustering) is provided by the allocation variables , with
The distribution of the probabilities is for all
.
sample_fiSAN_sparsemix
returns four objects:
model
: name of the fitted model.
params
: list containing the data and the parameters used in the simulation. Details below.
sim
: list containing the simulated values (MCMC chains). Details below.
time
: total computation time.
Data and parameters:
params
is a list with the following components:
nrep
Number of MCMC iterations.
y, group
Data and group vectors.
maxK, maxL
Maximum number of distributional and observational clusters.
m0, tau0, lambda0, gamma0
Model hyperparameters.
hyp_alpha1,hyp_alpha2
) or alpha
Either the hyperparameters on (if
random), or the value for
(if fixed).
hyp_beta,eps_beta
) or beta
Either the hyperparameter on and MH step size (if
random), or the value for
(if fixed).
Simulated values:
sim
is a list with the following components:
mu
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the mean parameter for each observational cluster .
sigma2
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the variance parameter for each observational cluster .
obs_cluster
Matrix of size (nrep
, n), with n = length(y)
.
Each row is a posterior sample of the observational cluster allocation variables .
distr_cluster
Matrix of size (nrep
, J), with J = length(unique(group))
.
Each row is a posterior sample of the distributional cluster allocation variables .
pi
Matrix of size (nrep
, maxK
).
Each row is a posterior sample of the distributional cluster probabilities .
omega
3-d array of size (maxL
, maxK
, nrep
).
Each slice is a posterior sample of the observational cluster probabilities.
In each slice, each column is a vector (of length
maxL
) observational cluster probabilities
for distributional cluster
.
alpha
Vector of length nrep
of posterior samples of the parameter .
beta
Vector of length nrep
of posterior samples of the parameter .
maxK
Vector of length nrep
of the number of distributional DP components used by the slice sampler.
Kalli, M., Griffin, J.E., and Walker, S.G. (2011). Slice Sampling Mixture Models, Statistics and Computing, 21, 93–105. <doi:10.1007/s11222-009-9150-y>
Malsiner-Walli, G., Frühwirth-Schnatter, S. and Grün, B. (2016). Model-based clustering based on sparse finite Gaussian mixtures. Statistics and Computing 26, 303–324. <doi:10.1007/s11222-014-9500-2>
Sethuraman, A.J. (1994). A Constructive Definition of Dirichlet Priors, Statistica Sinica, 4, 639–650.
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fiSAN_sparsemix(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 0.01) out
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fiSAN_sparsemix(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 0.01) out
sample_fSAN
is used to perform posterior inference under the finite shared atoms nested (fSAN) model with Gaussian likelihood (originally proposed in D'Angelo et al., 2023).
The model uses Dirichlet mixtures with an unknown number of components (following the specification of Frühwirth-Schnatter et al., 2021) at both the observational and distributional level.
sample_fSAN(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 6, hyp_alpha2 = 3, hyp_beta1 = 6, hyp_beta2 = 3, eps_alpha = NULL, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
sample_fSAN(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha1 = 6, hyp_alpha2 = 3, hyp_beta1 = 6, hyp_beta2 = 3, eps_alpha = NULL, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
nrep |
Number of MCMC iterations. |
burn |
Number of discarded iterations. |
y |
Vector of observations. |
group |
Vector of the same length of y indicating the group membership (numeric). |
maxK |
Maximum number of distributional clusters |
maxL |
Maximum number of observational clusters |
m0 , tau0 , lambda0 , gamma0
|
Hyperparameters on |
hyp_alpha1 , hyp_alpha2 , eps_alpha
|
If a random |
hyp_beta1 , hyp_beta2 , eps_beta
|
If a random |
alpha |
Distributional Dirichlet parameter if fixed (optional). The distribution is Dirichlet( |
beta |
Observational Dirichlet parameter if fixed (optional). The distribution is Dirichlet( |
warmstart , nclus_start
|
Initialization of the observational clustering.
|
mu_start , sigma2_start , M_start , S_start , alpha_start , beta_start
|
Starting points of the MCMC chains (optional).
|
progress |
show a progress bar? (logical, default TRUE.) |
seed |
set a fixed seed. |
Data structure
The finite common atoms mixture model is used to perform inference in nested settings, where the data are organized into groups.
The data should be continuous observations
, where each
contains the
observations from group
, for
.
The function takes as input the data as a numeric vector
y
in this concatenated form. Hence y
should be a vector of length
. The
group
parameter is a numeric vector of the same size as y
indicating the group membership for each
individual observation.
Notice that with this specification the observations in the same group need not be contiguous as long as the correspondence between the variables
y
and group
is maintained.
Model
The data are modeled using a univariate Gaussian likelihood, where both the mean and the variance are observational-cluster-specific, i.e.,
where is the observational cluster indicator of observation
in group
.
The prior on the model parameters is a Normal-Inverse-Gamma distribution
,
i.e.,
,
(shape, rate).
Clustering
The model performs a clustering of both observations and groups.
The clustering of groups (distributional clustering) is provided by the allocation variables , with
The distribution of the probabilities is .
Moreover, the dimension
is random (see Frühwirth-Schnatter et al., 2021).
The clustering of observations (observational clustering) is provided by the allocation variables , with
The distribution of the probabilities is for all
.
Moreover, the dimension
is random (see Frühwirth-Schnatter et al., 2021).
sample_fSAN
returns four objects:
model
: name of the fitted model.
params
: list containing the data and the parameters used in the simulation. Details below.
sim
: list containing the simulated values (MCMC chains). Details below.
time
: total computation time.
Data and parameters:
params
is a list with the following components:
nrep
Number of MCMC iterations.
y, group
Data and group vectors.
maxK, maxL
Maximum number of distributional and observational clusters.
m0, tau0, lambda0, gamma0
Model hyperparameters.
hyp_alpha1, hyp_alpha2, eps_alpha
) or alpha
Either the hyperparameters on and MH step size (if
random), or the value for
(if fixed).
hyp_beta1, hyp_beta2, eps_beta
) or beta
Either the hyperparameters on and MH step size (if
random), or the value for
(if fixed).
Simulated values:
sim
is a list with the following components:
mu
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the mean parameter for each observational cluster .
sigma2
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the variance parameter for each observational cluster .
obs_cluster
Matrix of size (nrep
, n), with n = length(y)
.
Each row is a posterior sample of the observational cluster allocation variables .
distr_cluster
Matrix of size (nrep
, J), with J = length(unique(group))
.
Each row is a posterior sample of the distributional cluster allocation variables .
pi
Matrix of size (nrep
, maxK
).
Each row is a posterior sample of the distributional cluster probabilities .
omega
3-d array of size (maxL
, maxK
, nrep
).
Each slice is a posterior sample of the observational cluster probabilities.
In each slice, each column is a vector (of length
maxL
) observational cluster probabilities
for distributional cluster
.
alpha
Vector of length nrep
of posterior samples of the parameter .
beta
Vector of length nrep
of posterior samples of the parameter .
K_plus
Vector of length nrep
of posterior samples of the number of distributional clusters.
L_plus
Vector of length nrep
of posterior samples of the number of observational clusters.
K
Vector of length nrep
of posterior samples of the distributional Dirichlet dimension.
L
Vector of length nrep
of posterior samples of the observational Dirichlet dimension.
D’Angelo, L., Canale, A., Yu, Z., and Guindani, M. (2023). Bayesian nonparametric analysis for the detection of spikes in noisy calcium imaging data. Biometrics, 79(2), 1370–1382. <doi:10.1111/biom.13626>
Frühwirth-Schnatter, S., Malsiner-Walli, G. and Grün, B. (2021). Generalized mixtures of finite mixtures and telescoping sampling. Bayesian Analysis, 16(4), 1279–1307. <doi:10.1214/21-BA1294>
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, alpha = 1, beta = 1) out
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, alpha = 1, beta = 1) out
sample_fSAN_sparsemix
is used to perform posterior inference under the finite shared atoms nested (fSAN) model with Gaussian likelihood (originally proposed in D'Angelo et al., 2023).
The model uses overfitted (sparse) Dirichlet mixtures (Malsiner-Walli et al., 2016) at both the observational and distributional level.
sample_fSAN_sparsemix(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha = 10, hyp_beta = 10, eps_alpha = NULL, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
sample_fSAN_sparsemix(nrep, burn, y, group, maxK = 50, maxL = 50, m0 = 0, tau0 = 0.1, lambda0 = 3, gamma0 = 2, hyp_alpha = 10, hyp_beta = 10, eps_alpha = NULL, eps_beta = NULL, alpha = NULL, beta = NULL, warmstart = TRUE, nclus_start = NULL, mu_start = NULL, sigma2_start = NULL, M_start = NULL, S_start = NULL, alpha_start = NULL, beta_start = NULL, progress = TRUE, seed = NULL)
nrep |
Number of MCMC iterations. |
burn |
Number of discarded iterations. |
y |
Vector of observations. |
group |
Vector of the same length of y indicating the group membership (numeric). |
maxK |
Maximum number of distributional clusters |
maxL |
Maximum number of observational clusters |
m0 , tau0 , lambda0 , gamma0
|
Hyperparameters on |
hyp_alpha , eps_alpha
|
If a random |
hyp_beta , eps_beta
|
If a random |
alpha |
Distributional Dirichlet parameter if fixed (optional). The distribution is Dirichlet( |
beta |
Observational Dirichlet parameter if fixed (optional). The distribution is Dirichlet( |
warmstart , nclus_start
|
Initialization of the observational clustering.
|
mu_start , sigma2_start , M_start , S_start , alpha_start , beta_start
|
Starting points of the MCMC chains (optional). Default is |
progress |
show a progress bar? (logical, default TRUE). |
seed |
set a fixed seed. |
Data structure
The overfitted mixture common atoms model is used to perform inference in nested settings, where the data are organized into groups.
The data should be continuous observations
, where each
contains the
observations from group
, for
.
The function takes as input the data as a numeric vector
y
in this concatenated form. Hence y
should be a vector of length
. The
group
parameter is a numeric vector of the same size as y
indicating the group membership for each
individual observation.
Notice that with this specification the observations in the same group need not be contiguous as long as the correspondence between the variables
y
and group
is maintained.
Model
The data are modeled using a univariate Gaussian likelihood, where both the mean and the variance are observational-cluster-specific, i.e.,
where is the observational cluster indicator of observation
in group
.
The prior on the model parameters is a Normal-Inverse-Gamma distribution
,
i.e.,
,
(shape, rate).
Clustering
The model performs a clustering of both observations and groups.
The clustering of groups (distributional clustering) is provided by the allocation variables , with
The distribution of the probabilities is .
The clustering of observations (observational clustering) is provided by the allocation variables , with
The distribution of the probabilities is for all
.
sample_fSAN_sparsemix
returns four objects:
model
: name of the fitted model.
params
: list containing the data and the parameters used in the simulation. Details below.
sim
: list containing the simulated values (MCMC chains). Details below.
time
: total computation time.
Data and parameters:
params
is a list with the following components:
nrep
Number of MCMC iterations.
y, group
Data and group vectors.
maxK, maxL
Maximum number of distributional and observational clusters.
m0, tau0, lambda0, gamma0
Model hyperparameters.
hyp_alpha,eps_alpha
) or alpha
Either the hyperparameter on and MH step size (if
random), or the value for
(if fixed).
hyp_beta,eps_beta
) or beta
Either the hyperparameter on and MH step size (if
random), or the value for
(if fixed).
Simulated values:
sim
is a list with the following components:
mu
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the mean parameter for each observational cluster .
sigma2
Matrix of size (nrep
, maxL
).
Each row is a posterior sample of the variance parameter for each observational cluster .
obs_cluster
Matrix of size (nrep
, n), with n = length(y)
.
Each row is a posterior sample of the observational cluster allocation variables .
distr_cluster
Matrix of size (nrep
, J), with J = length(unique(group))
.
Each row is a posterior sample of the distributional cluster allocation variables .
pi
Matrix of size (nrep
, maxK
).
Each row is a posterior sample of the distributional cluster probabilities .
omega
3-d array of size (maxL
, maxK
, nrep
).
Each slice is a posterior sample of the observational cluster probabilities.
In each slice, each column is a vector (of length
maxL
) observational cluster probabilities
for distributional cluster
.
alpha
Vector of length nrep
of posterior samples of the parameter .
beta
Vector of length nrep
of posterior samples of the parameter .
D’Angelo, L., Canale, A., Yu, Z., and Guindani, M. (2023). Bayesian nonparametric analysis for the detection of spikes in noisy calcium imaging data. Biometrics, 79(2), 1370–1382. <doi:10.1111/biom.13626>
Malsiner-Walli, G., Frühwirth-Schnatter, S. and Grün, B. (2016). Model-based clustering based on sparse finite Gaussian mixtures. Statistics and Computing 26, 303–324. <doi:10.1007/s11222-014-9500-2>
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fSAN_sparsemix(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, alpha = 0.01, beta = 0.01) out
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) plot(density(y[g==1]), xlim = c(-5,10)) lines(density(y[g==2]), col = 2) out <- sample_fSAN_sparsemix(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, alpha = 0.01, beta = 0.01) out
Check the convergence of the MCMC through visual inspection of the chains.
traceplot(object, params, show_density = TRUE, show_burnin = TRUE, length_burnin = NULL, show_convergence = TRUE, trunc_plot = 10)
traceplot(object, params, show_density = TRUE, show_burnin = TRUE, length_burnin = NULL, show_convergence = TRUE, trunc_plot = 10)
object |
object of class |
params |
vector of strings with the names of the parameters to check. |
show_density |
logical (default |
show_burnin |
logical (default |
length_burnin |
if |
show_convergence |
logical (default |
trunc_plot |
integer (default = 10). For multidimensional parameters, the maximum number of components to be plotted. |
The function displays the traceplots of the MCMC algorithm.
The function is not available for the observational weights .
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) traceplot(out, params = c("mu", "sigma2"), trunc_plot = 2)
set.seed(123) y <- c(rnorm(40,0,0.3), rnorm(20,5,0.3)) g <- c(rep(1,30), rep(2, 30)) out <- sample_fiSAN(nrep = 500, burn = 200, y = y, group = g, nclus_start = 2, maxK = 20, maxL = 20, beta = 1) traceplot(out, params = c("mu", "sigma2"), trunc_plot = 2)