# CovidSIRDc¶

class aftercovid.models.CovidSIRDc[source]

Inspiration Modelling some COVID-19 data. This model considers that observed data are not the true ones.

$\begin{split}\begin{array}{rcl} S &=& S_{obs} (1 + a)\\ I &=& I_{obs} (1 + b)\\ R &=& R_{obs} (1 + c)\\ D &=& D_{obs} \end{array}\end{split}$

Where $$S$$, $$I$$, $$R$$ are $$R_{obs}$$ are observed. hidden, only $$S_{obs}$$, $$I_{obs}$$, The following equality should be verified: $$S + I + R + D = N = S_{obs} + I_{obs} + R_{obs} + D_{obs}$$. We also get from the previous equations:

$\begin{split}\begin{array}{rcl} dS &=& dS_{obs} (1 + a) = - \beta \frac{IS}{N} = - \beta \frac{I_{obs}S_{obs}}{N}(1+a)(1+b) \\ \Longrightarrow dS_{obs} &=& - \beta \frac{I_{obs}S_{obs}}{N}(1+b) \end{array}\end{split}$

And also:

$\begin{array}{rcl} dD &=& dD_{obs} = \nu I = \nu I_{obs} (1+b) \end{array}$

And as well:

$\begin{split}\begin{array}{rcl} dR &=& dR_{obs} (1 + c) = \mu I = \mu (1 + b) I_{obs} \\ \Longrightarrow dR_{obs} &=& - \nu I_{obs} \frac{1+b}{1+c} \end{array}\end{split}$

And finally:

$\begin{split}\begin{array}{rcl} dI &=& dI_{obs} (1 + b) = -dR - dS - dD = - \mu \frac{1 + b}{1+ c} I_{obs} - \nu (1+b) I_{obs} - - \beta I_{obs}\frac{S_{obs}}{N} (1 + a)(1 + b) \\ \Longrightarrow dI_{obs} &=& - \nu I_{obs} - \mu I_{obs} - \beta I_{obs}\frac{S_{obs}}{N} (1 + a) \end{array}\end{split}$

This model should still verify:

$\begin{split}\begin{array}{rcl} S_{obs} + I_{obs} + R_{obs} + D_{obs} &=& N = S + I + R + D \\ &=& S_{obs}(1+a) + I_{obs}(1+b) + R_{obs}(1+c) + D_{obs} \end{array}\end{split}$

That gives $$a S_{obs} + b I_{obs} + c R_{obs} = 0$$.

<<<

from aftercovid.models import CovidSIRDc

model = CovidSIRDc()
print(model.to_rst())


>>>

CovidSIRDc

Quantities

• S: personnes non contaminées

• I: nombre de personnes malades ou contaminantes

• R: personnes guéries (recovered)

• D: personnes décédées

Constants

• N: population

Parameters

• beta: taux de transmission dans la population

• mu: 1/. : durée moyenne jusque la guérison

• nu: 1/. : durée moyenne jusqu’au décès

• a: paramètre gérant les informations cachées (S)

• b: paramètre gérant les informations cachées (I)

• c: paramètre gérant les informations cachées (R)

Equations

$\begin{split}\begin{array}{l} \frac{dD}{dt} = I \nu \left(b + 1\right) \\ \frac{dI}{dt} = - I \mu - I \nu + \frac{I S \beta \left(a + 1\right)}{N} \\ \frac{dR}{dt} = \frac{I \mu \left(b + 1\right)}{c + 1} \\ \frac{dS}{dt} = - \frac{I S \beta \left(b + 1\right)}{N} \end{array}\end{split}$

SIRDc simulation and plotting

Visual representation:

See Base implementation for SIR models to get the methods common to SIRx models. This model is not really working better than CovidSIRD.

R0(t=0)[source]

Returns R0 coefficient. See CovidSIRD.R0

Tries to add reasonable noise to the quantities stored in X.

Parameters:

epsilon – amplitude

Returns:

new X

correctness(X=None)[source]

Returns $$a S_{obs} + b I_{obs} + c R_{obs} = 0$$.

Parameters:

X – None to use inner quantities

Returns:

a number

rnd()[source]

Draws random parameters. Not perfect.

update_abc(X=None, update=True, alpha=1.0, l1_ratio=0.5)[source]

Updates coefficients a, b, c so that method correctness returns 0. It uses ElasticNet.

Parameters:
• X – None to use inner quantities

• update – True to update to the coefficients or False to just return the results

• alpha – see ElasticNet

• l1_ratio – see ElasticNet

Returns:

dictionary