The design of ramp.xds
was based on a
mathematical framework, but it was motivated by the ideas of nimble
model building and scaling complexity. The software, like the framework,
is modular, but it was equally important for the software to be flexible
and extensible. Since it is impossible for any software to take on
everything all at once, it was necessary to make some important
decisions about how the software should handle the space of all possible
models.
The term model is used in so many ways that we have found it necessary to develop a specialized vocabulary to disambiguate some of the possible meanings in context. Two important definitions that we would like to use for mechanistic models are:
Model - A mechanistic model is any abstract, quantitative representation of a process.
Model - in
ramp.xds
, a model is defined by an
xds
object. It has defined all of the
parameters, initial values, and possibly a random number seed, and it
can be solve solved.
We must live with this ambiguity, but we would like to define some terms that can help us to make sense of all this complexity in context.
Model Family - what is colloquially referred to as a model in the code library is more accurately described as a model family. Each model family is defined by a set of states and transitions (i.e. as defined for one population stratum) that represent the true but unobservable state of a population, also known as latent states. Each model has a defined set of define parameters; the model family includes models with any reasonable parameter values.
Model families are defined for the endogenous variables and for autonomous systems with a single stratum
a model family thus includes all of the non-autonous systems with unspecified exogenous variables that could modify the parameters
a model also includes all related structured models that extend it.
Two models are also identical if one can be derived from another by a change of variables.
Each model can be represented as a directed graph with specialized edge types (e.g. simple flows; delayed flows): and two models belong to the same model family if their graphs are identical.
State Space Models - the latent states in a model are associated with a set of observable states, and an important part of a model definition is a set of functions that define an observation process mapping the latent states onto observable states.
Model Skill Set - a model’s skill set is defined as the set of observable quantities that are naturally represented by the latent states such that they can be computed without requiring extraneous information.
Module - a module in
ramp.xds
instatiates a model family in
ramp.xds
for one of the dynamical
components, and each module has been assigned a unique name. For
example, the 'macdonald'
model for adult mosquitoes
instantiates a non-extensible version of the Ross-Macdonald
model.
Trival Module - for each dynamical component, the trivial module lacks any variables, so it does not respond dynamically to other dynamical components. Each trivial model passes the required outputs to other models as a trace function.
Model building in ramp.xds
was
developed with the goal of building complex models by extending simple
ones. This proceeds in an orderly way through basic setup:
Choose the modules for each dynamical component;
Define the basic model structure;
The first step in building a model is to determine which modules to use for a study.
Each human (or vertebrate host) population can be stratified into an arbitrary number of sub-populations or strata.