Как стать автором
Обновить

Когда закончится коронавирус

Data MiningData Engineering
Из песочницы

Уважаемые читатели,


Я руковожу отделом Data Science в Британской Транспортной Полиции, и одной из задач нашего отдела является оптимальное распределение персонала в зависимости от уровня преступности, который, в свою очередь, зависит от потока пассажиров. Как вы понимаете, поток пассажиров стремительно изменится, как только правительство решит снять карантин или ослабить связанные с карантином меры. Закономерно возникает вопрос — когда закончится пандемия и как подготовиться к возвращению к нормальной жизни.


Минутка заботы от НЛО


В мире официально объявлена пандемия COVID-19 — потенциально тяжёлой острой респираторной инфекции, вызываемой коронавирусом SARS-CoV-2 (2019-nCoV). На Хабре много информации по этой теме — всегда помните о том, что она может быть как достоверной/полезной, так и наоборот.

Мы призываем вас критично относиться к любой публикуемой информации


Официальные источники

Если вы проживаете не в России, обратитесь к аналогичным сайтам вашей страны.

Мойте руки, берегите близких, по возможности оставайтесь дома и работайте удалённо.

Читать публикации про: коронавирус | удалённую работу

Несколько недель назад я начал заниматься вопросом прогнозирования течения пандемии, и, попробовав множество моделей, от общепринятой SARS до разнообразной экзотики, пришел к выводу, что имея значительную неопределенность в исходных данных и различные подходы в диагностировании (причем, эти подходы могут меняться в течение времени для одной и той-же страны), лучшим подходом может быть принцип Zen of Python — "простое лучше сложного, а сложное лучше слишком сложного".


Поэтому, приняв две гипотезы: (a) распределение заболевших и умерших подчиняется закону больших чисел, то есть описывается симметричным нормальным распределением, и (b) мы не будем иметь второй пик заболеваемости после снятия карантина, я построил простую интерактивную модель, доступную на GitHub. Эта модель считывает данные с сайта ВОЗ, проверяя наличие обновлений каждые полчаса (по хэш-сумме файлов), затем, используя функцию curve_fit из пакета scipy.optimize, пробует подогнать кривую нормального распределения (точнее, логистического распределения под данные минимизируя сумму среднеквадратичного отклонения (доступны и другие методы оптимизации).


Самая первая модель не имела никаких ограничений, поэтому иногда показывала не вполне адекватные данные, поэтому было принято решение ограничить глубину поиска (которая, все-же, установлена больше стандартной) и ограничить ошибку в определении пика заболеваемости десятью днями (перед этим я попробовал установить ограничение по числу заболевших равное населению страны, но этот метод не работал корректно).


Кроме того, показалось разумным ограничить область видимости диаграммы пиком с отклонениями в плюс-минус три сигмы.


Как результат, скрипт стал генерировать прогнозы, показанные ниже.


Пример прогноза


Я не стану утомлять читателей формулами — вы сможете найти их в исходном коде, в ссылках выше и в английском варианте статьи. Стоит лишь отметить, что скрипт формирует ежедневный (не кумулятивный) прогноз, поэтому для вычисления общего числа заболевших используется кумулятивная функция.


Скрипт показал свою адекватность и применимость как к организации, в которой я работаю, так и к Великобритании в целом. Мне кажется, что прогноз, сформированный для других стран, выглядит вполне адекватно.


Буду признателен за ваши отзывы и конструктивную критику.

Теги:коронавируспрогнозированиеscipy.optimize
Хабы: Data Mining Data Engineering
Всего голосов 26: ↑18 и ↓8+10
Просмотры11K

Похожие публикации

Лучшие публикации за сутки