[Из песочницы] Когда закончится коронавирус

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

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


fi0x4z2nhcc3-3bdzugakb4csji.png

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

© Habrahabr.ru