fit_longitudinal_model: A function to run a longitudinal combined stochastic block...

View source: R/fit_longitudinal_model.R

fit_longitudinal_modelR Documentation

A function to run a longitudinal combined stochastic block and social relations models using the STRAND framework

Description

This function allows users to analyse empirical or simulated data using a Bayesian stochastic block and social relations model in Stan. The user must supply a list of STRAND data objects, and a series of formulas following standard lm() style syntax.

Usage

fit_longitudinal_model(
  long_data,
  block_regression,
  focal_regression,
  target_regression,
  dyad_regression,
  coefficient_mode = "varying",
  random_effects_mode = "fixed",
  mode = "mcmc",
  bandage_penalty = 0.01,
  stan_mcmc_parameters = list(seed = 1, chains = 1, parallel_chains = 1, refresh = 1,
    iter_warmup = NULL, iter_sampling = NULL, max_treedepth = NULL, adapt_delta = NULL,
    init = NULL),
  priors = NULL
)

Arguments

long_data

A list of data objects of class STRAND prepared using the make_strand_data() function. The data objects must include all covariates used in the formulas listed below.

block_regression

A formula for the block-level predictors. This should be specified as in lm(), e.g.: ~ Ethnicity + Sex. Dont use interactions, however.

focal_regression

A formula for the predictors of out-degree (i.e., focal effects, or the effects of individual covariates on outgoing ties). This should be specified as in lm(), e.g.: ~ Age * Education

target_regression

A formula for the predictors of in-degree (i.e., target effects, or the effects of individual covariates on incoming ties). This should be specified as in lm(), e.g.: ~ Age * Education

dyad_regression

A formula for the predictors of dyadic relationships. This should be specified as in lm(), e.g.: ~ Kinship + Friendship

coefficient_mode

Set to "fixed" if all time-points should have the same coeffcients. Set to "varying" if each time-point should have its own coefficient.

random_effects_mode

Set to "fixed" if all time-points should have the same coeffcients. Set to "varying" if each time-point should have its own coefficient. Setting to "varying essentially" reduces the longitudinal model to a multiplex model.

mode

A string giving the mode that stan should use to fit the model. "mcmc" is default and recommended, and STRAND has functions to make processing the mcmc samples easier. Other options are "optim", to use the optimizer provided by Stan, and "vb" to run the variational inference routine provided by Stan. "optim" and "vb" are fast and can be used for test runs. To process their output, however, users must be familar with [cmdstanr](https://mc-stan.org/users/interfaces/cmdstan). We recommmend that users refer to the [Stan user manual](https://mc-stan.org/users/documentation/) for more information about the different modes that Stan can use.

bandage_penalty

A parameter that controls how tightly stiched together correlation structure parameters are. Default is 0.01 for tight stiching of parameters that should be equal. Relaxing to 0.05, or 0.1 can sometimes aid model performance.

stan_mcmc_parameters

A list of Stan parameters that often need to be tuned. Defaults set to: list(seed = 1, chains = 1, parallel_chains = 1, refresh = 1, iter_warmup = NULL, iter_sampling = NULL, max_treedepth = NULL, adapt_delta = NULL) We recommend 1000 sampling and warmup iterations on a single chain for exploratory model fitting. For final runs, we recommend running 2 to 4 chains for twice as long. Be sure to check r_hat, effective sample size, and traceplots.

priors

A labeled list of priors for the model. User are only permitted to edit the values. Distributions are fixed.

Details

It is important to note that all individual block (or group) assignment must be supplied as data. Latent groups will be supported in future releases of STRAND.

Value

A STRAND model object containing the data used, and the Stan results.

Examples

## Not run: 
fit = fit_longitudinal_model(data=model_dat,
                             block_regression = ~ Ethnicity,
                             focal_regression = ~ Age * NoFood,
                             target_regression = ~ Age * NoFood,
                             dyad_regression = ~ Relatedness + Friends * SameSex,
                             coefficient_mode="varying",
                             random_effects_mode="fixed",
                             mode="mcmc",
                             stan_mcmc_parameters = list(seed = 1, chains = 1, 
                               parallel_chains = 1, refresh = 1, 
                               iter_warmup = 100, iter_sampling = 100,
                               max_treedepth = NULL, adapt_delta = NULL)
                              )

## End(Not run)


ctross/STRAND documentation built on Dec. 15, 2024, 6:02 a.m.