This release adds a meta model for fitting to published summary estimates, exponentially growing primary events, left truncation, and a new set of tools for post-processing and plotting fitted models. It also removes several functions and changes some interfaces, as listed below.
predict_delay_parameters() and predict_dpar() are removed in favour of delay_parameter_draws(), and add_mean_sd() in favour of add_summaries().
See #471.epidist_family_param() and epidist_transform_data() are now internal.
Extensions implement epidist_family_model() and epidist_transform_data_model() instead.
See #79.is_epidist_*() predicates share one signature, is_epidist_<class>(data), and no longer take ....
Closes #706.epidist data objects share an epidist_data class, checked by is_epidist_data().
They re-check themselves when modified and drop any class whose requirements they no longer meet, with a warning.
See ?epidist_data and #399.cmdstanr is no longer a suggested dependency.
Tests and examples fit through rstan, and cmdstanr remains available as a brms backend.
See #687 and #688.brms 2.23.0 and primarycensored 1.5.2.
The Remotes field is removed, so all dependencies resolve from CRAN.
See #592 and #727.as_epidist_meta_model(), which fits published summary estimates jointly with individual level data.
Each summary is forward modelled from the study's own estimation procedure, so estimates that did not adjust for censoring or truncation still contribute unbiased information.
It is experimental and its interface may change.
See #620.as_epidist_estimates_data(), epidist_estimates_summaries(), epidist_estimates_parameters(), epidist_estimates_epireview() and as_epidist_multivariate() for preparing published estimates.
They cover means, standard deviations, quantiles, standard errors, fitted distribution parameters and summaries with a covariance, and check the inputs for common problems.
See #620.epidist_gen_meta_log_lik() and epidist_gen_meta_predict(), so log_lik(), loo() and posterior predictions work for meta model fits.
See #620.simulate_study(), which applies a published study's observation and estimation procedure to a simulated line list.
Closes #672.NA or uncertain growth_rate values, sharing it with individual level data.
Closes #678.primary = "expgrowth" for the latent, marginal and meta models.
The growth rate is a distributional parameter, so it takes a formula and prior.
See #489 and #618.delay_min argument to as_epidist_marginal_model(), also supported by the meta model.
See #588 and #596.delay_parameter_draws(), add_delay_parameter_draws(), add_summaries(), epidist_strata() and delay_summary_draws() for posterior draws of the delay distribution and its mean, standard deviation and quantiles.
epidist_newdata() builds the newdata they need.
See #280, #471 and #667.plot_events(), plot_delays(), and plot() and ggplot2::autoplot() methods for delay draws.
plot_delays() also gives a posterior predictive check of a fitted model.
See #670, #689 and #743.distspec::as_dist_spec() method for fitted models.
See #712.simulate_dates(), which turns simulated event times into censored dates.epidist_gen_log_lik(), and made its generic method linear in the number of posterior draws.
See #79, #476 and #646.epidist_prior() no longer warns about user priors on valid brms parameters, and lists unmatched priors clearly.
See #483.epidist() now restores the PKG_CPPFLAGS and PKG_LIBS environment variables that rstan leaves set.
See #532.epidist_gen_log_lik() method now normalises over delay_min when there is no right truncation.
Closes #646.delay_parameter_draws() no longer passes on the brms warning about the infinite observation times epidist uses.
Closes #718.dplyr verbs, so plot() still dispatches.
Closes #721.brms functions.
See #420.epidist.
See #596 and #620.L (left truncation) parameter to the primarycensored_lpmf call in
the marginal model. See #583.primarycensored (>= 1.4.0) version bound to DESCRIPTION.primarycensored_lpmf and ODE/distribution helpers) with
pcd_load_stan_functions(dependencies = TRUE) instead of loading all
functions. See #582.check-cmdstan workflow to also check marginal model Stan syntax.as_epidist_marginal_model(). See #565.Hotfix release to patch a change in how the grepl function works in new versions of R.
This release adds support for a wider range of distributions in the marginal model, improves documentation with new vignettes and FAQ sections, enhances the getting started guide with clearer examples of model comparison, and fixes several bugs related to parameter bounds and likelihood calculations.
primarycensored in the marginal model. See #540.posterior package with epidist models, particularly for working with random variables (rvars) to propagate uncertainty in calculations. See #547.marginaleffects package with epidist models. See #547.predict_delay_parameters() where it couldn't detect brms families when used directly. See #549.This release adds a new marginal model based on primarycensored which provides a more efficient approach for fitting delay distributions compared to the existing latent model. We've also improved data handling by adding support for aggregated data across all models, added comprehensive examples using real world data, and enhanced documentation based on user feedback. The package has also undergone significant internal improvements including generalised Stan reparameterisation and improved data transformation methods.
As part of this release we have moved from @athowes maintaining the package (who led the initial package development, implementation of the S3 infrastructure, implementation of the core models, and wrote the first versions of the getting started vignette, Ebola case study, FAQ section, and the approximate inference vignette) to @seabbs maintaining the package.
primarycensored. This can be specified using as_epidist_marginal_model(). This is currently limited to Weibull, log-normal, and gamma distributions with uniform primary censoring but this will be generalised in future releases. See #426.weight argument to as_epidist_marginal_model() to allow for weighted data (for example count data) to be used in the marginal model. See #509.epidist_aggregate_data method to as_epidist_marginal_model() to allow straightforward use of the marginal model with aggregated data. See #510.epidist_aggregate_data method to as_epidist_latent_model() to allow straightforward use of the latent model with aggregated data. See #510.epidist_aggregate_data method to as_epidist_naive_model() to allow straightforward use of the naive model with aggregated data. See #510.epidist(). See #473.enforce_presence argument to epidist_prior() to allow for priors to be
specified if they do not match existing parameters. See #474.merge argument to epidist_prior() to allow for not merging user and package priors. See #474.brms and then extracting the reparameterisation. See #474.transform_data S3 method to allow for data to be transformed for specific models. This is specifically useful for the marginal model at the moment as it allows reducing the data to its unique strata. See #474.epidist_aggregate_data class to handle pre-aggregated line list data. See #510.as_epidist_aggregate_data() method for epidist_linelist_data objects to allow for easy conversion to aggregate data. See #510.as_epidist_linelist_data() method for epidist_aggregate_data objects to allow for easy conversion to linelist data. See #510.sierra_leone_ebola_data to the package. See #510.epidist_transform_data() methods work for the marginal and naive models. See #510.epinowcast standards. See #467.primarycensored that doesn't make use of size(). This fixes some Mac compilation edge cases. See #524.This is the first minor release of epidist intended for early test users of the package.
As some features may change, the package is marked as experimental.
We expect to release a stable 1.0.0 version shortly.
The epidist package implements models for epidemiological delay distributions.
It uses brms to perform Bayesian inference.
One data format is currently available:
Two statistical models are currently available:
brmsThe package is readily extensible to additional models via an S3 class based system. In particular, model fitting with [epidist()] is possible using S3 classes for custom:
We provide functionality for post-processing.
Alternatively, users may directly use tidybayes for specific families.
Three vignettes are available. There is also a frequently asked questions section.