[Из песочницы] Когда закончится коронавирус
Уважаемые читатели,
Я руковожу отделом Data Science в Британской Транспортной Полиции, и одной из задач нашего отдела является оптимальное распределение персонала в зависимости от уровня преступности, который, в свою очередь, зависит от потока пассажиров. Как вы понимаете, поток пассажиров стремительно изменится, как только правительство решит снять карантин или ослабить связанные с карантином меры. Закономерно возникает вопрос — когда закончится пандемия и как подготовиться к возвращению к нормальной жизни.
Минутка заботы от НЛО
В мире официально объявлена пандемия COVID-19 — потенциально тяжёлой острой респираторной инфекции, вызываемой коронавирусом SARS-CoV-2 (2019-nCoV). На Хабре много информации по этой теме — всегда помните о том, что она может быть как достоверной/полезной, так и наоборот.Мы призываем вас критично относиться к любой публикуемой информации
Официальные источники
Если вы проживаете не в России, обратитесь к аналогичным сайтам вашей страны.
Мойте руки, берегите близких, по возможности оставайтесь дома и работайте удалённо.Читать публикации про: коронавирус | удалённую работу
Несколько недель назад я начал заниматься вопросом прогнозирования течения пандемии, и, попробовав множество моделей, от общепринятой SARS до разнообразной экзотики, пришел к выводу, что имея значительную неопределенность в исходных данных и различные подходы в диагностировании (причем, эти подходы могут меняться в течение времени для одной и той-же страны), лучшим подходом может быть принцип Zen of Python — «простое лучше сложного, а сложное лучше слишком сложного».
Поэтому, приняв две гипотезы: (a) распределение заболевших и умерших подчиняется закону больших чисел, то есть описывается симметричным нормальным распределением, и (b) мы не будем иметь второй пик заболеваемости после снятия карантина, я построил простую интерактивную модель, доступную на GitHub. Эта модель считывает данные с сайта ВОЗ, проверяя наличие обновлений каждые полчаса (по хэш-сумме файлов), затем, используя функцию curve_fit из пакета scipy.optimize, пробует подогнать кривую нормального распределения (точнее, логистического распределения под данные минимизируя сумму среднеквадратичного отклонения (доступны и другие методы оптимизации).
Самая первая модель не имела никаких ограничений, поэтому иногда показывала не вполне адекватные данные, поэтому было принято решение ограничить глубину поиска (которая, все-же, установлена больше стандартной) и ограничить ошибку в определении пика заболеваемости десятью днями (перед этим я попробовал установить ограничение по числу заболевших равное населению страны, но этот метод не работал корректно).
Кроме того, показалось разумным ограничить область видимости диаграммы пиком с отклонениями в плюс-минус три сигмы.
Как результат, скрипт стал генерировать прогнозы, показанные ниже.
Я не стану утомлять читателей формулами — вы сможете найти их как в коде, так и в ссылках выше. Стоит лишь отметить, что скрипт формирует ежедневный (не кумулятивный) прогноз, поэтому для вычисления общего числа заболевших используется кумулятивная функция.
Скрипт показал свою адекватность и применимость как к организации, в которой я работаю, так и к Великобритании в целом. Мне кажется, что прогноз, сформированный для других стран, выглядит вполне адекватно, особенно с учетом того факта, что некоторые «сингапурские ученые» (да простят меня за кавычки) использовали его для своих публикаций безо всяких ссылок на источник, не говоря уже о СМИ.
Буду признателен за ваши отзывы и конструктивную критику.