File:Kuvitteellisen koronavirusaallon simulaatio 1.svg
Original file (SVG file, nominally 990 × 631 pixels, file size: 121 KB)
Captions
Summary
[edit]DescriptionKuvitteellisen koronavirusaallon simulaatio 1.svg |
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
-
- Covid-19 epidemy simulation
- coarse model
- R0 and time to peak simu test
- WARNING: not forecast of prediction
- very coarse modeland code has lot of simplistic assumptions
- for educational purposes only
- not exact model
- intuitive model
- alpha draft edition r 0011.0000
- 07.03.2021
-
- Huomaa:
- Perustuu erittäin karkeisiin oletuksiin.
- Tässä yritetty tehdä vain hyvin yksinkertainen malli opetustarkoituksiin.
- 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
- alkupaivamaara='2021-01-09' ## simulaation alkupvm
- 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
- a_huippuaika=60 ## menoaika tautihuippuun
- a_ro=2.0
- a_ro=2.5
- a_ro=1.25
a_ro=1.25 ## r0 alussa
- a_ro=1.8
- a_ro=2.25
- a_ro=1.6
a_laskuro=0.85 ## r0 huipun jälkeen
- 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
- KEVÄT 2020
- kevään simun param yritety etsiä kokeilemalla
- a_tapauksia=5 ## tapauksia alussa
- a_huippuaika=25 ## menoaika tautihuippuun
- a_ro=2.387 ## r0 alussa
- a_laskuro=0.85 ## r0 huipun jälkeen
- a_tau=5.0 ## tartutusaika
- a_sairaalakerroin=0.045
- a_tehokerroin=0.35
- a_kuolinkerroin=0.033
- tap, ptap
- 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
- 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})
- 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")
- 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")
- 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]- 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 | 13:55, 7 March 2021 | 990 × 631 (121 KB) | Merikanto (talk | contribs) | Update | |
16:33, 26 February 2021 | 1,051 × 528 (120 KB) | Merikanto (talk | contribs) | Update of image | ||
15:28, 8 January 2021 | 990 × 630 (120 KB) | Merikanto (talk | contribs) | Upload | ||
15:10, 12 December 2020 | 1,130 × 603 (119 KB) | Merikanto (talk | contribs) | Update of layout | ||
14:57, 12 December 2020 | 1,139 × 599 (64 KB) | Merikanto (talk | contribs) | Update | ||
08:18, 9 December 2020 | 990 × 599 (61 KB) | Merikanto (talk | contribs) | Update | ||
07:37, 9 December 2020 | 839 × 498 (59 KB) | Merikanto (talk | contribs) | Update | ||
14:56, 27 November 2020 | 1,004 × 594 (59 KB) | Merikanto (talk | contribs) | Update | ||
08:44, 8 November 2020 | 990 × 599 (58 KB) | Merikanto (talk | contribs) | Update of graph | ||
15:03, 4 November 2020 | 975 × 570 (62 KB) | Merikanto (talk | contribs) | Update |
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 | 792pt |
---|---|
Height | 504.72pt |