Leszek Wincenciak
Krótki blog na temat epidemii wirusa SARS-CoV-2
Od pojawienia się w Polsce pierwszego zdiagnozowanego przypadku koronawirusa, bardziej precyzyjnie zwanego SARS-CoV-2, obserwujemy postępujący wzrost liczby zachorowań i niestety również postępujący wzrost liczby zgonów. Logika rozwoju epidemii jest niestety nieubłagana i przebiega według postępu wykładniczego. Jedna zarażona osoba zaraża dwie następne, te dwie kolejne zarażą 4, potem 8, 16, 32 itd.
Bardzo wiele zależy jednak od nas samych. Nawet proste modele symulacyjne, oparte na modelu SEIR, pokazują, że ograniczenie mobilności ludzi może przyczynić się do zmniejszenia wskaźnika reprodukcji wirusa. To bardzo ważne, jeśli chcemy spowolnić tempo rozwoju choroby i zmniejszyć obciążenie służby zdrowia. W innym przypadku liczba chorych, hospitalizowanych i zmarłych może być bardzo wysoka.
Poniżej sporządziłem wykres zależności liczby nowych przypadków i liczby wszystkich, którzy zachorowali w kilku wybranych krajach (codzienny update). Skala na wykresie jest logarytmiczna. Polska wydaje się być ciągle na krzywej wznoszącej, zatem tak bardzo ważne jest, żebyśmy wszyscy zachowywali się odpowiedzialnie i ograniczali kontakty między sobą do niezbędnego minimum. Na obecnym etapie nie wiemy, ile epidemia może potrwać, ale przez własne zachowania możemy mieć wpływ na przyśpieszenie tego momentu. Nie trzeba chyba nikogo przekonywać, że znacznie "lepszy" byłby rozwój wydarzeń według ścieżki koreańskiej, niż włoskiej, czy hiszpańskiej. Minister Zdrowia, Łukasz Szumowski, oceniał zdolność polskiej służby zdrowia na około 10 000 miejsc.
Zanim zagłębimy się w statystyki dotyczące SARS-CoV-2 warto zdać sobie sprawę z pewnego kontekstu. Jest dziś 3 kwietnia 2020 roku. Według danych (http://worldometers.info) z powodu SARS-CoV-2 zmarło dziś na świecie 5 266 osób. Dla porównania, na "zwykłą", sezonową grypę zmarło dziś 1 240 osób, 4 300 z powodu HIV/AIDS, 21 000 z powodu nowotworów, 2 500 z powodu malarii, 12 800 z powodu skutków palenia papierosów, 6 400 z powodu nadużywania alkoholu. 2 740 osób popełniło dziś samobójstwo oraz wykonano około 108 tys. aborcji. Niemal 30 tys. osób zmarło dziś z głodu. Nie zamierzam przez to bagatelizować sprawy koronawirusa, ale warto zdać sobie sprawę ze skali zjawiska. Liczba zmarłych na SARS-CoV-2 wygląda może niezbyt "imponująco", ale należy wziąć pod uwagę jeden bardzo ważny element - tych ofiar prawdopodobnie byłoby znacznie więcej, gdyby nie podjęte drastyczne działania. Te działania z jednej strony zmierzają do zmniejszenia tempa przyrostu liczby chorych, ale z drugiej (jak to u ekonomistów, coś zawsze musi być "on the other hand") powodują niestety ogromne koszty w postaci zahamowania gospodarki. To tak, jakby w pędzącym pociągu ktoś nagle pociągnął za hamulec bezpieczeństwa. Być może uda się uniknąć zderzenia, ale to niestety nie oznacza, że ofiar nie będzie wcale. Skutki gospodarczej zapaści będą bardzo bolesne i długotrwałe. Wiele firm upadnie, ludzie stracą pracę, dorobek całego życia, ileś osób umrze z powodu stresu, popełni samobójstwo, utraci środki do życia, padnie ofiarą przemocy itd. Gdzieś z powodu braku środków nie dojedzie ambulans, dla kogoś zabraknie miejsca w szpitalu. Można to ciągnąć dalej. Prawdopodobnie jeszcze nie w pełni zdajemy sobie sprawę z tego, jak bardzo zmieni się nasze życie w świecie, do którego tak się przyzwyczailiśmy. Zmieni się układ sił na świecie, zmienią się łańcuchy dostaw, zmienią się miejsca w światowym podziale pracy.
Musimy zrobić wszystko, żeby ta epidemia skończyła się jak najszybciej, abyśmy mogli wrócić do normalnej pracy. To od naszej dyscypliny zależy bardzo wiele, o czym więcej nieco dalej.
Czy SARS-CoV-2 jest jak zwykła grypa?
Pomimo zbieżności wielu objawów, wiele wskazuje na to, że jednak jest znacznie groźniejszy, niż tzw. „sezonowa” grypa. W pierwszych 2 tygodniach marca na grypę w Polsce zachorowało 370 249 osób, w wyniku powikłań pogrypowych zmarło 14. Daje to śmiertelność na poziomie 0,00378%. Dla porównania, od początku epidemii SARS-CoV-2 na dzień 4 kwietnia 2020 zachorowało w Polsce 3 834 osoby. Zmarło 84. Daje to śmiertelność 2,19%. Według danych dla całego świata śmiertelność wynosi około 5,41%, we Włoszech znacznie więcej, bo aż 12,3%. Oznacza to (w uproszczeniu), że dla SARS-CoV-2 ryzyko śmierci jest dla danych polskich około 580 razy większe.
Współczynnik reprodukcji dla grypy szacowany jest na 1,3 a dla SARS-CoV-2 jest to około 2,2 (konserwatywne oszacowanie). Oznacza to, że SARS-CoV-2 rozprzestrzenia się znacznie szybciej i potencjalnie infekuje znacznie większą populację ludzi. Kolejna istotna różnica polega na tym, że sezonowa grypa pojawia się niemal zawsze w okresie jesienno-zimowym i naturalnie wygasa na wiosnę. Przy obecnym stanie wiedzy, nie wiemy, jak będzie z wirusem SARS-Cov-2. Posiadamy również znane i dobre sposoby leczenia grypy oraz szczepionki. Dla SARS-CoV-2 nie istnieją póki co ani sprawdzone metody leczenia, ani nie istnieje (jeszcze) szczepionka.
Co niemniej ważne, dla sezonowej grypy nie zachodzi potrzeba hospitalizacji dużej liczby chorych, a więc system opieki zdrowotnej nie ulega z tego powodu „zatkaniu”. Inaczej sprawa ma się z SARS-CoV-2, gdzie około 19-20% przypadków wymaga hospitalizacji, z czego duża część podłączenia do respiratora. Spiętrzenie konieczności intensywnej opieki medycznej w krótkim czasie powoduje, że nie jest możliwe pomóc wszystkim chorym na koronawirusa, a co więcej, może być niemożliwe również pomóc wszystkim innym, którzy np. z powodu wypadków komunikacyjnych, zawałów itp. będą wymagać specjalistycznej opieki.
Dlaczego utrzymywanie ścisłej dyscypliny i izolacja są takie ważne?
Poniżej zamieszczam krótką prezentację na temat modelowania epidemii z wykorzystaniem modelu SEIR. W ramach tego modelu rozważam dwa scenariusze - i) wpływu momentu podjęcia interwencji ograniczającej wskaźnik reprodukcji oraz ii) wpływu siły efektu obniżenia wskaźnika reprodukcji. Z obu scenariuszy wynikają te same wnioski. Wcześniejsze podjęcie interwencji powoduje ograniczenie liczby chorych, liczby hospitalizowanych oraz zgonów. Różnice kilku dni przekładają się na bardzo poważne konsekwencje w ilościach chorych itd. Z drugiej strony - przy tym samym momencie interwencji, im większe ograniczenie wskaźnika reprodukcji, tym mniejsza liczba chorych, hospitalizowanych i zgonów. Zatem, główne przesłanie, jakie wynika z tych symulacji to ogromne znaczenie ograniczenia kontaktów.
Kod do symulacji modelu SEIR, który napisałem w Pythonie.
from matplotlib import rc
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
# wartosci parametrow
T = 300
D_incubation = 5.2
D_infectious = 2.9
D_death = 18
D_hospital_lag = 5
D_recovery_severe = 21
a = 1 / D_incubation
gamma = 1 / D_infectious
p_severe = 0.19
p_fatal = 0.02
p_mild = 1 - p_severe - p_fatal
r0 = 2.2
pop = 10e6
colors = ['#ffe6cc', '#FF3322', '#0088EE', '#001188']
kolory = ['#ff1111', '#11ff11', '#0088EE']
def f(x, t, t_inter, t_parm):
S = x[0]
E = x[1]
Inf = x[2]
R = x[3]
F = x[4]
D = x[5]
Severe = x[6]
Severe_H = x[7]
if t < t_inter:
beta = r0 / D_infectious
else:
beta = (t_parm * r0) / D_infectious
dSdt = -beta * (Inf * S) / pop
dEdt = (beta * Inf * S) / pop - a * E
dInfdt = a * E - gamma * Inf
dRdt = gamma * Inf
dFdt = p_fatal * gamma * Inf - (1 / D_death) * F
dDdt = (1 / D_death) * F
dSeveredt = p_severe * gamma * Inf - (1 / D_hospital_lag) * Severe
dSevere_Hdt = (1 / D_hospital_lag) * Severe - (1 / D_recovery_severe) * Severe_H
return [dSdt, dEdt, dInfdt, dRdt, dFdt, dDdt, dSeveredt, dSevere_Hdt]
t = np.arange(0, T, 0.1)
x0 = [pop - 1, 0, 1, 0, 0, 0, 0, 0]
int_time_list = [80, 85, 90]
k = 0.4
int_parm_list = [0.6, 0.8, 1]
ti = 85
kolory = ['#0088EE', '#11ff11', '#ff1111']
i = 0
for z in int_time_list:
x = odeint(f, x0, t, args=(z, k))
# Rysujemy wyniki
plt.rcParams.update({'font.size': 18})
plt.rcParams.update({'figure.titlesize': 22})
fig = plt.figure(1, figsize=(24, 15))
# plt.suptitle('SEIR model of epidemic')
# Liczba zarazonych
ax1 = fig.add_subplot(311)
ax1.plot(t, x[:, 2], color=kolory[i], linewidth=4.0,
label='$T_{int} = $' + str(z) + ', $\\alpha = $' + str(k))
ax1.set_xlabel('time')
ax1.set_ylabel('Infectious')
ax1.set_xlim(0, T)
ax1.legend()
ax1.grid(True, 'major', 'both', ls='--', lw=.5, c='k', alpha=.3)
ax1.get_yaxis().set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
# Liczba hispitalizowanych
ax2 = fig.add_subplot(312)
ax2.plot(t, x[:, 7], color=kolory[i], linewidth=4.0,
label='$T_{int} = $' + str(z) + ', $\\alpha = $' + str(k))
ax2.set_xlabel('time')
ax2.set_ylabel('Hospitalized')
ax2.set_xlim(0, T)
ax2.legend()
ax2.grid(True, 'major', 'both', ls='--', lw=.5, c='k', alpha=.3)
ax2.get_yaxis().set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
# Liczba zmarlych
ax3 = fig.add_subplot(313)
ax3.plot(t, x[:, 5], color=kolory[i], linewidth=4.0,
label='$T_{int} = $' + str(z) + ', $\\alpha = $' + str(k))
ax3.set_xlabel('time')
ax3.set_ylabel('Deaths')
ax3.set_xlim(0, T)
ax3.legend()
ax3.grid(True, 'major', 'both', ls='--', lw=.5, c='k', alpha=.3)
ax3.get_yaxis().set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
i += 1
plt.tight_layout()
plt.show()
fig.savefig("seir_ode_epid.pdf")
j = 0
for z in int_parm_list:
v = odeint(f, x0, t, args=(ti, z))
# Rysujemy wyniki
plt.rcParams.update({'font.size': 18})
plt.rcParams.update({'figure.titlesize': 22})
fig = plt.figure(1, figsize=(24, 15))
# plt.suptitle('SEIR model of epidemic')
# Liczba zarazonych
ax1 = fig.add_subplot(311)
ax1.plot(t, v[:, 2], color=kolory[j], linewidth=4.0,
label='$T_{int} = $' + str(ti) + ', $\\alpha = $' + str(z))
ax1.set_xlabel('time')
ax1.set_ylabel('Infectious')
ax1.set_xlim(0, T)
ax1.legend()
ax1.grid(True, 'major', 'both', ls='--', lw=.5, c='k', alpha=.3)
ax1.get_yaxis().set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
# Liczba hispitalizowanych
ax2 = fig.add_subplot(312)
ax2.plot(t, v[:, 7], color=kolory[j], linewidth=4.0,
label='$T_{int} = $' + str(ti) + ', $\\alpha = $' + str(z))
ax2.set_xlabel('time')
ax2.set_ylabel('Hospitalized')
ax2.set_xlim(0, T)
ax2.legend()
ax2.grid(True, 'major', 'both', ls='--', lw=.5, c='k', alpha=.3)
ax2.get_yaxis().set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
# Liczba zmarlych
ax3 = fig.add_subplot(313)
ax3.plot(t, v[:, 5], color=kolory[j], linewidth=4.0,
label='$T_{int} = $' + str(ti) + ', $\\alpha = $' + str(z))
ax3.set_xlabel('time')
ax3.set_ylabel('Deaths')
ax3.set_xlim(0, T)
ax3.legend()
ax3.grid(True, 'major', 'both', ls='--', lw=.5, c='k', alpha=.3)
ax3.get_yaxis().set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
j += 1
plt.tight_layout()
plt.show()
fig.savefig("seir_ode_epid2.pdf")
Jakie będą skutki ekonomiczne pandemii?
Poniżej prezentacja z dodanym modelowaniem gospodarki i sprzężeń zwrotnych: Ben Moll, Greg Kaplan i Gianluca Violante: "Pandemics According to HANK". Wyniki wstępnych symulacji modelu makroekonomicznego.
Na razie nie wiemy jeszcze, jak głęboka będzie recesja w związku z pandemią, ale jedno jest pewne już teraz. Liczba osób zarejestrowanych w urzędach pracy w USA po zasiłki wzrosła w ostatnich dwóch tygodniach do ponad 6 mln! Przez ostatnie kilkadziesiąt lat nigdy nie przekroczyła kilkuset tysięcy...
U.S. Employment and Training Administration, Initial Claims [ICSA], retrieved from FRED, Federal Reserve Bank of St. Louis; https://fred.stlouisfed.org/series/ICSA, April 2020.
LINKI
Poniżej kilka interesujących stron z wizualizacjami i informacjami dotyczącymi epidemii.
https://medium.com/@tomaspueyo/coronavirus-act-today-or-people-will-die-f4d3d9cd99ca
https://ourworldindata.org/coronavirus
https://pl.wikipedia.org/wiki/Pandemia_wirusa_SARS-CoV-2_w_Polsce
https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6
www.worldometers.info/coronavirus/
https://public.tableau.com/profile/mateusz.karmalski#!/vizhome/KoronawiruswPolsce/Koronawirus-Polska
http://www.fizykwyjasnia.pl/na-biezaco/prognozy-rozwoju-epidemii-koronawirusa/
KONTAKT
dr Leszek Wincenciak
Wydział Nauk Ekonomicznych UW
ul. Długa 44/50
00-241 Warszawa
pok. B306