# 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.

eval_diff(t=0)[source]

Evaluates derivatives. Returns a dictionary.

evalf_eq(eq, t=0)[source]

Evaluates an sympy expression.

evalf_leq(name, t=0)[source]

Evaluates a lambdified expression.

Parameters
• name – name of the lambdified expresion

• t – t values

Returns

evaluation

get()[source]

Retrieves all values.

get_index(name)[source]

Returns the index of a name (True or False, position).

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).

to_dot(verbose=False, full=False)[source]

Produces a graph in DOT format.

to_rst()[source]

Returns a string formatted in RST.

update(**values)[source]

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.

R0(t=0)[source]

Returns R0 coefficient.

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

iterate2array(n=10, t=0, derivatives=False)[source]

Evalues the quantities for n iterations. Returns matrices.

Parameters
• n – number of iterations

• t – first t

• derivatives – returns the derivative as well

Returns

quantities or (quantities, derivatives) if derivatives is True

## 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

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 (see CovidSIR).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$

$\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