Изначально я не планировал публиковать здесь статью про коронавирус, аналитики на хабре уже более чем достаточно. Однако, читая разные местечковые форумы и соцсети, я с удивлением обнаружил сколько достаточно вредных мифов гуляет в сети, и что обычные люди, не специалисты, в это увы, верят. В итоге, после 10го ответа очередному юзеру на очередное сообщение «коронавирус не хуже гриппа», возникла идея создать FAQ на который можно просто давать ссылку, где бы понятным простым языком развенчивались наиболее популярные мифы.
КДПВ не будет, картинка с вирусом уже наверно и так всем надоела.
Статья рассчитана на широкую аудиторию, те кто всё это уже знают, могут не тратить свое время, вряд ли они найдут что-то новое. Я знаю, что многим не нравятся статьи формата «для чайников», но готов рискнуть. Тех кому интересно, приглашаю под кат. Как хабрабонус, в конце будет Python-код для желающих поэкспериментировать с графиками самостоятельно.
Итак, приступим. Еще раз повторюсь, все нижеприведенные вопросы я придумал не сам, они были собраны из разных форумов и соц.сетей.
Q1: Это же обычный грипп
Коронавирус это не обычный грипп.
У него в два раза выше репродуктивное число R0 (1.3 против 2-2.5, он в среднем вдвое более заразен), в 4 раза дольше инкубационный период (4 против 14 дней) при котором человек может разносить заразу, в 5 раз выше процент госпитализации (2% против 19%), и где-то в 10 раз выше летальность. Каждый фактор по отдельности уже сам по себе неприятен, но объединяя всё это вместе, мы получаем достаточно убойную штуку, в прямом смысле этого слова.
Q2: А-а-а, мы все умрем, смертность 21%
Не менее вредный миф чем предыдущий. Многие открывают www.worldometers.info/coronavirus и видят такую картину:
Цифра в 21% приводит в ужас неподготовленного обывателя. Однако, на самом деле, данная цифра не имеет ничего общего с летальностью от covid.
Рассмотрим простой пример. Допустим, заразилось вирусом 100 человек. Из них 50% переболело бессимптомно, вообще не пошли к врачу и в статистику не попали. Из оставшихся 50, 20 переболели в легкой форме, и им поставили диагноз ОРВИ. Другие 30 попали в больницу, из них 5 получили диагноз «пневмония», остальные 25 получили реальные тесты на covid. В итоге, из этих 25 допустим, 3 умерло. Результат: в официальную статистику worldometers попадет «25 выздоровело, 3 умерло, 12% смертей». Вопрос — какое отношение эти 12% имеют к реальной летальности от коронавируса? Правильно, никакое. Я вообще сомневаюсь, что у этой цифры есть какой-то физический смысл, это скорее показатель доступности тестов для населения в той или иной стране. А тестов кстати везде не хватает, не только в России, но и в США или UK ситуация аналогична.
Примерная летальность от Covid составляет по разным оценкам, 1-3%. Это тоже много, но никак не 21%.
Q3: Смертность и летальность
Уже обсуждалось не раз, но множество людей до сих пор путает.
Смертность: количество смертей на 1000 человек населения в год. Используется скорее как показатель качества системы здравоохранения, типа «в Уганде от диареи умирает 10 человек в год», или «смертность от рака в Израиле ниже чем в России».
Летальность: отношение числа умерших к числу переболевших, именно этот параметр обычно и интересует большинство. Но и тут есть нюанс, т.к. точное число переболевших неизвестно, то точная летальность коронавируса пока неизвестна тоже, см. предыдущий пункт.
Q4: Зачем в России вводить карантин, если смертей так мало?
Для ответа на этот вопрос совместим кривую числа заболевших для разных стран.
Из этого графика можно сделать два вывода:
— Скорость роста числа заболевших примерно одинакова. Россия увы, не исключение.
— Важный момент — график по вертикали логарифмический. Это значит что одна клетка соответствует увеличению в 10 раз — 100, 1000, 10000, 100000 и т.д. Действительно, любой желающий может зайти на covid.2gis.ru и убедиться, что в среднем число больных удваивается каждые 4 дня.
В итоге, ответ простой — карантин вводится для того, чтобы предотвратить будущие смерти, даже если сейчас их мало. И это по большому счету, определенная удача что в России/Украине/Беларуси можно учиться на чужих ошибках, а не на своих, т.к. эпидемия началась позже. Понятно, что 3 умерших за 2 недели в Петербурге от коронавируса, это «не внушает», но надо понимать, что если ничего не делать, то 3 легко превратится в 30, потом в 300 и т.д.
Q5: Карантин не работает
Во-первых, карантин не может не работать. Если мы уменьшаем число контактов, то и шансов распространиться у вируса тоже меньше, если конечно люди этот карантин соблюдают, а не едут компанией на шашлыки или к родственникам.
Во-вторых, важно иметь в виду, что результаты карантина видны не сразу, а через 2-3 недели. Это связано с инкубационным периодом, и с тем что тестируют обычно не сразу, а тех кто уже с ухудшением состояния попадает в больницу.
Посмотрим графики новых случаев в день по разным странам, где был введен карантин:
На всех графиках четко виден момент «перелома», когда экспоненциальный рост удвоения случаев каждые несколько дней сменяется линейным, а затем и снижением.
Q6: Когда карантин закончится?
По идее, тогда, когда число новых случаев в день будет стабильно падать. К сожалению, никакой удобной для просмотра инфографики на официальных российских сайтах мне не попадалось, так что проверять удобнее всего на www.worldometers.info/coronavirus/country/russia, параметр «Daily New Cases».
Но важно иметь в виду, что вакцину обещают не раньше чем через год, а реальное число переболевших пока что не более 1%, так что какие-то ограничения вероятно сохранятся надолго. Это важно, например при планировании бизнеса, связанного с массовыми мероприятиями.
Q7: Коронавирус был придуман в США/Израиле/России/etc
Это неверно. Геном коронавируса уже расшифрован, его происхождение из Китая сомнений не вызывает. Интерактивные данные можно посмотреть здесь: www.gisaid.org/epiflu-applications/next-hcov-19-app
Исходные данные
CSV-файлы для самостоятельного анализа можно взять из репозитория COVID-19 github-аккаунта университета Джона Хопкинса: github.com/CSSEGISandData/COVID-19.
Для желающих поэкспериментировать, исходный код под спойлером.
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import FormatStrFormatter, StrMethodFormatter, ScalarFormatter, FuncFormatter
# Load the dataset.
# Source https://github.com/CSSEGISandData/COVID-19/blob/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv
df = pd.read_csv('covid19_confirmed_global.csv')
# print(df)
def get_data(country: str):
df_ = df.loc[(df['Country/Region'] == country) & (df['Province/State'].isnull())]
df_data = df_.loc[:, '1/22/20':'4/4/20']
values = df_data.values.tolist()[0]
new_cases = df_data.diff(axis=1).values.tolist()[0][1:]
# Shift data to axis beginning
treshold = 20
start_index = values.index(next(filter(lambda x: x >= treshold, values)))
return values[start_index:], new_cases[start_index:]
values_rus, values_rus_daily = get_data('Russia')
values_ita, values_ita_daily = get_data('Italy')
values_uk, values_uk_daily = get_data('United Kingdom')
values_ger, values_ger_daily = get_data('Germany')
values_spa, values_spa_daily = get_data('Spain')
values_fin, values_fin_daily = get_data('Finland')
fig, ax = plt.subplots()
fig.set_size_inches(12, 5)
# Draw
total_cases, new_cases = True, False
# 1. Total cases
if total_cases:
ax.semilogy()
ax.get_yaxis().set_major_formatter(ScalarFormatter())
ax.plot(values_rus, label='Россия')
ax.plot(values_ita, label='Италия')
ax.plot(values_uk, label='Англия')
ax.plot(values_ger, label='Германия')
ax.plot(values_spa, label='Испания')
ax.plot(values_fin, label='Финляндия')
plt.xlabel('Дни')
plt.ylabel('Общее число случаев')
# Daily new cases
if new_cases:
fig.set_size_inches(12, 5)
plt.grid(False)
ax.bar(range(len(values_rus_daily)), values_rus_daily, width=0.6, label='Россия')
# ax.bar(range(len(values_ita_daily)), values_ita_daily, width=0.9, label='Италия')
# ax.bar(range(len(values_spa_daily)), values_spa_daily, width=0.9, label='Испания')
# ax.bar(range(len(values_uk_daily)), values_uk_daily, width=0.7, label='Англия')
# ax.bar(range(len(values_ger_daily)), values_ger_daily, width=0.8, label='Германия')
plt.xlabel('Дни')
plt.ylabel('Случаи в день')
plt.legend(loc='upper left')
plt.show()
Заключение
Всем спасибо, кто дочитал до сюда. Если другие продолжат тему «разрушения мифов», было бы неплохо.