serofoi 0.1.0
New features
- Data simulation functions from time-varying or age-varying force of infection trends. The following is an example to simulate from a constant (in time) force of infection:
foi_sim_constant <- rep(0.02, 50)
serodata_constant <- generate_sim_data(
sim_data = data.frame(
age=seq(1,50),
tsur=2050),
foi=foi_sim_constant,
sample_size_by_age = 5
)
To generate grouped serosurveys the function group_sim_data
can be used:
serodata_constant <- group_sim_data(serodata_constant , step = 5)
Breaking changes
-
Simplifies
fit_seromodel
output- Before, the output of
fit_seromodel
was a list:
- Before, the output of
seromodel_object <- list(
fit = fit,
seromodel_fit = seromodel_fit,
serodata = serodata,
serodata = serodata,
stan_data = stan_data,
...
)
-
Now, the output is a
stan_fit
object as obtained fromrstan::sampling
. Because of this, some plotting functionalities now requireserodata
as an input. -
Initial prior distribution parameters
foi_location
andfoi_scale
can be specified explicitely infit_seromodel
:
seromodel <- fit_seromodel(
serodata,
foi_model = "tv_normal",
foi_location = 0,
foi_scale = 1
)
Depending on the selected model foi_model
, the meaning of the parameters change. For the tv_normal_log
model these parameters must be in logarithmic scale; the recommended usage is:
seromodel <- fit_seromodel(
serodata,
foi_model = "tv_normal_log",
foi_location = -6,
foi_scale = 4
)
- Chunks structure specification is now possible
- Before, the models estimated one value of the force of infection per year in the time spanned by the serosurvey:
data(chagas2012)
serodata <- prepare_serodata(chagas2012)
seromodel <- fit_seromodel(serodata, foi_model = "tv_normal")
- Now, the amount of force of infection values estimated by the models depend on the specified chunk structure. This can either be specified by size:
seromodel <- fit_seromodel(serodata, foi_model = "tv_normal", chunk_size = 10)
or explicitly:
chunks <- rep(c(1, 2, 3, 4, 5), c(10, 10, 15, 15, max(serodata$age_mean_f)-50))
seromodel <- fit_seromodel(serodata, foi_model = "tv_normal", chunks = chunks)
- Deprecate
run_seromodel
. Initially this function was intended to be a handler forfit_seromodel
for cases when the user may need to implement the same model to multiple independent serosurveys; now we plan to showcase examples of this using the current functionalities of the package (to be added in future versions to the vignettes).
Minor changes
-
Refactorization of the visualization module
plot_seroprev
allows for data binning (age group manipulation) by means of parametersbin_data=TRUE
andbin_step
.- Automatic selection of
ymin
andymax
aesthetics plotting functions (with the exception ofplot_rhats
). - Correct input validation
-
Remove duplicated data in
veev2012
dataset
Internal changes
-
Remove large files from git history (see #77).
-
Added input validation for the following functions:
prepare_serodata
generate_sim_data
get_age_group
fit_seromodel
extract_seromodel_summary
plot_seroprev
plot_seroprev_fitted
plot_foi
plot_seromodel
-
Unit testing:
- Separate modelling testings by model
- Use of
dplyr::near
to test models statistical validity - Add tests for data simulation functions
-
Update package template in accordance to {packagetemplate}