| Title: | Estimate Bayesian Multilevel Models for Compositional Data |
|---|---|
| Description: | Implement Bayesian multilevel modelling for compositional data. Compute multilevel compositional data and perform log-ratio transforms at between and within-person levels, fit Bayesian multilevel models for compositional predictors and outcomes, and run post-hoc analyses such as isotemporal substitution models. References: Le, Stanford, Dumuid, and Wiley (2025) <doi:10.1037/met0000750>, Le, Dumuid, Stanford, and Wiley (2025) <doi:10.1080/00273171.2025.2565598>. |
| Authors: | Flora Le [aut, cre] (ORCID: <https://orcid.org/0000-0003-0089-8167>), Joshua F. Wiley [aut] (ORCID: <https://orcid.org/0000-0002-0271-6702>) |
| Maintainer: | Flora Le <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 1.3.3 |
| Built: | 2026-05-26 18:11:37 UTC |
| Source: | https://github.com/florale/multilevelcoda |
complr object.Internal function only.
.meanvar.complr(x, weight = c("equal", "proportional"), parts = 1, ...).meanvar.complr(x, weight = c("equal", "proportional"), parts = 1, ...)
x |
An object of class |
weight |
A character value specifying the weight to use in calculation of the reference composition.
If |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
... |
generic argument, not in use. |
complr objectThis is a constructor function for a complr object.
It checks that the input list has the necessary structure and
components to be considered a complr object,
and if so, it assigns the class "complr" to it.
This allows for method dispatch on complr objects.
as.complr(x)as.complr(x)
x |
A list with elements |
A complr object.
Extract amounts and compositions in conventional formats as data.frames, matrices, or arrays.
## S3 method for class 'complr' as.data.frame(x, row.names = NULL, optional = FALSE, ...) ## S3 method for class 'complr' as.matrix(x, ...)## S3 method for class 'complr' as.data.frame(x, row.names = NULL, optional = FALSE, ...) ## S3 method for class 'complr' as.matrix(x, ...)
x |
An object of class |
row.names, optional
|
Unused and only added for consistency with
the |
... |
generic argument, not in use. |
diagnostics objectThis is a constructor function for a diagnostics object.
It checks that the input list has the necessary structure and
components to be considered a diagnostics object,
and if so, it assigns the class "diagnostics" to it.
This allows for method dispatch on diagnostics objects.
as.diagnostics(x)as.diagnostics(x)
x |
A list with elements |
A diagnostics object.
Compute Bayes factors from marginal likelihoods
## S3 method for class 'brmcoda' bayes_factor(x1, x2, ...)## S3 method for class 'brmcoda' bayes_factor(x1, x2, ...)
x1 |
A |
x2 |
Another |
... |
Other arguments passed to |
Fit a brm model with multilevel ILR coordinates
brmcoda(complr, formula, ...)brmcoda(complr, formula, ...)
complr |
A |
formula |
A object of class |
... |
Further arguments passed to |
A brmcoda with two elements
complr |
An object of class |
model |
An object of class |
if(requireNamespace("cmdstanr")){ x1 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # inspect variables before passing to brmcoda get_variables(x1) ## model with compositional predictor at between and within-person levels m1 <- brmcoda(complr = x1, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## model with compositional outcome m2 <- brmcoda(complr = x1, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ Stress + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## model with compositional predictor and outcome x2 <- complr(data = mcompd, parts = list(c("TST", "WAKE"), c("MVPA", "LPA", "SB")), total = list(c(480), c(960)), idvar = "ID", transform = "ilr") m3 <- brmcoda(complr = x2, formula = mvbind(z1_2, z2_2) ~ z1_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") }if(requireNamespace("cmdstanr")){ x1 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # inspect variables before passing to brmcoda get_variables(x1) ## model with compositional predictor at between and within-person levels m1 <- brmcoda(complr = x1, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## model with compositional outcome m2 <- brmcoda(complr = x1, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ Stress + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## model with compositional predictor and outcome x2 <- complr(data = mcompd, parts = list(c("TST", "WAKE"), c("MVPA", "LPA", "SB")), total = list(c(480), c(960)), idvar = "ID", transform = "ilr") m3 <- brmcoda(complr = x2, formula = mvbind(z1_2, z2_2) ~ z1_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") }
This function is an alias of substitution to estimates the difference in an outcome
when compositional parts are substituted for specific unit(s) at between level
using a single reference composition (e.g., compositional mean at sample level).
It is recommended that users run substitution model using the substitution function.
bsub( object, delta, ref = "grandmean", level = "between", summary = TRUE, aorg = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "equal", scale = c("response", "linear"), cores = NULL, ... )bsub( object, delta, ref = "grandmean", level = "between", summary = TRUE, aorg = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "equal", scale = c("response", "linear"), cores = NULL, ... )
object |
A fitted |
delta |
A integer, numeric value or vector indicating the amount of substituted change between compositional parts. |
ref |
Either a character value or vector or a dataset.
Can be |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
summary |
A logical value to obtain summary statistics instead of the raw values. Default is |
aorg |
Internal use. A logical value indicating whether the results should be average across reference grid. |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
base |
An optional base substitution.
Can be a |
type |
A character string to indicate the type of substitution.
If |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
scale |
Either |
cores |
Number of cores to use when executing the chains in parallel,
we recommend setting the |
... |
Further arguments passed to |
A list containing the results of multilevel compositional substitution model. The first six lists contain the results of the substitution estimation for a compositional part.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. |
Reference |
Either |
if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and between-person levels m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- bsub(object = m, base = psub, delta = 5) }if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and between-person levels m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- bsub(object = m, base = psub, delta = 5) }
This function is an alias of substitution to estimates the difference in an outcome
when compositional parts are substituted for specific unit(s) at between level
using cluster mean (e.g., compositional mean at individual level) as reference composition.
It is recommended that users run substitution model using the substitution function.
bsubmargin( object, delta, ref = "clustermean", level = "between", summary = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "proportional", scale = c("response", "linear"), cores = NULL, ... )bsubmargin( object, delta, ref = "clustermean", level = "between", summary = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "proportional", scale = c("response", "linear"), cores = NULL, ... )
object |
A fitted |
delta |
A integer, numeric value or vector indicating the amount of substituted change between compositional parts. |
ref |
Either a character value or vector or a dataset.
Can be |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
summary |
A logical value to obtain summary statistics instead of the raw values. Default is |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
base |
An optional base substitution.
Can be a |
type |
A character string to indicate the type of substitution.
If |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
scale |
Either |
cores |
Number of cores to use when executing the chains in parallel,
we recommend setting the |
... |
Further arguments passed to |
A list containing the results of multilevel compositional substitution model. The first six lists contain the results of the substitution estimation for a compositional part.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. |
Reference |
Either |
if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd[ID %in% 1:10, .SD[1:3], by = ID], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chains = 1, iter = 500, backend = "cmdstanr") subm <- bsubmargin(object = m, base = psub, delta = 5) }if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd[ID %in% 1:10, .SD[1:3], by = ID], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chains = 1, iter = 500, backend = "cmdstanr") subm <- bsubmargin(object = m, base = psub, delta = 5) }
Make a data set of all possible pairwise substitution of a composition which can be used as the base for substitution models.
build.base(parts, type = NULL)build.base(parts, type = NULL)
parts |
A character vector specifying the names of compositional variables to be used. |
type |
Either |
A data table of all possible pairwise substitution.
ps1 <- build.base(parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) print(ps1) ps2 <- build.base(c("WAKE", "MVPA", "LPA", "SB"), type = "one-to-all") print(ps2)ps1 <- build.base(parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) print(ps1) ps2 <- build.base(c("WAKE", "MVPA", "LPA", "SB"), type = "one-to-all") print(ps2)
substitution model.Build a dataset for fitted.brmcoda used in substitution model
build.rg(object, ref, at, parts, level, weight, fill = FALSE)build.rg(object, ref, at, parts, level, weight, fill = FALSE)
object |
A fitted |
ref |
Either a character value or vector or a dataset.
Can be |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
fill |
Logical value only relevant when |
A reference grid consisting of a combination of covariates in brmcoda
Build a default sequential binary partition for complr object.
The default sequential binary partition is a pivot balance that allows
the effect of this first balance coordinate to be interpreted as the change
in the prediction for the dependent variable
when that given part increases while all remaining parts decrease by a common proportion.
build.sbp(parts)build.sbp(parts)
parts |
A character vector specifying the names of compositional variables to be used. |
A matrix sequential binary partition.
sbp1 <- build.sbp(parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) print(sbp1) sbp2 <- build.sbp(c("WAKE", "MVPA", "LPA", "SB")) print(sbp2)sbp1 <- build.sbp(parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) print(sbp1) sbp2 <- build.sbp(c("WAKE", "MVPA", "LPA", "SB")) print(sbp2)
Extract model coefficients, which are the sum of population-level
effects and corresponding group-level effects
of the brmsfit object in a brmcoda object.
## S3 method for class 'brmcoda' coef(object, ...)## S3 method for class 'brmcoda' coef(object, ...)
object |
An object of class |
... |
Further arguments passed to |
A list of 3D arrays (one per grouping factor).
If summary is TRUE,
the 1st dimension contains the factor levels,
the 2nd dimension contains the summary statistics
(see posterior_summary), and
the 3rd dimension contains the group-level effects.
If summary is FALSE, the 1st dimension contains
the posterior draws, the 2nd dimension contains the factor levels,
and the 3rd dimension contains the group-level effects.
## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract population and group-level coefficients separately fixef(m) ranef(m) ## extract combined coefficients coef(m) }## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract population and group-level coefficients separately fixef(m) ranef(m) ## extract combined coefficients coef(m) }
Indices from a (dataset of) Multilevel Composition(s) (deprecated.)
compilr(...)compilr(...)
... |
arguments passed to |
A complr object with at least the following elements.
X |
A vector of class |
bX |
A vector of class |
wX |
A vector of class |
Z |
Log ratio transform of composition. |
bZ |
Log ratio transform of between-person composition. |
wZ |
Log ratio transform of within-person composition. |
data |
The user's dataset or imputed dataset if the iiut data contains zeros. |
transform |
Type of transform applied on compositional data. |
parts |
Names of compositional variables. |
idvar |
Name of the variable containing IDs. |
total |
Total amount to which the compositions is closed. |
Compute sets of compositions and log ratio transformation for multilevel compositional data
complr(data, parts, sbp = NULL, total = 1, idvar = NULL, transform = "ilr")complr(data, parts, sbp = NULL, total = 1, idvar = NULL, transform = "ilr")
data |
A |
parts |
A character vector specifying the names of compositional variables to be used. For multiple compositions, a list of character vectors. |
sbp |
A signary matrix indicating sequential binary partition when |
total |
A numeric value of the total amount to which the compositions should be closed.
For multiple compositions, a list of numeric values.
Default is |
idvar |
Only for multilevel data, a character string specifying the name of the variable containing participants IDs. |
transform |
A character value naming a log ratio transformation to be applied on compositional data.
Can be either |
The ilr-transform maps the D-part compositional data from the simplex into non-overlapping subgroups in the (D-1)-dimension Euclidean space isometrically by using an orthonormal basis, thereby preserving the compositional properties and yielding a full-rank covariance matrix. ilr transformation should be preferred. However, the alr and clr are alternatives. The alr-transform maps a D-part composition in the Aitchison-simplex non-isometrically to a (D-1)-dimension Euclidian vectors, commonly treating the last part as the common denominator of the others. alr transformation does not rely on distance which breaks the constraint of compositional data. clr-transform maps a D-part composition in the Aitchison-simplex isometrically to a D-dimensional Euclidian vector subspace. clr transformation is not injetive, resulting in singular covariance matrices.
A complr object with at least the following elements.
X |
A vector of class |
bX |
A vector of class |
wX |
A vector of class |
Z |
Log ratio transform of composition. |
bZ |
Log ratio transform of between-person composition. |
wZ |
Log ratio transform of within-person composition. |
data |
The user's dataset or imputed dataset if the iiut data contains zeros. |
transform |
Type of transform applied on compositional data. |
parts |
Names of compositional variables. |
idvar |
Name of the variable containing IDs. |
total |
Total amount to which the compositions is closed. |
x1 <- complr(data = mcompd, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) str(x1) x2 <- complr(data = mcompd, parts = list(c("TST", "WAKE"), c("MVPA", "LPA", "SB")), total = list(c(480), c(960)), idvar = "ID", transform = "ilr") str(x2) x3 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", transform = "ilr") str(x3) x_wide <- complr(data = mcompd[!duplicated(ID)], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) str(x_wide)x1 <- complr(data = mcompd, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) str(x1) x2 <- complr(data = mcompd, parts = list(c("TST", "WAKE"), c("MVPA", "LPA", "SB")), total = list(c(480), c(960)), idvar = "ID", transform = "ilr") str(x2) x3 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", transform = "ilr") str(x3) x_wide <- complr(data = mcompd[!duplicated(ID)], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) str(x_wide)
Create generator specifications for gamma and beta variables.
gen_gamma( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, ..., scale_fixed_intercept = NULL, random_cov = NULL ) gen_beta( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, ..., scale_fixed_intercept = NULL, random_cov = NULL )gen_gamma( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, ..., scale_fixed_intercept = NULL, random_cov = NULL ) gen_beta( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, ..., scale_fixed_intercept = NULL, random_cov = NULL )
vars |
Character scalar naming the generated variable. |
level |
Simulation level. |
fixed_intercept |
Link-scale intercept. Gamma uses the log link and beta uses the logit link. |
... |
Removed direct distribution parameters are rejected. |
scale_fixed_intercept |
Log shape intercept for gamma variables or log precision intercept for beta variables. |
random_cov |
Group-level random-intercept covariance for multilevel generators. |
An mlsim_generator_spec object for use in simulate_data().
Other predictor generators:
count-generators,
gen_categorical(),
gen_custom(),
gen_mvn(),
gen_outcome(),
gen_template()
sim <- simulate_data( n = 5, seed = 5, generators = list( positive = gen_gamma( "positive", fixed_intercept = log(1.5), scale_fixed_intercept = log(2) ), proportion = gen_beta( "proportion", fixed_intercept = stats::qlogis(0.4), scale_fixed_intercept = log(10) ) ) ) sim$datasim <- simulate_data( n = 5, seed = 5, generators = list( positive = gen_gamma( "positive", fixed_intercept = log(1.5), scale_fixed_intercept = log(2) ), proportion = gen_beta( "proportion", fixed_intercept = stats::qlogis(0.4), scale_fixed_intercept = log(10) ) ) ) sim$data
Create generator specifications for binomial, Poisson, and negative binomial count variables.
gen_binomial( vars, level = c("single", "level2", "multilevel"), size = NULL, fixed_intercept = NULL, random_cov = NULL ) gen_poisson( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, random_cov = NULL ) gen_negbin( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, ..., scale_fixed_intercept = NULL, random_cov = NULL )gen_binomial( vars, level = c("single", "level2", "multilevel"), size = NULL, fixed_intercept = NULL, random_cov = NULL ) gen_poisson( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, random_cov = NULL ) gen_negbin( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, ..., scale_fixed_intercept = NULL, random_cov = NULL )
vars |
Character scalar naming the generated variable. |
level |
Simulation level. |
size |
Binomial trial size. May be a scalar, vector, function of |
fixed_intercept |
Link-scale intercept. Binomial uses the logit link; Poisson and negative binomial use the log link. |
random_cov |
Group-level random-intercept covariance for multilevel generators. |
... |
Removed direct distribution parameters are rejected. |
scale_fixed_intercept |
Log negative-binomial size intercept. |
Count generators use link-scale intercepts at every level. Negative-binomial
size is exp(scale_fixed_intercept).
An mlsim_generator_spec object for use in simulate_data().
Other predictor generators:
continuous-generators,
gen_categorical(),
gen_custom(),
gen_mvn(),
gen_outcome(),
gen_template()
sim <- simulate_data( n = 5, seed = 4, generators = list( events = gen_poisson("events", fixed_intercept = log(2)), successes = gen_binomial( "successes", size = 4, fixed_intercept = stats::qlogis(0.5) ), overdispersed = gen_negbin( "overdispersed", fixed_intercept = log(2), scale_fixed_intercept = log(3) ) ) ) sim$datasim <- simulate_data( n = 5, seed = 4, generators = list( events = gen_poisson("events", fixed_intercept = log(2)), successes = gen_binomial( "successes", size = 4, fixed_intercept = stats::qlogis(0.5) ), overdispersed = gen_negbin( "overdispersed", fixed_intercept = log(2), scale_fixed_intercept = log(3) ) ) ) sim$data
brmsfit Models in brmcoda
Extract Diagnostic Quantities from brmsfit Models in brmcoda
## S3 method for class 'brmcoda' log_posterior(object, ...) ## S3 method for class 'brmcoda' nuts_params(object, ...) ## S3 method for class 'brmcoda' rhat(x, ...) ## S3 method for class 'brmcoda' neff_ratio(object, ...)## S3 method for class 'brmcoda' log_posterior(object, ...) ## S3 method for class 'brmcoda' nuts_params(object, ...) ## S3 method for class 'brmcoda' rhat(x, ...) ## S3 method for class 'brmcoda' neff_ratio(object, ...)
... |
Arguments passed to individual methods (if applicable). |
x, object
|
A |
The exact form of the output depends on the method.
This is a generic function for diagnostics methods in multilevelcoda. See
diagnostics.complr for the method for complr objects.
diagnostics(x, ...)diagnostics(x, ...)
x |
An object to calculate diagnostics, primarily around extreme values and assumed distributions. |
... |
Additional arguments passed to methods. |
diagnostics class object
complr coordinatesUses robust minimum covariance determinant estimates to calculate squared
Mahalanobis distances for the total, between, or within log-ratio
coordinates stored in a complr object.
This can be used to identify extreme values (outliers).
## S3 method for class 'complr' diagnostics( x, level = c("total", "between", "within"), parts = 1, ev.perc = 0.001, extremevalues = c("theoretical", "empirical"), ... )## S3 method for class 'complr' diagnostics( x, level = c("total", "between", "within"), parts = 1, ev.perc = 0.001, extremevalues = c("theoretical", "empirical"), ... )
x |
A |
level |
A character string indicating which coordinates to diagnose:
|
parts |
Optional character vector or integer specifying which set of
compositional parts should be used. Defaults to the first composition in the
|
ev.perc |
Proportion in the upper tail used to flag extreme values.
Defaults to |
extremevalues |
Character string indicating whether extreme values
should be flagged using a |
... |
Additional arguments passed to |
A diagnostics object with the raw composition matrix in
x, a data.table of robust distances in distance, the
extreme-value cutoff in cutoff, the requested upper-tail proportion
in ev.perc, the cutoff type in extremevalues, and the
diagnosed coordinate level in levels. The distance element
includes an is_extremevalue column indicating whether each fitted
observation is flagged as an extreme value. For level = "between",
diagnostics are fitted using one observation per idvar.
data(mcompd) data(sbp) ids <- unique(mcompd$ID)[1:20] cilr <- complr( data = mcompd[ID %in% ids, .SD[1:3], by = ID], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440 ) # One diagnostic object per coordinate level total_diag <- diagnostics(cilr, level = "total") between_diag <- diagnostics(cilr, level = "between") within_diag <- diagnostics(cilr, level = "within") # Use an empirical cutoff and a larger tail proportion empirical_diag <- diagnostics( cilr, level = "between", ev.perc = .05, extremevalues = "empirical" ) is.diagnostics(between_diag) head(between_diag$distance)data(mcompd) data(sbp) ids <- unique(mcompd$ID)[1:20] cilr <- complr( data = mcompd[ID %in% ids, .SD[1:3], by = ID], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440 ) # One diagnostic object per coordinate level total_diag <- diagnostics(cilr, level = "total") between_diag <- diagnostics(cilr, level = "between") within_diag <- diagnostics(cilr, level = "within") # Use an empirical cutoff and a larger tail proportion empirical_diag <- diagnostics( cilr, level = "between", ev.perc = .05, extremevalues = "empirical" ) is.diagnostics(between_diag) head(between_diag$distance)
brmcoda objectsIndex brmcoda objects
## S3 method for class 'brmcoda' variables(x, ...) ## S3 method for class 'brmcoda' nvariables(x, ...) ## S3 method for class 'brmcoda' niterations(x) ## S3 method for class 'brmcoda' nchains(x) ## S3 method for class 'brmcoda' ndraws(x)## S3 method for class 'brmcoda' variables(x, ...) ## S3 method for class 'brmcoda' nvariables(x, ...) ## S3 method for class 'brmcoda' niterations(x) ## S3 method for class 'brmcoda' nchains(x) ## S3 method for class 'brmcoda' ndraws(x)
x |
An object of class |
... |
Arguments passed to individual methods. |
Compute posterior draws of the expected value of the posterior predictive
distribution of a brmsfit model in the brmcoda object.
Can be performed for the data used to fit the model (posterior
predictive checks) or for new data. By definition, these predictions have
smaller variance than the posterior predictions performed by the
predict.brmcoda method. This is because only the
uncertainty in the expected value of the posterior predictive distribution is
incorporated in the draws computed by fitted while the
residual error is ignored there. However, the estimated means of both methods
averaged across draws should be very similar.
## S3 method for class 'brmcoda' fitted(object, scale = c("linear", "response"), parts = 1, summary = TRUE, ...)## S3 method for class 'brmcoda' fitted(object, scale = c("linear", "response"), parts = 1, summary = TRUE, ...)
object |
An object of class |
scale |
Specifically for models with compositional responses,
either |
parts |
Only for models with compositional response
A optional character string specifying names of compositional parts that make up the response in |
summary |
Should summary statistics be returned instead of the raw values? Default is |
... |
Further arguments passed to |
An array of predicted mean response values.
If summary = FALSE the output resembles those of
posterior_epred.brmsfit.
If summary = TRUE the output depends on the family: For categorical
and ordinal families, the output is an N x E x C array, where N is the
number of observations, E is the number of summary statistics, and C is the
number of categories. For all other families, the output is an N x E
matrix. The number of summary statistics E is equal to 2 +
length(probs): The Estimate column contains point estimates (either
mean or median depending on argument robust), while the
Est.Error column contains uncertainty estimates (either standard
deviation or median absolute deviation depending on argument
robust). The remaining columns starting with Q contain
quantile estimates as specified via argument probs.
In multivariate models, an additional dimension is added to the output which indexes along the different response variables.
## fit a model if(requireNamespace("cmdstanr")){ ## compute composition and ilr coordinates x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) ## fit a model m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## compute expected predictions epred <- fitted(m1) head(epred) ## fit a model with compositional outcome m2 <- brmcoda(complr = x, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ Stress + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## expected predictions on compositional scale epredcomp <- fitted(m2, scale = "response") head(epredcomp) }## fit a model if(requireNamespace("cmdstanr")){ ## compute composition and ilr coordinates x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) ## fit a model m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## compute expected predictions epred <- fitted(m1) head(epred) ## fit a model with compositional outcome m2 <- brmcoda(complr = x, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ Stress + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## expected predictions on compositional scale epredcomp <- fitted(m2, scale = "response") head(epredcomp) }
Extract the population-level ('fixed') effects
from the brmsfit object in a brmcoda object.
## S3 method for class 'brmcoda' fixef(object, ...)## S3 method for class 'brmcoda' fixef(object, ...)
object |
An object of class |
... |
Further arguments passed to |
If summary is TRUE, a matrix returned
by posterior_summary for the population-level effects.
If summary is FALSE, a matrix with one row per
posterior draw and one column per population-level effect.
## fit a model if(requireNamespace("cmdstanr")){ ## fit a model m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract population-Level coefficients fixef(m) }## fit a model if(requireNamespace("cmdstanr")){ ## fit a model m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract population-Level coefficients fixef(m) }
Create a generator specification for binary or multicategory categorical variables.
gen_categorical( vars, level = c("single", "level2", "multilevel"), categories = NULL, fixed_intercept = NULL, random_cov = NULL, reference = NULL, output = c("factor", "character", "integer"), ordered = FALSE )gen_categorical( vars, level = c("single", "level2", "multilevel"), categories = NULL, fixed_intercept = NULL, random_cov = NULL, reference = NULL, output = c("factor", "character", "integer"), ordered = FALSE )
vars |
Character scalar naming the generated variable. |
level |
Simulation level. |
categories |
Vector of category values. Defaults to |
fixed_intercept |
Baseline-category logits. For |
random_cov |
Multilevel covariance matrix for baseline-category random intercepts. |
reference |
Reference category for the baseline-category logit model. Defaults to the first category. |
output |
Output type: |
ordered |
Logical; when |
An mlsim_generator_spec object for use in simulate_data().
Other predictor generators:
continuous-generators,
count-generators,
gen_custom(),
gen_mvn(),
gen_outcome(),
gen_template()
sim <- simulate_data( n = 6, seed = 3, generators = list( arm = gen_categorical( "arm", categories = c("control", "treatment"), fixed_intercept = stats::qlogis(0.5) ) ) ) sim$datasim <- simulate_data( n = 6, seed = 3, generators = list( arm = gen_categorical( "arm", categories = c("control", "treatment"), fixed_intercept = stats::qlogis(0.5) ) ) ) sim$data
Wrap a custom generator function so it can participate in simulate_data().
gen_custom( vars, generator, level = c("single", "level2", "multilevel"), ..., metadata = list() )gen_custom( vars, generator, level = c("single", "level2", "multilevel"), ..., metadata = list() )
vars |
Character vector naming the generated variables. |
generator |
Function called as
|
level |
Simulation level. A level-2 custom generator may return either one row per group or one row per simulated observation. |
... |
Additional arguments passed to |
metadata |
List of wrapper metadata stored on the generator specification. |
An mlsim_generator_spec object for use in simulate_data().
Other predictor generators:
continuous-generators,
count-generators,
gen_categorical(),
gen_mvn(),
gen_outcome(),
gen_template()
constant_generator <- function(context, vars, level, value = 1) { list(data = data.frame(value = rep(value, context$n_rows)), names = vars) } sim <- simulate_data( n = 3, generators = list(x = gen_custom("x", constant_generator, value = 7)) ) sim$dataconstant_generator <- function(context, vars, level, value = 1) { list(data = data.frame(value = rep(value, context$n_rows)), names = vars) } sim <- simulate_data( n = 3, generators = list(x = gen_custom("x", constant_generator, value = 7)) ) sim$data
Create a generator specification for univariate or multivariate Gaussian variables, optionally transformed from ILR coordinates to compositional parts.
gen_mvn( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, residual_cov = NULL, random_cov = NULL, ..., scale_fixed_intercept = NULL, residual_cor = NULL, compositional = FALSE, parts = NULL, total = 1, keep_ilr = TRUE, sbp = NULL )gen_mvn( vars, level = c("single", "level2", "multilevel"), fixed_intercept = NULL, residual_cov = NULL, random_cov = NULL, ..., scale_fixed_intercept = NULL, residual_cor = NULL, compositional = FALSE, parts = NULL, total = 1, keep_ilr = TRUE, sbp = NULL )
vars |
Character vector naming the generated variables. For compositional generators these are ILR coordinate names. |
level |
Simulation level. |
fixed_intercept |
Identity-scale location intercept vector. |
residual_cov |
Residual covariance matrix for Gaussian generators without a row-specific scale model. For univariate generators, it may be a scalar residual variance. |
random_cov |
Group-level random-intercept covariance matrix for
multilevel generators. When |
... |
Removed direct distribution parameters are rejected. |
scale_fixed_intercept |
Optional log residual standard-deviation intercepts. |
residual_cor |
Residual correlation matrix used with
|
compositional |
Logical; if |
parts |
Character vector naming the composition parts. Must have
|
total |
Positive scalar total for closed compositions. |
keep_ilr |
Logical; if |
sbp |
Optional sequential binary partition matrix. Columns name parts;
rows define ILR balances using |
Compositional MVN generators simulate ILR coordinates first, then use the
SBP basis to transform the coordinates into positive composition parts that
sum to total.
An mlsim_generator_spec object for use in simulate_data().
Other predictor generators:
continuous-generators,
count-generators,
gen_categorical(),
gen_custom(),
gen_outcome(),
gen_template()
sim <- simulate_data( n = 4, seed = 2, generators = list( x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1), z = gen_mvn( c("z1", "z2"), fixed_intercept = c(0, 0), residual_cov = diag(2), compositional = TRUE, parts = c("sleep", "activity", "sedentary") ) ) ) sim$data rowSums(as.matrix(sim$data[, c("sleep", "activity", "sedentary"), with = FALSE]))sim <- simulate_data( n = 4, seed = 2, generators = list( x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1), z = gen_mvn( c("z1", "z2"), fixed_intercept = c(0, 0), residual_cov = diag(2), compositional = TRUE, parts = c("sleep", "activity", "sedentary") ) ) ) sim$data rowSums(as.matrix(sim$data[, c("sleep", "activity", "sedentary"), with = FALSE]))
Create an outcome generator for simulate_data(). Outcomes are simulated on
a Gaussian scale, optionally as ILR coordinates that are back-transformed to
strictly positive compositions. If ar1() appears in the location formula,
it defines a residual VAR(1) process, not an observed lagged-outcome
predictor.
gen_outcome( formula, scale, params, burnin, composition = list(parts = NULL, total = 24, sbp = NULL, keep_ilr = TRUE), ar_stability = c("resample", "shrink", "error"), max_stability_attempts = 1000, shrink_target_radius = 0.98 )gen_outcome( formula, scale, params, burnin, composition = list(parts = NULL, total = 24, sbp = NULL, keep_ilr = TRUE), ar_stability = c("resample", "shrink", "error"), max_stability_attempts = 1000, shrink_target_radius = 0.98 )
formula |
Outcome location formula. The left-hand side may be a single
outcome ( |
scale |
Required scale formula with |
params |
List of true parameters. Required components are
|
burnin |
Fixed non-negative integer burn-in length used when AR is active. Ignored when no AR terms are present. |
composition |
List controlling optional ILR back-transformation. Use
|
ar_stability |
Handling for unstable AR matrices: |
max_stability_attempts |
Positive integer maximum number of resampling or shrinkage attempts. |
shrink_target_radius |
Target spectral radius used by
|
An mlsim_generator_spec object for use in simulate_data().
Other predictor generators:
continuous-generators,
count-generators,
gen_categorical(),
gen_custom(),
gen_mvn(),
gen_template()
beta_location <- matrix( c(0, 0, 0.2, -0.1), nrow = 2, dimnames = list(c("(Intercept)", "treatmenttreatment"), c("ilr1", "ilr2")) ) beta_scale <- matrix( log(c(0.4, 0.35)), nrow = 1, dimnames = list("(Intercept)", c("ilr1", "ilr2")) ) beta_ar <- array( c(0.25, 0.02, -0.01, 0.2), dim = c(1, 2, 2), dimnames = list("ar1()", c("ilr1", "ilr2"), c("ilr1", "ilr2")) ) corr <- diag(2) dimnames(corr) <- list(c("ilr1", "ilr2"), c("ilr1", "ilr2")) sim <- simulate_data( n_groups = 4, n_per_group = 4, group_id = "ID", time_id = "day", seed = 1, generators = list( treatment = gen_categorical( "treatment", level = "level2", categories = c("control", "treatment"), fixed_intercept = stats::qlogis(0.5) ), outcome = gen_outcome( mvbind(ilr1, ilr2) ~ treatment + ar1(), scale = sigma ~ 1, params = list( location = list(beta = beta_location), scale = list(beta = beta_scale, correlation = corr), ar = list(beta = beta_ar) ), burnin = 10, composition = list(parts = c("sleep", "active", "sedentary"), total = 24) ) ) ) head(sim$data)beta_location <- matrix( c(0, 0, 0.2, -0.1), nrow = 2, dimnames = list(c("(Intercept)", "treatmenttreatment"), c("ilr1", "ilr2")) ) beta_scale <- matrix( log(c(0.4, 0.35)), nrow = 1, dimnames = list("(Intercept)", c("ilr1", "ilr2")) ) beta_ar <- array( c(0.25, 0.02, -0.01, 0.2), dim = c(1, 2, 2), dimnames = list("ar1()", c("ilr1", "ilr2"), c("ilr1", "ilr2")) ) corr <- diag(2) dimnames(corr) <- list(c("ilr1", "ilr2"), c("ilr1", "ilr2")) sim <- simulate_data( n_groups = 4, n_per_group = 4, group_id = "ID", time_id = "day", seed = 1, generators = list( treatment = gen_categorical( "treatment", level = "level2", categories = c("control", "treatment"), fixed_intercept = stats::qlogis(0.5) ), outcome = gen_outcome( mvbind(ilr1, ilr2) ~ treatment + ar1(), scale = sigma ~ 1, params = list( location = list(beta = beta_location), scale = list(beta = beta_scale, correlation = corr), ar = list(beta = beta_ar) ), burnin = 10, composition = list(parts = c("sleep", "active", "sedentary"), total = 24) ) ) ) head(sim$data)
gen_outcome()
Build a generator that parses a gen_outcome() specification and records a
complete parameter template without simulating outcome values. Use this
inside simulate_data() after any generators that define predictors used by
the outcome formula, especially predictors referenced by between() or
within().
gen_template( formula, scale, burnin, composition = list(parts = NULL, total = 24, sbp = NULL, keep_ilr = TRUE), ar_stability = c("resample", "shrink", "error"), max_stability_attempts = 1000, shrink_target_radius = 0.98 )gen_template( formula, scale, burnin, composition = list(parts = NULL, total = 24, sbp = NULL, keep_ilr = TRUE), ar_stability = c("resample", "shrink", "error"), max_stability_attempts = 1000, shrink_target_radius = 0.98 )
formula |
Outcome location formula. The left-hand side may be a single
outcome ( |
scale |
Required scale formula with |
burnin |
Fixed non-negative integer burn-in length used when AR is active. Ignored when no AR terms are present. |
composition |
List controlling optional ILR back-transformation. Use
|
ar_stability |
Handling for unstable AR matrices: |
max_stability_attempts |
Positive integer maximum number of resampling or shrinkage attempts. |
shrink_target_radius |
Target spectral radius used by
|
The generated template is stored at
sim$generator_metadata[[name]]$params, where name is the name given to
this generator in the generators list. The template must be created with
the same simulation design, previous generators, factor levels, formula,
scale formula, and composition settings that will be used for the later
gen_outcome() call.
Template values are initialized to zero for regression, AR, and group-level
covariance parameters, and to identity for residual ILR correlations. The
object is ready to edit and pass as params to gen_outcome().
An mlsim_generator_spec object for use in simulate_data(). It
emits no data columns and stores the parameter template in generator
metadata.
Other predictor generators:
continuous-generators,
count-generators,
gen_categorical(),
gen_custom(),
gen_mvn(),
gen_outcome()
template_sim <- simulate_data( n_groups = 3, n_per_group = 2, group_id = "ID", seed = 1, generators = list( treatment = gen_categorical( "treatment", level = "level2", categories = c("control", "treatment"), fixed_intercept = stats::qlogis(0.5) ), outcome_template = gen_template( mvbind(ilr1, ilr2) ~ treatment, scale = sigma ~ 1, burnin = 0, composition = list(parts = c("sleep", "active", "sedentary"), total = 24) ) ) ) params <- template_sim$generator_metadata$outcome_template$params params$location$beta["treatmenttreatment", "ilr1"] <- 0.2template_sim <- simulate_data( n_groups = 3, n_per_group = 2, group_id = "ID", seed = 1, generators = list( treatment = gen_categorical( "treatment", level = "level2", categories = c("control", "treatment"), fixed_intercept = stats::qlogis(0.5) ), outcome_template = gen_template( mvbind(ilr1, ilr2) ~ treatment, scale = sigma ~ 1, burnin = 0, composition = list(parts = c("sleep", "active", "sedentary"), total = 24) ) ) ) params <- template_sim$generator_metadata$outcome_template$params params$location$beta["treatmenttreatment", "ilr1"] <- 0.2
complr object.Extract Sequential Binary Partition from a complr object.
get_sbp(object)get_sbp(object)
object |
A |
Generic function to extract variable names from a supported object.
get_variables(object) ## S3 method for class 'complr' get_variables(object) ## S3 method for class 'brmcoda' get_variables(object)get_variables(object) ## S3 method for class 'complr' get_variables(object) ## S3 method for class 'brmcoda' get_variables(object)
object |
A |
A list of variable names.
# For a complr object: # get_variables(complr_object) # For a brmcoda object: # get_variables(brmcoda_object)# For a complr object: # get_variables(complr_object) # For a brmcoda object: # get_variables(brmcoda_object)
Functions used only internally to estimate substitution model
brmcoda objectChecks if argument is a brmcoda object
is.brmcoda(x)is.brmcoda(x)
x |
An object of class |
complr objectChecks if argument is a complr object
is.complr(x)is.complr(x)
x |
An object of class |
diagnostics objectChecks if argument is a diagnostics object
is.diagnostics(x)is.diagnostics(x)
x |
An object of class |
substitution objectChecks if argument is a substitution object
is.substitution(x)is.substitution(x)
x |
An object of class |
Provide an interface to shinystan for models fitted with brms
## S3 method for class 'brmcoda' launch_shinystan(object, ...)## S3 method for class 'brmcoda' launch_shinystan(object, ...)
object |
A fitted model object of class |
... |
Optional arguments to pass to
|
An S4 shinystan object
Perform approximate leave-one-out cross-validation based
on the posterior likelihood using the loo package.
For more details see loo.
## S3 method for class 'brmcoda' loo(x, ...)## S3 method for class 'brmcoda' loo(x, ...)
x |
A |
... |
More |
If just one object is provided, an object of class loo.
If multiple objects are provided, an object of class loolist.
Call MCMC plotting functions implemented in the bayesplot package.
## S3 method for class 'brmcoda' mcmc_plot(object, ...)## S3 method for class 'brmcoda' mcmc_plot(object, ...)
object |
A |
... |
Further arguments passed to |
A ggplot object
that can be further customized using the ggplot2 package.
## Not run: cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500) mcmc_plot(fit) ## End(Not run)## Not run: cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500) mcmc_plot(fit) ## End(Not run)
A simulated dataset containing multiple days of compositional data.
mcompdmcompd
A data table containing 10 variables.
A unique identifier for each individual
Recurrence time of repeated measures by individual
Self report stress measures on a 0 to 10 scale — repeated measure
Total Sleep Time (minutes) — repeated measure
Wake time while in bed, trying to sleep (minutes) — repeated measure
Moderate to Vigorous Physical Activity (minutes) — repeated measure
Light Physical Activity (minutes) — repeated measure
Sedentary Behavior (minutes) — repeated measure
Age in years — baseline measure only
Binary: whether participants identified as female (1) or not (0) — baseline measure only
complr object.Mean amounts and mean compositions presented in a complr object.
## S3 method for class 'complr' mean(x, weight = c("equal", "proportional"), parts = 1, ...)## S3 method for class 'complr' mean(x, weight = c("equal", "proportional"), parts = 1, ...)
x |
An object of class |
weight |
A character value specifying the weight to use in calculation of the reference composition.
If |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
... |
generic argument, not in use. |
x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") mean(x)x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") mean(x)
brmcoda objectExtracting the Model Frame from a Formula or Fit from brmcoda object
## S3 method for class 'brmcoda' model.frame(formula, ...)## S3 method for class 'brmcoda' model.frame(formula, ...)
formula |
A |
... |
Further arguments to be passed to methods. |
Provide the full results for a simulation study testing the performance of multilevelcoda
multilevelcoda_sim()multilevelcoda_sim()
An S4 shiny object
brmcoda objectExtract Number of Observations from brmcoda object
## S3 method for class 'brmcoda' nobs(object, ...)## S3 method for class 'brmcoda' nobs(object, ...)
object |
A |
... |
Further arguments to be passed to methods. |
brmcoda's brmsfit objectA pairs
method that is customized for MCMC output.
## S3 method for class 'brmcoda' pairs(x, ...)## S3 method for class 'brmcoda' pairs(x, ...)
x |
A |
... |
Further arguments passed to |
## Not run: cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500) pairs(fit) ## End(Not run)## Not run: cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500) pairs(fit) ## End(Not run)
This function estimates pivot balance coordinates for each compositional part by
either "rotate" the sequential binary partition using the same brmcoda object
or "refit" the brmcoda object.
pivot_coord( object, summary = TRUE, method = c("rotate", "refit"), parts = 1, ... )pivot_coord( object, summary = TRUE, method = c("rotate", "refit"), parts = 1, ... )
object |
An object of class |
summary |
Should summary statistics be returned instead of the raw values? Default is |
method |
A character string.
Should the pivot balance coordinates be estimated by |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
... |
Further arguments passed to |
Estimated pivot balance coordinates representing the effect of increasing one compositional part relative to the remaining compositional parts.
if(requireNamespace("cmdstanr")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # inspects ILRs before passing to brmcoda names(x$between_logratio) names(x$within_logratio) names(x$logratio) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pivot_coord <- pivot_coord(m) summary(m_pivot_coord) }if(requireNamespace("cmdstanr")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # inspects ILRs before passing to brmcoda names(x$between_logratio) names(x$within_logratio) names(x$logratio) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pivot_coord <- pivot_coord(m) summary(m_pivot_coord) }
This function is an alias of pivot_coord to estimates the
pivot balance coordinates by "refit" the brmcoda object.
pivot_coord_refit(object, summary = TRUE, parts = 1, ...)pivot_coord_refit(object, summary = TRUE, parts = 1, ...)
object |
An object of class |
summary |
Should summary statistics be returned instead of the raw values? Default is |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
... |
Further arguments passed to |
Estimated pivot balance coordinates representing the effect of increasing one compositional part relative to the remaining compositional parts.
if(requireNamespace("cmdstanr", "brms")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pivot_coord_refit <- pivot_coord_refit(m) summary(m_pivot_coord_refit) m_pivot_coord_raw <- pivot_coord_refit(m, summary = FALSE) lapply(m_pivot_coord_raw$output, brms::posterior_summary) }if(requireNamespace("cmdstanr", "brms")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pivot_coord_refit <- pivot_coord_refit(m) summary(m_pivot_coord_refit) m_pivot_coord_raw <- pivot_coord_refit(m, summary = FALSE) lapply(m_pivot_coord_raw$output, brms::posterior_summary) }
This function is an alias of pivot_coord to estimates the
pivot balance coordinates by "rotate" the sequential binary partition on the
same brmcoda object.
pivot_coord_rotate(object, summary = TRUE, parts = 1, ...)pivot_coord_rotate(object, summary = TRUE, parts = 1, ...)
object |
An object of class |
summary |
Should summary statistics be returned instead of the raw values? Default is |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
... |
Further arguments passed to |
Estimated pivot balance coordinates representing the effect of increasing one compositional part relative to the remaining compositional parts.
if(requireNamespace("cmdstanr")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pivot_coord_rotate <- pivot_coord_rotate(m) summary(m_pivot_coord_rotate) m_pivot_coord_raw <- pivot_coord_rotate(m, summary = FALSE) lapply(m_pivot_coord_raw$output, brms::posterior_summary) }if(requireNamespace("cmdstanr")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pivot_coord_rotate <- pivot_coord_rotate(m) summary(m_pivot_coord_rotate) m_pivot_coord_raw <- pivot_coord_rotate(m, summary = FALSE) lapply(m_pivot_coord_raw$output, brms::posterior_summary) }
Make a plot of brmcoda model results.
## S3 method for class 'brmcoda' plot(x, ...)## S3 method for class 'brmcoda' plot(x, ...)
x |
A |
... |
Further arguments passed to |
An invisible list of
gtable objects.
## Not run: cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500) plot(fit) ## End(Not run)## Not run: cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500) plot(fit) ## End(Not run)
Make a scatterplot matrix of diagnostics results from a
complr object, with density and rug plots on the diagonal.
## S3 method for class 'diagnostics' plot(x, transform = c("clr", "raw"), ...)## S3 method for class 'diagnostics' plot(x, transform = c("clr", "raw"), ...)
x |
A |
transform |
Character string indicating whether to plot the raw
composition values in |
... |
Currently unused. |
A ggplot graph object showing pairwise scatterplots for each composition part, with point colour indicating extreme value status. Diagonal panels show marginal densities and rug marks for observations flagged as extreme values.
data(mcompd) data(sbp) ids <- unique(mcompd$ID)[1:20] cilr <- complr( data = mcompd[ID %in% ids, .SD[1:3], by = ID], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440 ) between_diag <- diagnostics(cilr, level = "between", ev.perc = .05) # Plot centered logratio transformed composition values plot(between_diag) # Plot on the raw composition scale plot(between_diag, transform = "raw")data(mcompd) data(sbp) ids <- unique(mcompd$ID)[1:20] cilr <- complr( data = mcompd[ID %in% ids, .SD[1:3], by = ID], sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440 ) between_diag <- diagnostics(cilr, level = "between", ev.perc = .05) # Plot centered logratio transformed composition values plot(between_diag) # Plot on the raw composition scale plot(between_diag, transform = "raw")
Make a plot of substitution model results.
## S3 method for class 'substitution' plot(x, to, ref, level, ...)## S3 method for class 'substitution' plot(x, to, ref, level, ...)
x |
A |
to |
An optional character value or vector specifying the names of the compositional parts that were reallocated to in the model. |
ref |
A character value of (( |
level |
An optional character value of ( |
... |
Further components to the plot, followed by a plus sign (+). |
A ggplot graph object showing the estimated difference in outcome when each pair of compositional variables are substituted for a specific time.
brmcoda ObjectsPerform posterior predictive checks with the help of the bayesplot package.
## S3 method for class 'brmcoda' pp_check( object, type = "dens_overlay", ndraws = NULL, prefix = c("ppc", "ppd"), newdata = NULL, draw_ids = NULL, nsamples = NULL, subset = NULL, scale = c("linear", "response"), parts = NULL, ... )## S3 method for class 'brmcoda' pp_check( object, type = "dens_overlay", ndraws = NULL, prefix = c("ppc", "ppd"), newdata = NULL, draw_ids = NULL, nsamples = NULL, subset = NULL, scale = c("linear", "response"), parts = NULL, ... )
object |
An object of class |
type |
Type of the ppc plot as given by a character string.
See |
ndraws |
Positive integer indicating how many
posterior draws should be used.
If |
prefix |
The prefix of the bayesplot function to be applied. Either '"ppc"' (posterior predictive check; the default) or '"ppd"' (posterior predictive distribution), the latter being the same as the former except that the observed data is not shown for '"ppd"'. |
newdata |
An optional data.frame for which to evaluate predictions. If
|
draw_ids |
An integer vector specifying the posterior draws to be used.
If |
nsamples |
Deprecated alias of |
subset |
Deprecated alias of |
scale |
Specifically for models with compositional responses,
either |
parts |
Optional names or indices of compositional response parts to
include when |
... |
Further arguments passed to |
if(requireNamespace("cmdstanr")){ ## fit a model x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## posterior predictive checks bayesplot::pp_check(m1, ndraws = 5) ## fit a model with compositional outcome m2 <- brmcoda(complr = x, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## posterior predictive checks for compositional outcome -- linear scale bayesplot::pp_check(m2, resp = "z11", ndraws = 10) ## posterior predictive checks for compositional outcome -- original response scale bayesplot::pp_check(m2, parts = "WAKE", scale = "response", ndraws = 10) }if(requireNamespace("cmdstanr")){ ## fit a model x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## posterior predictive checks bayesplot::pp_check(m1, ndraws = 5) ## fit a model with compositional outcome m2 <- brmcoda(complr = x, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## posterior predictive checks for compositional outcome -- linear scale bayesplot::pp_check(m2, resp = "z11", ndraws = 10) ## posterior predictive checks for compositional outcome -- original response scale bayesplot::pp_check(m2, parts = "WAKE", scale = "response", ndraws = 10) }
Compute posterior draws of the posterior predictive distribution
of a brmsfit model in the brmcoda object.
Can be performed for the data used to fit the model (posterior predictive checks) or
for new data. By definition, these draws have higher variance than draws
of the expected value of the posterior predictive distribution computed by
fitted.brmcoda. This is because the residual error
is incorporated in posterior_predict. However, the estimated means of
both methods averaged across draws should be very similar.
## S3 method for class 'brmcoda' predict(object, scale = c("linear", "response"), parts = 1, ...)## S3 method for class 'brmcoda' predict(object, scale = c("linear", "response"), parts = 1, ...)
object |
An object of class |
scale |
Specifically for models with compositional responses,
either |
parts |
Only for models with compositional response
A optional character string specifying names of compositional parts that make up the response in |
... |
Further arguments passed to |
An array of predicted response values.
If summary = FALSE the output resembles those of
posterior_predict.brmsfit.
If summary = TRUE the output depends on the family: For categorical
and ordinal families, the output is an N x C matrix, where N is the number
of observations, C is the number of categories, and the values are
predicted category probabilities. For all other families, the output is a N
x E matrix where E = 2 + length(probs) is the number of summary
statistics: The Estimate column contains point estimates (either
mean or median depending on argument robust), while the
Est.Error column contains uncertainty estimates (either standard
deviation or median absolute deviation depending on argument
robust). The remaining columns starting with Q contain
quantile estimates as specified via argument probs.
if(requireNamespace("cmdstanr")){ ## fit a model x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## predicted responses pred <- predict(m1) head(pred) ## fit a model with compositional outcome m2 <- brmcoda(complr = x, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## predicted responses on ilr scale predilr <- predict(m2, scale = "linear") head(predilr) ## predicted responses on compositional scale predcomp <- predict(m2, scale = "response") head(predcomp) }if(requireNamespace("cmdstanr")){ ## fit a model x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## predicted responses pred <- predict(m1) head(pred) ## fit a model with compositional outcome m2 <- brmcoda(complr = x, formula = mvbind(z1_1, z2_1, z3_1, z4_1) ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## predicted responses on ilr scale predilr <- predict(m2, scale = "linear") head(predilr) ## predicted responses on compositional scale predcomp <- predict(m2, scale = "response") head(predcomp) }
Convert an simulate_data() result with a gen_outcome() generator into an
analysis-ready data set and inferred brms formula. The helper recomputes
observed between- and within-person predictors from the raw simulated
columns, creates within-person centered lag columns for ar1() terms, and
creates a complr() object when the outcome is compositional.
prep_sim_analysis(sim, outcome = NULL, drop_lag_na = FALSE)prep_sim_analysis(sim, outcome = NULL, drop_lag_na = FALSE)
sim |
An |
outcome |
Optional character scalar naming the outcome generator. When
|
drop_lag_na |
Logical scalar. When |
The analysis formula is inferred from the stored gen_outcome() formula.
Simulation terms between(x) and within(x) become observed-data columns
named x_between and x_within, computed from x by the simulation group
identifier. These columns are recomputed even when columns with the same
names already exist in sim$data.
For dynamic formulas, ar1() is translated to within-person centered lag
predictors. For compositional outcomes, the helper rebuilds the ILR
coordinates through complr() using the simulator's parts and SBP metadata,
then lags the generated z coordinates used by brmcoda().
An mlsim_analysis object, a list with:
data |
Analysis data with derived between/within and lag columns. |
formula |
An inferred |
complr |
A |
metadata |
Preparation metadata, including derived column names and formula mappings. |
params <- list( location = list(beta = matrix(0, nrow = 1, dimnames = list("(Intercept)", "y"))), scale = list(beta = matrix(log(0.2), nrow = 1, dimnames = list("(Intercept)", "y"))) ) sim <- simulate_data( n = 5, seed = 1, generators = list( outcome = gen_outcome( y ~ 1, scale = sigma ~ 1, params = params, burnin = 0 ) ) ) analysis <- prep_sim_analysis(sim) analysis$formulaparams <- list( location = list(beta = matrix(0, nrow = 1, dimnames = list("(Intercept)", "y"))), scale = list(beta = matrix(log(0.2), nrow = 1, dimnames = list("(Intercept)", "y"))) ) sim <- simulate_data( n = 5, seed = 1, generators = list( outcome = gen_outcome( y ~ 1, scale = sigma ~ 1, params = params, burnin = 0 ) ) ) analysis <- prep_sim_analysis(sim) analysis$formula
brmsfit model in a brmcoda objectPrint a Summary for a fitted brmsfit model in a brmcoda object
## S3 method for class 'brmcoda' print(x, ...)## S3 method for class 'brmcoda' print(x, ...)
x |
An object of class |
... |
Other arguments passed to |
if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") print(m) }if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") print(m) }
complr objectPrint a Summary for a complr object
## S3 method for class 'complr' print(x, ...)## S3 method for class 'complr' print(x, ...)
x |
An object of class |
... |
Other arguments passed to |
cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") print(cilr)cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") print(cilr)
Print a compact overview of an mlsim_data object.
## S3 method for class 'mlsim_data' print(x, ...)## S3 method for class 'mlsim_data' print(x, ...)
x |
An |
... |
Ignored. |
x, invisibly.
sim <- simulate_data( n = 3, generators = list( x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1) ) ) print(sim)sim <- simulate_data( n = 3, generators = list( x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1) ) ) print(sim)
substitution objectPrint a Summary for a substitution object
## S3 method for class 'substitution' print(x, ...)## S3 method for class 'substitution' print(x, ...)
x |
A |
... |
Additional arguments to be passed to to method |
if(requireNamespace("cmdstanr")){ ## fit a model with compositional predictor at between and between-person levels m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- substitution(object = m, delta = 5) print(subm) }if(requireNamespace("cmdstanr")){ ## fit a model with compositional predictor at between and between-person levels m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- substitution(object = m, delta = 5) print(subm) }
Print a Simulated Data Summary
## S3 method for class 'summary.mlsim_data' print(x, ...)## S3 method for class 'summary.mlsim_data' print(x, ...)
x |
A |
... |
Additional arguments passed to table printing. |
x, invisibly.
brmsfit from a brmcoda objectCompute Bayes factors from marginal likelihoods
## S3 method for class 'brmcoda' prior_summary(object, ...)## S3 method for class 'brmcoda' prior_summary(object, ...)
object |
An object of class |
... |
Further arguments passed to or from other methods. |
A dataset containing possible pairwise subsitutions.
psubpsub
A data table containing 5 variables.
first compositional variable
second compositional variable
third compositional variable
fourth compositional variable
fifth compositional variable
Extract the group-level ('random') effects of each level
of the brmsfit object in a brmcoda object.
## S3 method for class 'brmcoda' ranef(object, ...)## S3 method for class 'brmcoda' ranef(object, ...)
object |
An object of class |
... |
Further arguments passed to |
A list of 3D arrays (one per grouping factor).
If summary is TRUE,
the 1st dimension contains the factor levels,
the 2nd dimension contains the summary statistics
(see posterior_summary), and
the 3rd dimension contains the group-level effects.
If summary is FALSE, the 1st dimension contains
the posterior draws, the 2nd dimension contains the factor levels,
and the 3rd dimension contains the group-level effects.
## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract group-level coefficients ranef(m) }## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract group-level coefficients ranef(m) }
Compute posterior draws of residuals/predictive errors
## S3 method for class 'brmcoda' residuals(object, ...)## S3 method for class 'brmcoda' residuals(object, ...)
object |
An object of class |
... |
Further arguments passed to |
An array of predictive error/residual draws. If
summary = FALSE the output resembles those of
predictive_error.brmsfit. If summary = TRUE the output
is an N x E matrix, where N is the number of observations and E denotes
the summary statistics computed from the draws.
## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract residuals res <- residuals(m) head(res) }## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") ## extract residuals res <- residuals(m) head(res) }
A matrix of sequential binary partition.
sbpsbp
A matrix with 5 columns and 4 rows.
first compositional variable
second compositional variable
third compositional variable
fourth compositional variable
fifth compositional variable
A list of 4 components
simsim
A list with 5 columns and 4 rows.
Simulation results for brmcoda() for tables
Simulation results for substitution() for tables
Simulation results for brmcoda() for graphs
Simulation results for substitution() for graphs
Build a single-level, grouped, or longitudinal simulation design and evaluate generator specifications into one shared data table.
simulate_data( generators, n = NULL, n_groups = NULL, n_per_group = NULL, group_id = "group_id", obs_id = "obs_id", time_id = NULL, time_values = NULL, time_truncate = TRUE, seed = NULL )simulate_data( generators, n = NULL, n_groups = NULL, n_per_group = NULL, group_id = "group_id", obs_id = "obs_id", time_id = NULL, time_values = NULL, time_truncate = TRUE, seed = NULL )
generators |
Non-empty named list of generator specifications created
by |
n |
Total number of observations for a single-level design. For grouped
designs, |
n_groups |
Number of groups. When |
n_per_group |
Group sizes. May be a scalar/vector, a function of
|
group_id, obs_id
|
Character scalars naming the group and observation index columns. |
time_id |
Optional character scalar naming a time column. |
time_values |
Optional time values. May be a vector shared by units or a function called per unit/group. |
time_truncate |
Logical; when |
seed |
Optional random seed. When supplied, the caller's existing random seed is restored after simulation. |
Generators are evaluated in list order. Each generator can depend on columns
produced by earlier generators through the simulation context. Generated
column names must be unique and must not collide after make.names().
An object of class mlsim_data, a list with:
dataA data.table::data.table() containing design columns and
generated variables.
metadataSimulation design metadata, seed, index metadata, and generator order.
generator_specsGenerator specifications with simulator closures removed.
generator_metadataPer-generator metadata recorded during simulation.
sim <- simulate_data( n_groups = 3, n_per_group = 2, seed = 10, generators = list( group_x = gen_mvn("group_x", level = "level2", fixed_intercept = 0, residual_cov = 1), y = gen_poisson("y", fixed_intercept = log(2)) ) ) sim$data summary(sim) longitudinal <- simulate_data( n_groups = 2, n_per_group = 3, time_id = "visit", generators = list(x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1)) ) longitudinal$metadata$indexsim <- simulate_data( n_groups = 3, n_per_group = 2, seed = 10, generators = list( group_x = gen_mvn("group_x", level = "level2", fixed_intercept = 0, residual_cov = 1), y = gen_poisson("y", fixed_intercept = log(2)) ) ) sim$data summary(sim) longitudinal <- simulate_data( n_groups = 2, n_per_group = 3, time_id = "visit", generators = list(x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1)) ) longitudinal$metadata$index
This function is an alias of substitution to estimates the difference in an outcome
when compositional parts are substituted for specific unit(s)
using a aggregate reference composition
(e.g., compositional mean at sample level, not seperated by between- and within effects).
It is recommended that users run substitution model using the substitution function.
sub( object, delta, ref = "grandmean", level = "aggregate", summary = TRUE, aorg = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "equal", scale = c("response", "linear"), cores = NULL, ... )sub( object, delta, ref = "grandmean", level = "aggregate", summary = TRUE, aorg = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "equal", scale = c("response", "linear"), cores = NULL, ... )
object |
A fitted |
delta |
A integer, numeric value or vector indicating the amount of substituted change between compositional parts. |
ref |
Either a character value or vector or a dataset.
Can be |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
summary |
A logical value to obtain summary statistics instead of the raw values. Default is |
aorg |
Internal use. A logical value indicating whether the results should be average across reference grid. |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
base |
An optional base substitution.
Can be a |
type |
A character string to indicate the type of substitution.
If |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
scale |
Either |
cores |
Number of cores to use when executing the chains in parallel,
we recommend setting the |
... |
Further arguments passed to |
A list containing the results of multilevel compositional substitution model. The first six lists contain the results of the substitution estimation for a compositional part.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. |
Reference |
Either |
if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ z1_1 + z2_1 + z3_1 + z4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- sub(object = m, base = psub, delta = 5) }if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ z1_1 + z2_1 + z3_1 + z4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- sub(object = m, base = psub, delta = 5) }
This function is an alias of substitution to estimates the difference in an outcome
when compositional parts are substituted for specific unit(s)
using cluster mean (e.g., compositional mean at individual level) as reference composition.
It is recommended that users run substitution model using the substitution function.
submargin( object, delta, ref = "clustermean", level = "aggregate", summary = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "proportional", scale = c("response", "linear"), cores = NULL, ... )submargin( object, delta, ref = "clustermean", level = "aggregate", summary = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "proportional", scale = c("response", "linear"), cores = NULL, ... )
object |
A fitted |
delta |
A integer, numeric value or vector indicating the amount of substituted change between compositional parts. |
ref |
Either a character value or vector or a dataset.
Can be |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
summary |
A logical value to obtain summary statistics instead of the raw values. Default is |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
base |
An optional base substitution.
Can be a |
type |
A character string to indicate the type of substitution.
If |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
scale |
Either |
cores |
Number of cores to use when executing the chains in parallel,
we recommend setting the |
... |
Further arguments passed to |
A list containing the results of multilevel compositional substitution model. The first six lists contain the results of the substitution estimation for a compositional part.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. |
Reference |
Either |
if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ z1_1 + z2_1 + z3_1 + z4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- submargin(object = m, base = psub, delta = 5) }if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ z1_1 + z2_1 + z3_1 + z4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- submargin(object = m, base = psub, delta = 5) }
Estimate the difference in an outcome
when compositional parts are substituted for specific unit(s).
The substitution output encapsulates
the substitution results for all compositional parts
present in the brmcoda object.
substitution( object, delta, ref = c("grandmean", "clustermean"), level = c("between", "within", "aggregate"), summary = TRUE, at = NULL, parts = 1, base, type, weight = c("equal", "proportional"), scale = c("response", "linear"), aorg = NULL, cores = NULL, ... )substitution( object, delta, ref = c("grandmean", "clustermean"), level = c("between", "within", "aggregate"), summary = TRUE, at = NULL, parts = 1, base, type, weight = c("equal", "proportional"), scale = c("response", "linear"), aorg = NULL, cores = NULL, ... )
object |
A fitted |
delta |
A integer, numeric value or vector indicating the amount of substituted change between compositional parts. |
ref |
Either a character value or vector or a dataset.
Can be |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
summary |
A logical value to obtain summary statistics instead of the raw values. Default is |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
base |
An optional base substitution.
Can be a |
type |
A character string to indicate the type of substitution.
If |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
scale |
Either |
aorg |
Internal use. A logical value indicating whether the results should be average across reference grid. |
cores |
Number of cores to use when executing the chains in parallel,
we recommend setting the |
... |
Further arguments passed to |
A list containing the results of multilevel compositional substitution model. The first six lists contain the results of the substitution estimation for a compositional part.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. |
Reference |
Either |
if(requireNamespace("cmdstanr")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") # one to one reallocation at between and within-person levels sub1 <- substitution(object = m1, delta = 5, level = c("between")) summary(sub1) # one to all reallocation at between and within-person levels sub2 <- substitution(object = m1, delta = 5, level = c("between", "within"), type = "one-to-all") summary(sub2) # model with compositional predictor at aggregate level m2 <- brmcoda(complr = x, formula = Stress ~ z1_1 + z2_1 + z3_1 + z4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") sub3 <- substitution(object = m2, delta = 5, level = c("aggregate")) }if(requireNamespace("cmdstanr")){ x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m1 <- brmcoda(complr = x, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") # one to one reallocation at between and within-person levels sub1 <- substitution(object = m1, delta = 5, level = c("between")) summary(sub1) # one to all reallocation at between and within-person levels sub2 <- substitution(object = m1, delta = 5, level = c("between", "within"), type = "one-to-all") summary(sub2) # model with compositional predictor at aggregate level m2 <- brmcoda(complr = x, formula = Stress ~ z1_1 + z2_1 + z3_1 + z4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") sub3 <- substitution(object = m2, delta = 5, level = c("aggregate")) }
brmsfit model in a brmcoda objectCreate a Summary of a fitted brmsfit model in a brmcoda object
## S3 method for class 'brmcoda' summary(object, ...)## S3 method for class 'brmcoda' summary(object, ...)
object |
An object of class |
... |
Other arguments passed to |
if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") summary(m) }if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") summary(m) }
complr objectCreate a Summary of a complr object
## S3 method for class 'complr' summary(object, ...)## S3 method for class 'complr' summary(object, ...)
object |
An object of class |
... |
generic argument, not in use. |
x1 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") summary(x1) x2 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) summary(x2)x1 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") summary(x1) x2 <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB")) summary(x2)
Build a compact summary of an mlsim_data object.
## S3 method for class 'mlsim_data' summary(object, ...)## S3 method for class 'mlsim_data' summary(object, ...)
object |
An |
... |
Ignored. |
A summary.mlsim_data object with design and generators tables.
sim <- simulate_data( n = 3, generators = list( x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1) ) ) summary(sim)sim <- simulate_data( n = 3, generators = list( x = gen_mvn("x", fixed_intercept = 0, residual_cov = 1) ) ) summary(sim)
brmsfit model from a pivot_coord objectCreate a Summary of a fitted brmsfit model from a pivot_coord object
## S3 method for class 'pivot_coord' summary(object, digits = 2, ...)## S3 method for class 'pivot_coord' summary(object, digits = 2, ...)
object |
An object of class |
digits |
A integer value used for number formatting. Default is |
... |
currently ignored. |
A data table of results.
if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pc <- pivot_coord(m, method = "refit") summary(m_pc) }if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") m_pc <- pivot_coord(m, method = "refit") summary(m_pc) }
substitution objectCreate a Summary of a Substitution Model represented by a substitution object
## S3 method for class 'substitution' summary(object, delta, to, from, ref, level, digits = 2, ...)## S3 method for class 'substitution' summary(object, delta, to, from, ref, level, digits = 2, ...)
object |
A |
delta |
A integer, numeric value or vector indicating the desired |
to |
A character value or vector specifying the names of the compositional parts that were reallocated to in the model. |
from |
A character value or vector specifying the names of the compositional parts that were reallocated from in the model. |
ref |
Either a character value or vector (( |
level |
A character string or vector ( |
digits |
A integer value used for number formatting. Default is |
... |
generic argument, not in use. |
A summary of substitution object.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. Either |
Reference |
Either |
if(requireNamespace("cmdstanr")){ ## fit a model with compositional predictor at between and between-person levels m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- substitution(object = m, delta = 5) summary(subm) }if(requireNamespace("cmdstanr")){ ## fit a model with compositional predictor at between and between-person levels m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- substitution(object = m, delta = 5) summary(subm) }
brmcoda modelsThis method allows for updating an existing brmcoda object.
## S3 method for class 'brmcoda' update(object, formula. = NULL, newdata = NULL, ...)## S3 method for class 'brmcoda' update(object, formula. = NULL, newdata = NULL, ...)
object |
A fitted |
formula. |
Changes to the formula; for details see
|
newdata |
A |
... |
Further arguments passed to |
A brmcoda with two elements
complr |
An object of class |
model |
An object of class |
if(requireNamespace("cmdstanr")){ # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID"), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") # removing the effect of bz1_1 fit1 <- update(fit, formula. = ~ . - bz1_1) # using only a subset fit2 <- update(fit, newdata = mcompd[ID != 1]) }if(requireNamespace("cmdstanr")){ # model with compositional predictor at between and within-person levels fit <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID"), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + Female + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") # removing the effect of bz1_1 fit1 <- update(fit, formula. = ~ . - bz1_1) # using only a subset fit2 <- update(fit, newdata = mcompd[ID != 1]) }
complr object.Variance of compositions presented in a complr object.
## S3 method for class 'complr' var(x, weight = c("equal", "proportional"), parts = 1, ...)## S3 method for class 'complr' var(x, weight = c("equal", "proportional"), parts = 1, ...)
x |
An object of class |
weight |
A character value specifying the weight to use in calculation of the reference composition.
If |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
... |
generic argument, not in use. |
x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") ## ensure dispatch to the s3 generic var function ## defined in the compositions package compositions::var(x)x <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID") ## ensure dispatch to the s3 generic var function ## defined in the compositions package compositions::var(x)
Calculates the estimated standard deviations,
correlations and covariances of the group-level terms
of the brmsfit object in a brmcoda object.
## S3 method for class 'brmcoda' VarCorr(x, ...)## S3 method for class 'brmcoda' VarCorr(x, ...)
x |
An object of class |
... |
Further arguments passed to |
A list of lists (one per grouping factor), each with three elements: a matrix containing the standard deviations, an array containing the correlation matrix, and an array containing the covariance matrix with variances on the diagonal.
## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") VarCorr(m) }## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") VarCorr(m) }
Get a point estimate of the covariance or
correlation matrix of population-level parameters
of the brmsfit object in a brmcoda object.
## S3 method for class 'brmcoda' vcov(object, ...)## S3 method for class 'brmcoda' vcov(object, ...)
object |
An object of class |
... |
Further arguments passed to |
covariance or correlation matrix of population-level parameters
## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") vcov(m) }## fit a model if(requireNamespace("cmdstanr")){ m <- brmcoda(complr = complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440), formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") vcov(m) }
This function is an alias of substitution to estimates the difference in an outcome
when compositional parts are substituted for specific unit(s) at within level
using a single reference composition (e.g., compositional mean at sample level).
It is recommended that users run substitution model using the substitution function.
wsub( object, delta, ref = "grandmean", level = "within", summary = TRUE, aorg = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "equal", scale = c("response", "linear"), cores = NULL, ... )wsub( object, delta, ref = "grandmean", level = "within", summary = TRUE, aorg = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "equal", scale = c("response", "linear"), cores = NULL, ... )
object |
A fitted |
delta |
A integer, numeric value or vector indicating the amount of substituted change between compositional parts. |
ref |
Either a character value or vector or a dataset.
Can be |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
summary |
A logical value to obtain summary statistics instead of the raw values. Default is |
aorg |
Internal use. A logical value indicating whether the results should be average across reference grid. |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
base |
An optional base substitution.
Can be a |
type |
A character string to indicate the type of substitution.
If |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
scale |
Either |
cores |
Number of cores to use when executing the chains in parallel,
we recommend setting the |
... |
Further arguments passed to |
A list containing the results of multilevel compositional substitution model. The first six lists contain the results of the substitution estimation for a compositional part.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. |
Reference |
Either |
if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- wsub(object = m, base = psub, delta = 60) }if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- wsub(object = m, base = psub, delta = 60) }
This function is an alias of substitution to estimates the difference in an outcome
when compositional parts are substituted for specific unit(s) at within level
using cluster mean (e.g., compositional mean at individual level) as reference composition.
It is recommended that users run substitution model using the substitution function.
wsubmargin( object, delta, ref = "clustermean", level = "within", summary = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "proportional", scale = c("response", "linear"), cores = NULL, ... )wsubmargin( object, delta, ref = "clustermean", level = "within", summary = TRUE, at = NULL, parts = 1, base, type = "one-to-one", weight = "proportional", scale = c("response", "linear"), cores = NULL, ... )
object |
A fitted |
delta |
A integer, numeric value or vector indicating the amount of substituted change between compositional parts. |
ref |
Either a character value or vector or a dataset.
Can be |
level |
A character string or vector.
Should the estimate of multilevel models focus on the |
summary |
A logical value to obtain summary statistics instead of the raw values. Default is |
at |
An optional named list of levels for the corresponding variables in the reference grid. |
parts |
A optional character string specifying names of compositional parts that should be considered
in the substitution analysis. This should correspond to a single set of names of compositional parts specified
in the |
base |
An optional base substitution.
Can be a |
type |
A character string to indicate the type of substitution.
If |
weight |
A character value specifying the weight to use in calculation of the reference composition. |
scale |
Either |
cores |
Number of cores to use when executing the chains in parallel,
we recommend setting the |
... |
Further arguments passed to |
A list containing the results of multilevel compositional substitution model. The first six lists contain the results of the substitution estimation for a compositional part.
Mean |
Posterior means. |
CI_low and CI_high |
95% credible intervals. |
Delta |
Amount substituted across compositional parts. |
From |
Compositional part that is substituted from. |
To |
Compositional parts that is substituted to. |
Level |
Level where changes in composition takes place. |
Reference |
Either |
if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- wsubmargin(object = m, base = psub, delta = 5) }if(requireNamespace("cmdstanr")){ cilr <- complr(data = mcompd, sbp = sbp, parts = c("TST", "WAKE", "MVPA", "LPA", "SB"), idvar = "ID", total = 1440) # model with compositional predictor at between and within-person levels m <- brmcoda(complr = cilr, formula = Stress ~ bz1_1 + bz2_1 + bz3_1 + bz4_1 + wz1_1 + wz2_1 + wz3_1 + wz4_1 + (1 | ID), chain = 1, iter = 500, backend = "cmdstanr") subm <- wsubmargin(object = m, base = psub, delta = 5) }