Seite 1 von 1

Pandemic Calculator

Verfasst: Mo 23. Mär 2020, 21:48
von Yukterez
Bild

Bild This is the english translation.   Bild Die deutsche Version befindet sich auf pandemic.yukterez.net
Bild

SIRD-Model
Bild

T: timespan for the integration, E0: inhabitants, I0: infected inhabitants, R0: recovered and immunized inhabitants, b0 and b1: initial and final transmission rate, tb: timespan for the change in the transmission rate, tu: timespan before the transmission rate starts to change, d: sickness duration, h: hospitalization rate, x: death rate.

The transmission rate can be larger that the effective spread rate; the first describes how many people per day on average receive a viral load from an infected person, while the latter says how many of those get indeed infected.

Code: Alles auswählen

(* pandemic.yukterez.net *)

T  = 300;                                              (* Zeitraum *)
E0 = 83000000;                                        (* Einwohner *)

I0 = 66;                                             (* Infizierte *)
R0 = 0;                                                (* Geheilte *)

b0 = 30/100;                         (* initiale Transmissionsrate *)
b1 = 30/100;                           (* finale Transmissionsrate *)

tu = 15;               (* Zeitspanne der ungehinderten Ausbreitung *)
tb = 5;                                     (* Zeitspanne b0 -> b1 *)

d  = 30;                                        (* Krankheitsdauer *)
h  = 2/10;                                (* Hospitalisierungsrate *)
x  = 3/100;                                          (* Sterberate *)

f  = (b0-b1)/tb;                 (* Änderung der Transmissionsrate *)
τ  = t-tu;
B  = If[b0==b1, b0, If[b1<b0, Max[b1, b0-f τ], Min[b1, b0-f τ]]];
b  = Interpolation[Table[If[t<tu, b0, B], {t, 0, T, 1}]];

i0 = I0/E0;                           (* Fraktion der Angesteckten *)
r0 = R0/E0;                              (* Fraktion der Geheilten *)
s0 = 1-i0-r0;                         (* Fraktion der Ansteckbaren *)

DGL = {
s'[t] == -s[t] b[t] i[t],       (* Änderungsrate der noch Gesunden *)
i'[t] == s[t] b[t] i[t]-i[t]/d,   (* Änderungsrate der Infizierten *)
r'[t] == i[t]/d,                    (* Änderungsrate der Geheilten *)
s[0] == s0,
i[0] == i0,
r[0] == r0};

sol = Quiet[NDSolve[DGL, {s, i, r}, {t, 0, T+tu},
WorkingPrecision -> 48, MaxSteps -> Infinity,
InterpolationOrder -> All]];

max = Quiet[FindMaximum[i[t] /. sol, {t, 1}]]

Plot[{
Evaluate[E0 s[t] /. sol],                      (* noch gesund, rot *)
Evaluate[E0 i[t] /. sol],                        (* erkrankt, blau *)
Evaluate[h E0 i[t] /. sol],             (* hospitalisiert, schwarz *)
Evaluate[(1-x) E0 r[t] /. sol],             (* wieder gesund, grün *)
Evaluate[x E0 r[t] /. sol]                      (* gestorben, grau *)
}, {t, 0, T},
Frame -> True,
AxesOrigin -> {0, 0},
ImageSize -> 380,
PlotRange -> {All, {0, E0}},
ImagePadding -> {{50, 1}, {20, 10}},
PlotStyle -> {Red, Blue, Black, Green, Gray},
GridLines -> {{t/.max[[2]]}, {E0 max[[1]], E0/2}}]

Framed[Grid[Join[{{
"Tag         ", "Krank       ", "Tot         ",
"Spital      ", "Gesund      ", "Genesen     "
}}, {{" ", " ", " ", " ", " "}},
Table[{t,
Round[Evaluate[E0 i[t] /. sol][[1]]],
Round[Evaluate[x E0 r[t] /. sol][[1]]],
Round[Evaluate[h E0 i[t] /. sol][[1]]],
Round[Evaluate[E0 s[t] /. sol][[1]]],
Round[Evaluate[(1-x) E0 r[t] /. sol][[1]]]},
{t, 0, T, 1}]],
Alignment -> Left]]

Initial Conditions: Germany, February 29, 2020, best fit: here we assume that the lockdowns established on March 7 start to be effective after an average incubation delay of 1 week and decrease the intial transmission rate of 0.31 down to 0.15 within a period of 11 days in which the population gradually starts to obey the curfew. For a comparison with a constant transmission rate click here; plot:

Bild

x-axis: days; y-axis: persons, %; red: not infectected; blue: infected, black: hospitalized; green: recovered and immunized, gray: dead.
Coronavirus, Corona Virus, Covid-19, Sars-Cov-2, Equation, Formula, Exponential Growth, Pandemy Mathematics

Pandemic Calculator

Verfasst: Di 24. Mär 2020, 02:09
von Yukterez
Initial Conditions: Austria, March 23, 2020

Bild

Different transmission rates (b=1 means +100% per day):

Bild

Forecasts for further spread with 30%, 20% und 10% per day (color code as in the example above):

Bild

With a transmission rate of b=0.3 per day, the peak with 64% of the population simultaneously infected happens after 37 days (day 0 is March 23), with b=0.2 with 53% sick after 57 days and with b=0.1 with 30% sick after 127 days. The hospitalization rate is assumed to be 20%, and the sickness duration 1 month (those numbers may not be accurate, for the recent data see here). The largest uncertainty factor is the fact that not everybody who is sick gets tested and the possibility of reinfection, which if true would require the SISD-model instead of the SIRD-model.

Pandemic Calculator

Verfasst: Do 26. Mär 2020, 18:24
von Yukterez