Base implementation for SIR models¶
BaseSIR¶
- class aftercovid.models._base_sir.BaseSIR(p, q, c=None, eq=None, **kwargs)[source]¶
Base model for SIR models.
- Parameters:
p – list of [(name, initial value or None, comment)] (parameters)
q – list of [(name, initial value or None, comment)] (quantities)
c – list of [(name, initial value or None, comment)] (constants)
eq – equations
- property C¶
Returns the quantities
- property P¶
Returns the parameters
- property Q¶
Returns the quantities
- property cst_names¶
Returns the list of constants names (unsorted).
- property cst_param¶
Returns a dictionary with the constant and the parameters.
- enumerate_edges()[source]¶
Enumerates the list of quantities contributing to others. It ignores constants.
- evalf_leq(name, t=0)[source]¶
Evaluates a lambdified expression.
- Parameters:
name – name of the lambdified expresion
t – t values
- Returns:
evaluation
- property names¶
Returns the list of names.
- property param_names¶
Returns the list of parameters names (unsorted).
- property params_dict¶
Returns the list of parameters names in a dictionary.
- property quantity_names¶
Returns the list of quantities names (unsorted).
- vect(t=0, out=None, derivative=False)[source]¶
Returns all values as a vector.
- Parameters:
t – time t
out – alternative output array in which to place the result. It must have the same shape as the expected output.
derivative – returns the derivatives instead of the values
- Returns:
values or derivatives
- property vect_names¶
Returns the list of names.
BaseSIRSimulation¶
- class aftercovid.models._base_sir_sim.BaseSIRSimulation[source]¶
Common methods about simulation for SIR models.
- eqsign(eqname, name)[source]¶
Returns the sign of the second derivative for equation eqname against name.
- Parameters:
eqname – equation name
name – symbol name
- Returns:
boolean
- iterate(n=10, t=0, derivatives=False)[source]¶
Evalues the quantities for n iterations. Returns a list of dictionaries. If derivatives is True, it returns two dictionaries.
- Parameters:
n – number of iterations
t – first t
derivatives – returns the derivative as well
- Returns:
iterator on dictionaries
BaseSIREstimation¶
- class aftercovid.models._base_sir_estimation.BaseSIREstimation[source]¶
Common methods about training, predicting for SIR models.
- fit(X, y, t=0, max_iter=100, learning_rate_init=0.1, lr_schedule='constant', momentum=0.9, power_t=0.5, early_th=None, min_threshold=None, max_threshold=None, verbose=False)[source]¶
Fits a model
BaseSIR
.- Parameters:
X – known values for every quantity at time t, every column is mapped to the list returned by
quantity_names
y – known derivative for every quantity at time t, comes in the same order as X, both X and y have the same shape.
t – implicit feature
max_iter – number of iteration
learning_rate_init – see
SGDOptimizer
lr_schedule – see
SGDOptimizer
momentum – see
SGDOptimizer
power_t – see
SGDOptimizer
early_th – see
SGDOptimizer
verbose – see
SGDOptimizer
min_threshold – see
SGDOptimizer
max_threshold – see
SGDOptimizer
The training needs two steps. The first one creates a training datasets. The second one estimates the coefficients by using a stochastic gradient descent (see
SGDOptimizer
). Let’s use a SIR model (seeCovidSIR
).as an example. Let’s denote the parameters as \(\Omega\) and \(Z_1=S\), …, \(Z_4=R\). The model is defined by \(\frac{dZ_i}{dt} = f_i(\Omega, Z)\) where \(Z=(Z_1, ..., Z_4)\). y is used to compute the expected derivates \(\frac{dZ_i}{dt}\). The loss function is defined as:\[L(\Omega,Z) = \sum_{i=1}^4 \left( f_i(\Omega,Z) - \frac{dZ_i}{dt}\right)^2\]Then the gradient is:
\[\frac{\partial L(\Omega,Z)}{\partial\Omega} = 2 \sum_{i=1}^4 \frac{\partial f_i(\Omega,Z)}{\partial\Omega} \left( f_i(\Omega,Z) - \frac{dZ_i}{dt} \right)\]A stochastic gradient descent takes care of the rest.
- predict(X, t=0)[source]¶
Predicts the derivative at time t.
- Parameters:
X – known values for every quantity at time t, every column is mapped to the list returned by
quantity_names
t – implicit feature
- Returns:
predictive derivative
- score(X, y, t=0)[source]¶
Scores the predictions. Returns L2 norm divided by the number of rows.
- Parameters:
X – known values for every quantity at time t, every column is mapped to the list returned by
quantity_names
y – expected values
t – implicit feature
- Returns:
predictive derivative
- score_l1(X, y, t=0)[source]¶
Scores the predictions. Returns L1 norm divided by the number of rows and the population.
- Parameters:
X – known values for every quantity at time t, every column is mapped to the list returned by
quantity_names
y – expected values
t – implicit feature
- Returns:
predictive derivative