# Getting started¶

## Typical analysis workflow¶

At a high level, the Survival modeling workflow proceeds in several steps:

- Obtain or simulate data:
`survivalstan.sim`

- Select model to fit:
`survivalstan.models`

- Transform data, if required by your model:
`survivalstan.prep_data_long_surv`

- Fit model to data:
`survivalstan.fit_stan_survival_model`

- Check model fit
`survivalstan.utils.print_stan_summary`

`survivalstan.utils.plot_pp_survival`

- Review inferences from model
`survivalstan.utils.plot_coefs`

, etc

- Update model: rince and repeat!

Some high-level comments:

**Most if not all survivalstan functions accept a list of models.**- It’s rare to analyze your data with one and only one model.
- Often you run the same model with more interations, or you try alternate specifications of the same model.
- Use the optional parameter
`model_cohort`

to “label” each model fit object.

- Not all functions will work with all models
- Example,
`survivalstan.utils.plot_grp_coefs`

will only work for models with grouped-coefficients (ie a varying-coefficient model). - Similarly,
`survivalstan.utils.plot_baseline_hazard`

will only work for “PEM” models, which have semi- or non-parametrics baseline hazards.

- Example,

### Obtain or simulate data¶

- The
`survivalstan.sim`

module includes several data-simulation routines. - typically one record per subject
- “survival status” typically consists of several columns. At a minimum: time and status (1:event, 0:censor)

### Select the survival model you want to fit¶

- Survivalstan includes Stan code for a variety of models, including:
- Parametric `baseline hazards <>`__ (weibull, gamma, exponential)
- Semi- and non-parametric baseline hazards (pem_randomwalk, pem_gamma, pem_unstructured)
- Estimating time-dependent effects
- Varying-coefficient models
- Stratified models
- Competing events models

- Or, you may have your own Stan code - a variation of one of the
above, or your own
- Many of the models provided by Survivalstan include helper functions for regularizing priors, etc.

### Transform data into a format suitable for your model¶

- Many of the models provided by Survivalstan (any that start with
“
*pem*”) require that data be provided in a “long” format. See `Survival modeling with long vs wide format <>`__ - You can use
`prep_data_long_surv`

function to transform your data into the long format prior to analysis.

### Fit your model to your data: `fit_stan_survival_model`

¶

- (within
`fit_stan_survival_model`

):- calls StanSurvivalData() to return a data dictionary for your stan model
- compiles & optionally caches the compiled model
- calls
`pystan.stan`

,`stancache.cached_model_fit`

to fit the model - (tries to) call
`stanity.psisloo`

to summarize fit - (tries to) call
`survivalstan.utils.extract_baseline_hazard`

,`extract_grp_coefs`

, and`extract_coefs`

- returns a data dictionary containing meta-data about your inputs & outputs

### Check model fit & posterior predictive checking¶

- Try
`survivalstan.utils.plot_baseline_hazard`

- Try
`survivalstan.utils.plot_pp_survival`