File:Kevaan 2020 koronavirus aalto suomessa simulaatio 2.svg
Original file (SVG file, nominally 1,228 × 535 pixels, file size: 66 KB)
Captions
Summary
[edit]DescriptionKevaan 2020 koronavirus aalto suomessa simulaatio 2.svg |
Suomi: Kevään 2020 koronavirusaallonSimulaatio. Laadittu malli on erittäin karkea eikä
mene täysin kuluneen epidemian mukaan. Simulaatio antaa suuntaa-antavia tuloksia. |
Date | |
Source | Own work |
Author | Merikanto |
Attempt to write simplistic Python covid-19 simulation: new cases, in hospital, in icu, daily deaths.
Model of this simulation is very coarse, for educational purposes only.
Code
- covid 19 finland spring 2020 epidemy R0 and time to peak simu test
- WARNING: very coarse model and code has full simplistic assumptions
- for educational purposes
- not exact model
- intuitive model
- alpha draft edition r 0004
-
- Kevään 2020 Suomen koronavirusaaallon simulaatio
- Huomaa:
- Perustuu erittäin karkeisiin oletuksiin
- Tässä yritetty tekemään vain hyvin yksinkertainen malli opetustarkoituksiin
- joka ei täysin vastaa epidemian 1. aallon kulkua
-
import math as math
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.dates as mdates
from matplotlib.ticker import NullFormatter
from matplotlib.dates import MonthLocator, DateFormatter
- simun param
a_tapauksia=1 ## tapauksia alussa
a_huippuaika=30 ## menoaika tautihuippuun
a_ro=2.3 ## r0 alussa
a_laskuro=0.7 ## r0 huipun jälkeen
a_tau=5.0 ## tartutusaika
datafilename="kases2.csv"
casescolumn="Confirmed"
deathscolumn='Deaths'
dfin = pd.read_csv(datafilename, sep=';')
tapaukset00=dfin[casescolumn]
kuolemat00=dfin[deathscolumn]
sairaalassa00=dfin['Sairaalassa']
teholla00=dfin['Teholla']
dfin['Date'] = pd.to_datetime(dfin['Date'], format='%Y-%m-%d')
dfin['Dateonly'] = dfin['Date'].dt.date
dates00=dfin['Dateonly']
qtapaukset=np.array(tapaukset00)
qkuolemat=np.array(kuolemat00)
len1=len(qtapaukset)
dailycases00= [0] * len1
dailydeaths00= [0] * len1
for n in range(1,(len1-1)):
dailycases00[n]=qtapaukset[n]-qtapaukset[n-1]
if (dailycases00[n]<0): dailycases00[n]=0
dailydeaths00[n]=qkuolemat[n]-qkuolemat[n-1]
if (dailydeaths00[n]<0): dailydeaths00[n]=0
qpaivittaiset_tapaukset=np.array(dailycases00)
qpaivittaiset_kuolemat=np.array(dailydeaths00)
qsairaalassa=np.array(sairaalassa00)
qteholla=np.array(teholla00)
maara=120
tapaukset=qtapaukset[0:maara]
paivat=dates00[0:maara]
teholla=qteholla[0:maara]
sairaalassa=qsairaalassa[0:maara]
paivittaiset_tapaukset=qpaivittaiset_tapaukset[0:maara]
paivittaiset_kuolemat=qpaivittaiset_kuolemat[0:maara]
- tap, ptap
- quit(0)
x=np.linspace(0,maara,maara)
s_uusia_tapauksia=np.linspace(0,maara,maara)
s_tapauksia=np.linspace(0,maara,maara)
s_sairaana=np.linspace(0,maara,maara)
s_parantuneita=np.linspace(0,maara,maara)
s_kuolleita=np.linspace(0,maara,maara)
s_uusia_parantuneita=np.linspace(0,maara,maara)
s_uusia_kuolleita=np.linspace(0,maara,maara)
s_sairaalassa=np.linspace(0,maara,maara)
s_teholla=np.linspace(0,maara,maara)
s_uudet_tapaukset_2=np.linspace(0,maara,maara)
for n in range(0, maara):
s_tapauksia[n]=0
s_uusia_tapauksia[n]=0
s_tapauksia[n]=0
s_sairaana[n]=0
s_parantuneita[n]=0
s_kuolleita[n]=0
s_uusia_parantuneita[n]=0
s_uusia_kuolleita[n]=0
s_teholla[n]=0
s_sairaalassa[n]=0
s_uudet_tapaukset_2[n]=0
k_tapauksia=a_tapauksia
k_huippuaika=a_huippuaika
k_ro=a_ro
k_laskuro=a_laskuro
k_tau=a_tau
k_uusia_tapauksia=1
k_parantumisaika=14
k_sairaana=0
k_kuolleita=0
k_parantuneita=0
k_kuolinosuus=0.15
k_parantumisosuus=(1-k_kuolinosuus)
k_parantuvat=0
k_kuolevat=0
k_sairaalassa=0
k_teholla=0
k_uudet_2=0
- maara=10
for n in range(1, maara):
k_muutos=k_uusia_tapauksia*(math.log(k_ro)/k_tau)
#print (k_muutos)
k_uusia_tapauksia=k_uusia_tapauksia+k_muutos
k_tapauksia=k_tapauksia+k_uusia_tapauksia
#print (n, k_tapauksia)
if(n>k_huippuaika): k_ro=k_laskuro
s_uusia_tapauksia[n]=k_uusia_tapauksia
s_tapauksia[n]=k_tapauksia
## sairaana
#k_sairaana=k_sairaana+k_uusia_tapauksia
s_sairaana[n]=k_uusia_tapauksia+s_sairaana[n-1]
k_sairaana=s_sairaana[n]
if(n>1):
k_poistuvat=s_sairaana[n-1]*0.04
#k_poistuvat=s_sairaana[n-5]*0.035
k_parantuvat=k_poistuvat*k_parantumisosuus
k_kuolevat=k_poistuvat*k_kuolinosuus
k_sairaana=k_sairaana-k_poistuvat
k_parantuneita=k_parantuneita+k_parantuvat
k_kuolleita=k_kuolleita+k_kuolevat
k_uudet_2=k_sairaana*0.11
k_sairaalassa=k_sairaana*0.225
k_teholla=k_sairaalassa*0.35
if(k_sairaana<0): k_sairaana=0
s_sairaana[n]=k_sairaana
s_sairaalassa[n]=k_sairaalassa
s_teholla[n]=k_teholla
s_kuolleita[n]=k_kuolleita
s_parantuneita[n]=k_parantuneita
s_uusia_kuolleita[n]=k_kuolevat
s_uusia_parantuneita[n]=k_parantuvat
s_uudet_tapaukset_2[n]=k_uudet_2
laapeli1="Simulaatio, oletukset: \n Nousuaika "+str(a_huippuaika)+" päivää \n Alussa R0="+str("2.0")+ "\n Huipun jälkeen Rt="+str(a_laskuro)
laapeli1="Simu"
plt.title("Kevään 2020 koronavirusaallon simulaatio", fontsize=20)
- plt.suptitle("Vain simulaatio, ei tarkka epidemian malli", fontsize=14)
plt.xlabel("Päivämäärä", fontsize=16)
plt.ylabel("Lukumäärä", fontsize=16)
plt.xticks(fontsize=15 )
plt.yticks(fontsize=15 )
ax = plt.gca()
- ax.xaxis.set_major_locator(MonthLocator())
ax.xaxis.set_minor_locator(MonthLocator(bymonthday=15))
formatter = mdates.DateFormatter("%d.%m")
ax.xaxis.set_major_formatter(formatter)
locator = mdates.DayLocator(bymonthday=1)
ax.xaxis.set_major_locator(locator)
- ax.xaxis.set_major_formatter(NullFormatter())
- ax.xaxis.set_minor_formatter(DateFormatter('%b'))
print(ax.xaxis.get_major_locator())
plt.plot(paivat,paivittaiset_tapaukset, color='#7f3f00',linewidth=1, label="Uudet tapaukset - oikeat")
plt.plot(paivat,paivittaiset_kuolemat, color='#000000',linewidth=1, label="Päivittäiset kuolemat - oikeat")
plt.plot(paivat,sairaalassa, 'y--',linewidth=1,label="Sairaalassa - oikeat")
plt.plot(paivat,teholla, 'r--',linewidth=1,label="Teholla - oikeat")
plt.plot(paivat,s_sairaalassa, 'y--', linewidth=2, label="Sairaalassa")
plt.plot(paivat,s_teholla, 'r--',linewidth=2,label="Teholla")
plt.plot(paivat,s_uusia_kuolleita, color='#000000', linestyle='--',linewidth=2,label="Uusia kuolleita")
plt.plot(paivat,s_uudet_tapaukset_2, 'g--',linewidth=2,label="Uudet tapaukset")
- plt.plot(x,s_sairaalassa, 'y--', linewidth=2, label="Sairaalassa")
- plt.plot(x,s_teholla, 'r--',linewidth=2,label="Teholla")
- plt.plot(x,s_uusia_kuolleita, 'b--',linewidth=2,label="Uusia kuolleita")
- plt.plot(x,s_uusia_tapauksia, 'g--',linewidth=2,label="Uudet tapaukset")
- plt.plot(x,paivittaiset_tapaukset, color='#7f3f00',linewidth=1, label="Uudet tapaukset - oikeat")
- plt.plot(x,s_parantuneita, 'g--',label="Parantuneita tai pitkäaikainen korona")
- plt.plot(x,s_kuolleita, 'g--',label=laapeli1)
- plt.plot(x,s_sairaana, 'g--',label=laapeli1)
- plt.plot(x,paivittaiset_tapaukset, 'r', label="Kaikki tapaukset")
- plt.plot(x,s_tapauksia, 'g--',label=laapeli1)
- plt.plot(x,tapaukset, 'r', label="Kaikki tapaukset")
plt.legend(fontsize=14)
plt.show()
Data
Date;Confirmed;Recovered;Deaths;Sairaalassa;Teholla
2020-02-26;2;1;0;0;0
2020-02-27;2;1;0;0;0
2020-02-28;2;1;0;0;0
2020-02-29;3;1;0;0;0
2020-03-01;6;1;0;0;0
2020-03-02;6;1;0;0;0
2020-03-03;6;1;0;0;0
2020-03-04;6;1;0;0;0
2020-03-05;12;1;0;0;0
2020-03-06;15;1;0;0;0
2020-03-07;15;1;0;0;0
2020-03-08;23;1;0;0;0
2020-03-09;30;1;0;0;0
2020-03-10;40;1;0;0;0
2020-03-11;59;1;0;0;1
2020-03-12;59;1;0;0;3
2020-03-13;155;1;0;0;3
2020-03-14;225;1;0;0;3
2020-03-15;244;10;0;0;3
2020-03-16;277;10;0;0;3
2020-03-17;321;10;0;0;3
2020-03-18;336;10;0;0;4
2020-03-19;400;10;0;0;5
2020-03-20;450;10;0;17;5
2020-03-21;523;10;1;30;8
2020-03-22;626;10;1;43;12
2020-03-23;700;10;1;50;13
2020-03-24;792;10;1;73;17
2020-03-25;880;10;3;82;22
2020-03-26;958;10;5;96;24
2020-03-27;1041;10;7;109;32
2020-03-28;1167;10;9;112;31
2020-03-29;1240;10;11;134;41
2020-03-30;1352;10;13;143;49
2020-03-31;1418;10;17;137;56
2020-04-01;1446;10;17;159;62
2020-04-02;1518;300;19;160;65
2020-04-03;1615;300;20;180;72
2020-04-04;1882;300;25;187;73
2020-04-05;1927;300;28;209;76
2020-04-06;2176;300;27;228;81
2020-04-07;2308;300;34;231;83
2020-04-08;2487;300;40;239;82
2020-04-09;2605;300;42;244;82
2020-04-10;2769;300;48;236;81
2020-04-11;2905;300;49;235;80
2020-04-12;2974;300;56;235;77
2020-04-13;3064;300;59;230;74
2020-04-14;3161;300;64;232;75
2020-04-15;3237;300;72;226;75
2020-04-16;3369;1700;75;215;76
2020-04-17;3489;1700;82;208;75
2020-04-18;3681;1700;90;199;70
2020-04-19;3783;1700;94;192;68
2020-04-20;3868;2000;98;209;67
2020-04-21;4014;2000;141;202;63
2020-04-22;4129;2000;149;199;63
2020-04-23;4284;2000;172;206;60
2020-04-24;4395;2500;177;199;61
2020-04-25;4475;2500;186;190;60
2020-04-26;4576;2500;190;189;62
2020-04-27;4695;2500;193;187;56
2020-04-28;4740;2800;199;200;56
2020-04-29;4906;2800;206;208;51
2020-04-30;4995;3000;211;187;48
2020-05-01;5051;3000;218;185;49
2020-05-02;5176;3000;220;182;52
2020-05-03;5254;3000;230;185;49
2020-05-04;5327;3500;240;197;49
2020-05-05;5412;3500;246;195;48
2020-05-06;5573;3500;252;188;44
2020-05-07;5673;3500;255;174;44
2020-05-08;5738;4000;260;169;45
2020-05-09;5880;4000;265;161;45
2020-05-10;5962;4000;267;162;45
2020-05-11;5984;4000;271;161;44
2020-05-12;6003;4300;275;152;34
2020-05-13;6054;4300;284;157;35
2020-05-14;6145;4300;287;143;33
2020-05-15;6228;5000;293;118;32
2020-05-16;6286;5000;297;120;30
2020-05-17;6347;5000;298;118;29
2020-05-18;6380;5000;300;117;34
2020-05-19;6399;5000;301;112;25
2020-05-20;6443;4800;304;118;20
2020-05-21;6493;4800;306;110;22
2020-05-22;6537;4800;306;113;21
2020-05-23;6568;4800;306;104;21
2020-05-24;6579;4800;307;106;19
2020-05-25;6599;5100;308;104;18
2020-05-26;6628;5100;312;95;11
2020-05-27;6692;5100;313;87;11
2020-05-28;6743;5500;313;83;11
2020-05-29;6776;5500;314;74;10
2020-05-30;6826;5500;316;71;11
2020-05-31;6859;5500;320;68;10
2020-06-01;6885;5500;318;68;9
2020-06-02;6887;5500;320;63;9
2020-06-03;6911;5500;321;51;7
2020-06-04;6911;5800;322;43;7
2020-06-05;6941;5800;322;43;8
2020-06-06;6964;5800;322;39;7
2020-06-07;6981;5800;323;40;6
2020-06-08;7001;5800;323;38;6
2020-06-09;7025;5800;324;28;4
2020-06-10;7040;5800;324;28;4
2020-06-11;7064;6200;325;25;4
2020-06-12;7073;6200;325;23;3
2020-06-13;7087;6200;325;26;1
2020-06-14;7104;6200;326;26;1
2020-06-15;7108;6200;326;22;3
2020-06-16;7112;6200;326;22;2
2020-06-17;7117;6200;326;26;2
2020-06-18;7119;6200;326;26;2
2020-06-19;7133;6200;326;26;2
2020-06-20;7142;6200;326;26;2
2020-06-21;7143;6200;326;26;2
2020-06-22;7144;6400;327;21;2
2020-06-23;7155;6400;327;21;2
2020-06-24;7167;6600;327;22;2
2020-06-25;7172;6600;327;22;2
2020-06-26;7191;6600;328;24;1
2020-06-27;7198;6600;328;24;1
2020-06-28;7198;6600;328;24;1
2020-06-29;7209;6600;328;23;0
2020-06-30;7214;6600;328;23;0
2020-07-01;7236;6700;328;24;0
2020-07-02;7241;6700;328;24;0
2020-07-03;7242;6700;329;20;0
2020-07-04;7248;6700;329;20;0
2020-07-05;7253;6700;329;20;0
2020-07-06;7257;6700;329;19;1
2020-07-07;7262;6700;329;19;1
2020-07-08;7265;6800;329;19;2
2020-07-09;7273;6800;329;19;2
2020-07-10;7279;6800;329;6;0
2020-07-11;7291;6800;329;6;0
2020-07-12;7294;6800;329;6;0
2020-07-13;7295;6800;329;8;1
2020-07-14;7301;6800;329;8;1
2020-07-15;7296;6880;328;7;0
2020-07-16;7293;6880;328;7;0
2020-07-17;7301;6880;328;6;1
2020-07-18;7318;6880;328;6;1
2020-07-19;7335;6880;328;6;1
2020-07-20;7340;6880;328;6;1
2020-07-21;7351;6880;328;6;1
2020-07-22;7362;6920;328;4;0
2020-07-23;7372;6920;328;4;0
2020-07-24;7380;6920;329;4;0
2020-07-25;7388;6920;329;4;0
2020-07-26;7393;6920;329;4;0
2020-07-27;7398;6920;329;5;0
2020-07-28;7404;6920;329;5;0
2020-07-29;7414;6950;329;5;0
2020-07-30;7423;6950;329;5;0
2020-07-31;7432;6950;329;5;0
2020-08-01;7443;6950;329;5;0
2020-08-02;7453;6950;329;5;0
2020-08-03;7466;6950;329;5;0
2020-08-04;7483;6950;331;5;0
2020-08-05;7512;6980;331;5;0
2020-08-06;7532;6980;331;5;0
2020-08-07;7554;6980;331;5;0
Licensing
[edit]- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 15:55, 10 August 2020 | 1,228 × 535 (66 KB) | Merikanto (talk | contribs) | Update on graph data | |
15:40, 10 August 2020 | 966 × 459 (62 KB) | Merikanto (talk | contribs) | Update of graph: reference data | ||
14:15, 10 August 2020 | 896 × 503 (53 KB) | Merikanto (talk | contribs) | Change of layout aan curves | ||
13:02, 10 August 2020 | 825 × 523 (53 KB) | Merikanto (talk | contribs) | Errors | ||
12:48, 10 August 2020 | 840 × 568 (56 KB) | Merikanto (talk | contribs) | Uploaded own work with UploadWizard |
You cannot overwrite this file.
File usage on Commons
There are no pages that use this file.
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Width | 982.08pt |
---|---|
Height | 427.68pt |