NEW FEATURES
- Network models can now use predefined scenarios with the
use_scenario
function. See the Working with Model Parameters vignette for details. - The
trim_netest
function has been added to reducenetest
object sizes in common use cases. - The
networkLite
class now supports some additional functionalities. - Duration = 1 time step models in
netsim
withtergmLite = FALSE
now usetergm
simulation to produce anetworkDynamic
class object, similar to the duration > 1 time step case. netdx
now supports heterogeneous dissolution model diagnostics. See the example inhelp("netdx")
.plot.netsim
now supportstype = "duration","dissolution"
for homogeneous ("edges-only") dissolution models.- Network model parameters can now be supplied to
param.net
via adata.frame
. See the Working with Model Parameters vignette for details. - A new term
fuzzynodematch
was added, to support modeling of more generalized notions of homophily. - Network models can now be checkpointed to automate saving, recovering, and restarting simulations after interruption, as might occur with large-scale simulation jobs on high-performance computing (HPC) systems. See
help("control.net)
.
BUG FIXES
- EpiModel's custom terms
absdiffby
andabsdiffnodemix
are now usable again (due to enabling symbol search). - The correct formula is now used in
sim_nets_t1
when initializing the network with the non-nested edges dissolution approximation approach innetest
. - References to
network
class internals have been removed fromnet.utils.R
to make the code function properly withnetworkLite
s. update_dissolution
now correctly handles duration 1 models.get_edgelists
andget_cumulative_edgelists
now throw informative errors when thenetwork
refers to non-existing networks.get_partners
andget_cumulative_edgelists_df
will throw errors as well as they call those functions internally.
OTHER
- The
updater.net
module was removed as an optional module but its functionalities are now the default behavior for all network models (built-in and custom). - The parameters
param.updater.list
andcontrol.updater.list
inparam.net
andcontrol.net
respectively were renamed.param.updater.list
and.control.updater.list
. The leading dot indicates that these are built-in EpiModel elements not to be confused with the user-defined ones. - Dissolution models using the
nodefactor
term have been deprecated. stergm
controls have been deprecated in favor oftergm
controls.- Formula-style simulations are used consistently for both
ergm
andtergm
simulation, requiring control arguments of classcontrol.simulate.formula
andcontrol.simulate.formula.tergm
. ndtv
is added to "Suggests" (again) andplot.transmat
now accepts thetransmissionTimeline
in thestyle
argument (again).- Systematic review and improvement of documentation across the package.
netest
andnetdx
now have default control arguments following R's default argument mechanism.- Simulation names are now attached to
netsim
object fields produced via thesave.other
mechanism. - Imputed durational corrections for onset-censored edges are now sampled from a geometric distribution rather than simply using the mean of that distribution.
NEW FEATURES
- Improved optional module
updater.net
allowing it to update the model controls as well as the parameters. See the vignette, "Working with model parameters." - General updates to the names and content of the included vignettes.
BUG FIXES
- Fix dissolution model statistics calculations for
netsim
in the case with a model with an "end horizon" (when the network is not resimulated at the end of the time series). - Fix duplicate printing issues across
print.netsim
,print.param.net
, andprint.control.net
. - Fix use of
all.equal
in unit tests as requested by CRAN. - Change defaults of newly introduced cumulative edgelist functionality to not store it (improves speed).
- Allow
set_attr
forposit_ids
to return unchangeddat
object.
OTHER
- We have changed the names of arguments from the function
get_partners
newly introduced in EpiModel v2.2.0:max.age
is renamed totruncate
for consistency with the other cumulative edgelist functions;only.active
is renamedonly.active.nodes
to clarify that this argument subsets by nodes and not by partnerships.
NEW FEATURES
- Developed a general approach to tracking and querying historical and contacts, called a cumulative edgelist. This may be used, for example, to query the recent but non-current contacts of newly infected nodes. See the vignette, "Working with network objects".
- A
create_dat_object
helper function was added to standardize the creation of the coredat
object withininitialize.net
. - The current timestep within
netsim
simulations is now stored in thedat
object and accessible withget_current_timestep
. This eliminates the need to explicitly passat
as a function argument, although that is still allowed. - Addition of the
get_param_set
function that extracts from anetsim
object the set of parameters used by each simulation. See the help page:help("get_param_set")
. - Developed a mechanism to store nodal attribute history over the course of a
netsim
simulation. See the vignette, "Working with attributes and summary statistics." - Developed an optional module to define prevalence statistics (also called "epi stats") as functions to be passed to the model as control settings before each
netsim
simulation. This allows users to avoid updating theprevalence.net
module. See the vignette, "Working with attributes and summary statistics." - Developed an optional module allowing the update of the model parameters over timesteps within
netsim
simulations (i.e., time-varying parameters). See the vignette, "Working with model parameters." - Improved the random parameterization programming interface to allow correlation between parameters in each simulation (e.g., the ability to pass in a multivariate parameter set for each simulation). See the vignette, "Working with model parameters."
BUG FIXES
- When calling
plot
on anetsim
object, the arguments in the ellipsis (...
) are now correctly passed to thebase::plot
call. - When trying to use the built-in
group
attribute,netsim
will now output a more explicit error if the values used are not only1
and2
. - Fixed the names of the target formation statistics in
netdx
whenedapprox == FALSE
that were causing the plotting functions to misbehave. - Simplification of the
set_transmat
function removing the assumption thatdat$stats$transmat
was to exist only ifat != 2
(thanks to @thednainus). - More consistent formation and dissolution statistics print between
netdx
andnetsim
. - Removed duplication in the printing of the parameters when a parameter was defined both as fixed and as random.
- When using custom
netsim
modules withtype == NULL
, some built-in modules no longer stop because they requiredtype
to be a string. - Fixed issue with
Error
,Warning
orMessage
innetsim
printing twice. - Fixed problem with unique ID counter not saved by
saveout.net
, resulting in the unique ids to start a 1 again when restarting a model from a previous simulation.
Other
- The new home for EpiModel on Github is: https://github.com/EpiModel/EpiModel. It was previously located on the
statnet
organization on Github.
NEW FEATURES
- Summary network statistics for
netsim
class objects (epidemic simulations) are now available whentergmLite
is used. Previously these network statistics were only available whentergmLite = FALSE
but updates to thenetworkLite
class intergmLite
made this possible. These network stats are output withsave.nwstats
andnwstats.formula
arguments incontrol.net
. - Developed a general storage and printing mechanism for the recently developed random parameterization interface. See the help page
help("param.net")
. - Cleaned up the handling of the initial network simulation in
initialize.net
, so that the user-facing code in that function is more readable, and the more complex code is put insim_nets_t1
.
BUG FIXES
- Addressed errors in handling cross-sectional network simulations embedded within a dynamic epidemic model (e.g., contacts that last the length of one time step, specified by
duration = 1
indissolution_coefs
).
NEW FEATURES
- Added new
update_params
function to add new parameters to an existing list of network parameters specified inparam.net
. This aids in workflows that distinguish fixed parameters versus varying parameters that may change across scenarios or simulations. - Added new general interface for random parameters in network models that allows randomly drawing a parameter value from a specified statistical distribution, where the distribution may either be a sampling of discrete values or a factory function for any of R's random statistical distribution functions. See help file for
generate_random_params
for examples. - Implemented a standardized approach with helper functions for setting core attributes (those nodal attributes which should be present in any workflows) in network models. This functionality is specified with
append_core_attr
function in the initialization and arrival modules in any extension models. This includes a standardized implementation of persistent, unique IDs as an attribute that remains constant for nodes even with open population models.
BUG FIXES
- With the use of a standardized core attribute framework that now correctly handles unique IDs in all models, now the transmission matrix objects output from any network model work consistently and correctly for both closed population and open population models.
- For DCM models with
dt < 1
, fixNA
output for any.flow
variables. - Reduce complexity of some unit tests that were stochastically generating errors due to ERGM MCMC estimation problems.
- Fix problem with temporally extended status variables in network models (i.e., tracking of disease status history across time steps) by simplifying the general approach that works across built-in and extension model types.
OTHER
- Reimplemented the handling of relational age diagnostics in
netdx
, with updated numerical summaries inprint.netdx
and visuals inplot.netdx
. Because relational ages are left-censored for any edges that existed at time zero, this led to a misleading diagnostic that ages were lower than the targeted durations. Imputation of a start time for those edges was added, with the option inplot.netdx
to visualize with imputed start times (default = TRUE) or not. - More consistent approach to trimming unneeded environmental data from ERGM objects implemented with
statnet.common::trim_env()
, used innetest
. - Reimplemented the
netest
"edges dissolution approximation" for efficient estimation of a temporal ERGM via a cross-sectional ERGM estimation with adjustment of formation model coefficients (seenetest
help page). This new approach further reduces bias in the approximation method, plus now allows for non-nested dissolution models (i.e., dissolution formula does not need to be a subset of the formation formula).
NEW FEATURES
- Implemented an error catching approach for
netsim
so that epidemic modules
with errors or warnings are clearly identified in the console. - Allow saving the transmission matrix with
save.transmat
incontrol.net
independently of using tergmLite methods (previously use of tergmLite did not
allow for saving these data). - Added an
infstat
parameter to the internaldiscord_edgelist
function used
in the infection module, to allow for arbitrary specification of which disease
statuses are considered infectious for the purpose of dyad discordance. - Added ability to vary node size in
plot.netsim
withtype = 'network'
with
vertex.cex
parameter.
BUG FIXES
- Fix issue for
plot.netdx
when plot legend set toFALSE
. - Updated
print.netsim
that does not error when displaying new epidemic
modules for extension models. - Use appropriate tergmLite resimulation methods for
netsim
for networks with
duration of 1 (i.e., one-time contacts handled with cross-sectional ERGMs).
OTHER
- Further minor edits/updates to EpiModel 2.0 migration documentation (posted on
http://epimodel.org/).
- This release introduces a major update to the EpiModel package infrastructure and application programming interface for both built-in models (primarily used for teaching purposes) and extension models (primarily used for research purposes). The major substantive changes are summarized in a EpiModel 1.x to EpiModel 2.0 migration guide on our primary website: https://epimodel.org/.