File:Kevaan 2020 koronavirus aalto suomessa simulaatio 2.svg

Original file(SVG file, nominally 1,228 × 535 pixels, file size: 66 KB)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

edit
Description
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

    1. covid 19 finland spring 2020 epidemy R0 and time to peak simu test
    2. WARNING: very coarse model and code has full simplistic assumptions
    3. for educational purposes
    4. not exact model
    5. intuitive model
  1. alpha draft edition r 0004
    1. Kevään 2020 Suomen koronavirusaaallon simulaatio
    2. Huomaa:
    3. Perustuu erittäin karkeisiin oletuksiin
    4. Tässä yritetty tekemään vain hyvin yksinkertainen malli opetustarkoituksiin
    5. 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

    1. 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]


  1. tap, ptap
  1. 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

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

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

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


  1. ax.xaxis.set_major_formatter(NullFormatter())
  2. 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")


  1. plt.plot(x,s_sairaalassa, 'y--', linewidth=2, label="Sairaalassa")
  2. plt.plot(x,s_teholla, 'r--',linewidth=2,label="Teholla")
  3. plt.plot(x,s_uusia_kuolleita, 'b--',linewidth=2,label="Uusia kuolleita")
  4. plt.plot(x,s_uusia_tapauksia, 'g--',linewidth=2,label="Uudet tapaukset")
  5. plt.plot(x,paivittaiset_tapaukset, color='#7f3f00',linewidth=1, label="Uudet tapaukset - oikeat")


  1. plt.plot(x,s_parantuneita, 'g--',label="Parantuneita tai pitkäaikainen korona")
  1. plt.plot(x,s_kuolleita, 'g--',label=laapeli1)


  1. plt.plot(x,s_sairaana, 'g--',label=laapeli1)
  2. plt.plot(x,paivittaiset_tapaukset, 'r', label="Kaikki tapaukset")



  1. plt.plot(x,s_tapauksia, 'g--',label=laapeli1)
  2. 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
I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
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/TimeThumbnailDimensionsUserComment
current15:55, 10 August 2020Thumbnail for version as of 15:55, 10 August 20201,228 × 535 (66 KB)Merikanto (talk | contribs)Update on graph data
15:40, 10 August 2020Thumbnail for version as of 15:40, 10 August 2020966 × 459 (62 KB)Merikanto (talk | contribs)Update of graph: reference data
14:15, 10 August 2020Thumbnail for version as of 14:15, 10 August 2020896 × 503 (53 KB)Merikanto (talk | contribs)Change of layout aan curves
13:02, 10 August 2020Thumbnail for version as of 13:02, 10 August 2020825 × 523 (53 KB)Merikanto (talk | contribs)Errors
12:48, 10 August 2020Thumbnail for version as of 12:48, 10 August 2020840 × 568 (56 KB)Merikanto (talk | contribs)Uploaded own work with UploadWizard

There are no pages that use this file.

Metadata