File:Kuvitteellisen koronavirusaallon simulaatio 1.svg

Original file(SVG file, nominally 990 × 631 pixels, file size: 121 KB)

Captions

Captions

Add a one-line explanation of what this file represents

Summary

edit
Description
Suomi: Kuvitteellisen koronavirusaallon vaikutus tehohoitopaikkojen riittävyyteen.

Malli vain opetustarkoituksiin, ei ennustamiseen.

Simulaatio on laadittu melko yksinkertaisin oletuksin, eikä täysin vastaa tilannetta todellisessa epidemiassa.
Date
Source Own work
Author Merikanto

Python3 code of simulation

    1. Covid-19 epidemy simulation
    2. coarse model
  1. R0 and time to peak simu test
    1. WARNING: not forecast of prediction
    2. very coarse modeland code has lot of simplistic assumptions
    3. for educational purposes only
    4. not exact model
    5. intuitive model
  2. alpha draft edition r 0011.0000
  3. 07.03.2021
    1. Huomaa:
    2. Perustuu erittäin karkeisiin oletuksiin.
    3. Tässä yritetty tehdä vain hyvin yksinkertainen malli opetustarkoituksiin.
    4. Tämä malli ei ole ennuste ei täysin vastaa epidemian 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

ulkoinen_data=0

alkupaivamaara='2021-03-07' ## simulaation alkupvm

  1. alkupaivamaara='2021-01-09' ## simulaation alkupvm
  2. alkupaivamaara='2021-01-15' ## simulaation alkupvm

aikamaara=180

tehohoidon_kantokyky=170 ## icu care max 100, 200 300, 400, 500 sairaalahoidon_kantokyky=11000 ## hospital beds max tai 6800

a_tapauksia=800 ## tapauksia alussa a_huippuaika=40 ## menoaika tautihuippuun

  1. a_huippuaika=60 ## menoaika tautihuippuun
  1. a_ro=2.0
  1. a_ro=2.5
  2. a_ro=1.25

a_ro=1.25 ## r0 alussa

  1. a_ro=1.8
  2. a_ro=2.25
  3. a_ro=1.6

a_laskuro=0.85 ## r0 huipun jälkeen

    1. lukujen pohja: 6% sairaalaan, 1.5 % teholle


a_sairaalakerroin=0.06 ## sairaalaan joutuvien osuus a_tehokerroin=0.13 ## sairaalassa olijoista teholle a_kuolinkerroin=0.01 ## kuolevien osuus kaikista

a_tau=5.0 ## tartutusaika

      1. KEVÄT 2020
    1. kevään simun param yritety etsiä kokeilemalla
  1. a_tapauksia=5 ## tapauksia alussa
  2. a_huippuaika=25 ## menoaika tautihuippuun
  3. a_ro=2.387 ## r0 alussa
  4. a_laskuro=0.85 ## r0 huipun jälkeen
  5. a_tau=5.0 ## tartutusaika
  6. a_sairaalakerroin=0.045
  7. a_tehokerroin=0.35
  8. a_kuolinkerroin=0.033


  1. tap, ptap
  1. quit(0)

times1 = pd.date_range(alkupaivamaara , periods=aikamaara, freq='D')

x=np.linspace(0,aikamaara,aikamaara) s_uusia_tapauksia=np.linspace(0,aikamaara,aikamaara) s_tapauksia=np.linspace(0,aikamaara,aikamaara) s_sairaana=np.linspace(0,aikamaara,aikamaara) s_parantuneita=np.linspace(0,aikamaara,aikamaara) s_kuolleita=np.linspace(0,aikamaara,aikamaara) s_uusia_parantuneita=np.linspace(0,aikamaara,aikamaara) s_uusia_kuolleita=np.linspace(0,aikamaara,aikamaara) s_sairaalassa=np.linspace(0,aikamaara,aikamaara) s_teholla=np.linspace(0,aikamaara,aikamaara) s_sairaalaan_joutuneet=np.linspace(0,aikamaara,aikamaara) s_teholle_joutuneet=np.linspace(0,aikamaara,aikamaara)

s_uudet_tapaukset_2=np.linspace(0,aikamaara,aikamaara)

s_tehohoidon_kantokyky=np.linspace(0,aikamaara,aikamaara) s_sairaalahoidon_kantokyky=np.linspace(0,aikamaara,aikamaara)

s_ro=np.linspace(0,aikamaara,aikamaara)


for n in range(0, aikamaara): 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_teholle_joutuneet[n]=0 s_sairaalaan_joutuneet[n]=0 s_uudet_tapaukset_2[n]=0 s_tehohoidon_kantokyky[n]=tehohoidon_kantokyky s_sairaalahoidon_kantokyky[n]=sairaalahoidon_kantokyky s_ro[n]=a_ro


for n in range(a_huippuaika, aikamaara): s_ro[n]=a_laskuro



k_tapauksia=a_tapauksia k_huippuaika=a_huippuaika k_ro=a_ro k_laskuro=a_laskuro k_tau=a_tau k_uusia_tapauksia=a_tapauksia k_parantumisaika=14 k_sairaana=0 k_kuolleita=0 k_parantuneita=0 k_kuolinosuus=a_kuolinkerroin k_parantumisosuus=(1-k_kuolinosuus) k_parantuvat=0 k_kuolevat=0 k_sairaalassa=0 k_teholla=0 k_uudet_2=0 k_teholla_summa=0 k_sairaalassa_summa=0

  1. maara=10

for n in range(1, aikamaara): k_ro=s_ro[n] k_muutos=k_uusia_tapauksia*(math.log(k_ro)/k_tau) k_uusia_tapauksia=k_uusia_tapauksia+k_muutos k_tapauksia=k_tapauksia+k_uusia_tapauksia s_uusia_tapauksia[n]=k_uusia_tapauksia s_tapauksia[n]=k_tapauksia s_sairaana[n]=k_uusia_tapauksia+s_sairaana[n-1] k_sairaana=s_sairaana[n] if(n>1): k_poistuvat=0 k_parantuvat=0 k_kuolevat=0 if(n>14): k_poistuvat=s_sairaana[n-14]*0.04 k_parantuvat=k_poistuvat*k_parantumisosuus k_kuolevat=k_poistuvat*k_kuolinosuus if(n>1): 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*a_sairaalakerroin k_teholla=k_sairaalassa*a_tehokerroin k_sairaalassa_summa=k_sairaalassa_summa+k_sairaana*a_sairaalakerroin k_teholla_summa=k_teholla_summa+k_sairaalassa*a_tehokerroin

# tehohoidon kantokyky ylittyy if((s_teholla[n-1])>tehohoidon_kantokyky): k_kuolleita=k_kuolleita+k_uusia_tapauksia*a_sairaalakerroin*a_tehokerroin ## sairaalapaikkojen kantokyky ylittyy if((s_sairaalassa[n-1])>sairaalahoidon_kantokyky): k_kuolleita=k_kuolleita+k_uusia_tapauksia*a_sairaalakerroin*0.2


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



kohta=n-1

kaikki_kuolleet=int(s_kuolleita[kohta]) kaikki_tapaukset=int(s_tapauksia[kohta]) kuolleisuus_maksimimaara=int(max(s_uusia_kuolleita ) ) tapaukset_maksimimaara=int(max(s_uusia_tapauksia ) )

sairaalassa_maksimimaara=int(max(s_sairaalassa)) teholla_maksimimaara=int(max(s_teholla))

sairaalaan_joutuneita=int(k_sairaalassa_summa/14) teholle_joutuneita=int(k_teholla_summa/14)

sairaalassa_66=s_sairaalassa*0.66 sairaalassa_133=s_sairaalassa*1.33 sairaalassa_90=s_sairaalassa*0.90 sairaalassa_110=s_sairaalassa*1.1 sairaalassa_97=s_sairaalassa*0.97 sairaalassa_103=s_sairaalassa*1.03

teholla_66=s_teholla*0.66 teholla_133=s_teholla*1.33 teholla_90=s_teholla*0.90 teholla_110=s_teholla*1.1 teholla_97=s_teholla*0.97 teholla_103=s_teholla*1.03


print("Sairaalan joutuneita",sairaalaan_joutuneita) print("Teholle joutuneita",teholle_joutuneita)

print("Sairaalassa max",sairaalassa_maksimimaara) print("Teholla max",teholla_maksimimaara)


print("Kaikki tapaukset", kaikki_tapaukset) print("Kaikki kuolleet", kaikki_kuolleet) print ("Tapauksia päivässä tautihuipussa", tapaukset_maksimimaara) print ("Kuolleisuus päivässä huipussa", kuolleisuus_maksimimaara)


laapeli1="Oletukset: Nousuaika "+str(a_huippuaika)+" päivää. Alussa R0="+str(a_ro)+ " Huipun jälkeen R0="+str(a_laskuro) laapeli2="Oletukset: Kuolleisuus "+str(a_kuolinkerroin)+". Sairaalaan "+str(a_sairaalakerroin)+ ". Teholle "+str(a_tehokerroin)+ " sairaalasta." laapeli3="Tapauksia "+str(kaikki_tapaukset)+"\n Kuolleita "+str(kaikki_kuolleet) laapeli4="Sairaalaan "+str(sairaalaan_joutuneita)+" \n Teholle "+str(teholle_joutuneita)


ax = plt.gca()

fig = plt.gcf() fig.set_size_inches(11, 7, forward=True)

plt.title("Kuvitteellisen koronavirusaallon simulaatio", fontsize=20) plt.suptitle(laapeli1, fontsize=14,y=1)


plt.figtext(0.5, 0.02, laapeli2, ha="center", fontsize=13, bbox={"facecolor":"orange", "alpha":0.5, "pad":5}) plt.figtext(0.15, 0.7, laapeli3, ha="left", fontsize=16, bbox={"facecolor":"white", "alpha":0.5, "pad":5})

plt.figtext(0.23, 0.6, laapeli4, ha="center", fontsize=16, bbox={"facecolor":"white", "alpha":0.5, "pad":5})


  1. plt.xlabel("Päivä", fontsize=16)

plt.ylabel("Lukumäärä", fontsize=16) plt.xticks(fontsize=15 ) plt.yticks(fontsize=15 )

yyy1=s_uusia_tapauksia


plt.plot(times1,s_uusia_tapauksia, color="blue", linewidth=3,linestyle="--", label="Tapauksia/päivä")

plt.fill_between(times1,teholla_66,teholla_133, color='orange', alpha=0.25) plt.fill_between(times1,teholla_90,teholla_110, color='orange', alpha=0.25) plt.fill_between(times1,teholla_97,teholla_103, color='orange', alpha=0.25)

plt.plot(times1,s_teholla, color="red", linewidth=3, label="Teholla")

plt.fill_between(times1,sairaalassa_66,sairaalassa_133, color='yellow', alpha=0.25) plt.fill_between(times1,sairaalassa_90,sairaalassa_110, color='yellow', alpha=0.25) plt.fill_between(times1,sairaalassa_97,sairaalassa_103, color='yellow', alpha=0.25)

plt.plot(times1,s_sairaalassa, color="orange", linewidth=3, label="Sairaalassa") plt.plot(times1,s_uusia_kuolleita, color="black", linewidth=3, label="Päivit kuolleita")

  1. plt.plot(times1,s_kuolleita, color="black", linewidth=3, linestyle=":", label="Kuolleita")#


plt.plot(times1,s_tehohoidon_kantokyky, color="violet", linewidth=3,linestyle=":", label="Tehohoidon kantokyky")

  1. plt.plot(times1,s_sairaalahoidon_kantokyky, color="red", linewidth=3,linestyle="--", label="Sairaalahoidon kantokyky")


ax.xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.'))

plt.legend(fontsize=14) plt.show()




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.

(newest | oldest) View (newer 10 | ) (10 | 20 | 50 | 100 | 250 | 500)
Date/TimeThumbnailDimensionsUserComment
current13:55, 7 March 2021Thumbnail for version as of 13:55, 7 March 2021990 × 631 (121 KB)Merikanto (talk | contribs)Update
16:33, 26 February 2021Thumbnail for version as of 16:33, 26 February 20211,051 × 528 (120 KB)Merikanto (talk | contribs)Update of image
15:28, 8 January 2021Thumbnail for version as of 15:28, 8 January 2021990 × 630 (120 KB)Merikanto (talk | contribs)Upload
15:10, 12 December 2020Thumbnail for version as of 15:10, 12 December 20201,130 × 603 (119 KB)Merikanto (talk | contribs)Update of layout
14:57, 12 December 2020Thumbnail for version as of 14:57, 12 December 20201,139 × 599 (64 KB)Merikanto (talk | contribs)Update
08:18, 9 December 2020Thumbnail for version as of 08:18, 9 December 2020990 × 599 (61 KB)Merikanto (talk | contribs)Update
07:37, 9 December 2020Thumbnail for version as of 07:37, 9 December 2020839 × 498 (59 KB)Merikanto (talk | contribs)Update
14:56, 27 November 2020Thumbnail for version as of 14:56, 27 November 20201,004 × 594 (59 KB)Merikanto (talk | contribs)Update
08:44, 8 November 2020Thumbnail for version as of 08:44, 8 November 2020990 × 599 (58 KB)Merikanto (talk | contribs)Update of graph
15:03, 4 November 2020Thumbnail for version as of 15:03, 4 November 2020975 × 570 (62 KB)Merikanto (talk | contribs)Update
(newest | oldest) View (newer 10 | ) (10 | 20 | 50 | 100 | 250 | 500)

There are no pages that use this file.

Metadata