Написано:Лукаш Цмеловски, доктор философии, Ян Василевски, Патрик Велопольски, Роберт Бенке

Хакатон

Я имел удовольствие быть в составе жюри хакатона Уставка 2020 для студентов в Польше в этом году. Хакатон был организован IBM Poland и Варшавским университетом. Темой выпуска этого года было прогнозирование ежедневных подтвержденных случаев COVID-19, смертей и выздоровлений. Прогнозы нужно было делать на каждый день в течение 14 дней (15–26 июня).

В соревнованиях приняли участие пятнадцать команд, представляющих разные университеты со всей Польши. Я попросил высокопоставленные команды поделиться своими решениями в этой и следующих историях. Начнем с команды śpiewające fortepiany в лице Яна Василевски, Роберта Бенке. и Патрик Велопольски. Вы можете поиграть с этим подходом к моделированию, используя среду ноутбуков в Watson Studio. Ссылку на блокнот можно найти в разделе ссылки внизу.

Моделирование COVID-19 с использованием SEIR и ARIMA

Решение основано на сочетании хорошо известной эпидемиологической модели SEIR и модели временных рядов ARIMA. В нашем случае классическая модель SEIR (Susceptible-Exposed-Infectious-Recovered) была расширена двумя новыми стадиями: мертвой и диагностированной, которые мы назвали SEID-RDe. Команда использовала первую модель для прогнозирования будущих тенденций, а вторую — для объяснения ежедневных колебаний.

Предположения

  1. Население разделено на 6 непересекающихся групп и переходов между ними.
  2. Стадия восприимчивости (S) включает всех проживающих в Польше людей, которые могут заразиться этой функцией. Мы предполагаем, что вы в безопасности после первого заражения и не можете снова заразиться COVID-19. Следовательно, размер первой стадии не увеличивается во времени.
  3. Второй этап (E), открытый, является временным этапом для людей, которые инфицированы, но не передают COVID-19 дальше.
  4. Инфекционная фаза (I) включает всех людей, которые могут заразить других и которым еще не был поставлен диагноз.
  5. (D) остается для диагностированной группы. На этом этапе возникает еще одно довольно сильное предположение, потому что мы считаем, что все инфицированные люди в какой-то момент диагностируются. Это означает, что мы не допускаем перехода от Infectious ни к одной из финальных стадий. Из D человек переходит в одно из двух состояний R или De: выздоровевший и мертвый соответственно.

Алгоритмы

Подход состоит из двух этапов: оценка общего тренда с помощью SEIR-RD и модель оценки остаточных значений ARIMA.

Байесовский SEIR
Первая часть нашей модели — это эпидемиологическая модель SEID-RD, которая описывает динамику эпидемии путем исследования различных групп населения, описанных выше. Изменения в этих группах записываются системой дифференциальных уравнений с параметрами, которые необходимо оценивать по данным. Решением этой системы являются непрерывные функции, отражающие ситуацию в группах. Мы рассматриваем эти функции как тренды. Из-за относительно небольшого количества доступных текущих данных и знаний о прошлых пандемиях байесовская оценка, по-видимому, хорошо подходит для решения этой проблемы. Мы выбрали стандартные нормальные и отрицательные биномиальные априорные значения (подробнее см. в справочном разделе).

Следуя дневнику всех ограничений, введенных правительством, мы выбрали 4 мая в качестве первого дня нашей обучающей выборки. Это решение было мотивировано изменением ограничений, которые могли повлиять на предыдущие данные. Это решение породило новые вопросы о начальных состояниях SEID-RDe. Инициализировать состояния SEIR в начале эпидемии тривиально, однако позже это становится серьезной проблемой. К счастью, не все этапы было так сложно оценить. Стадия S — это просто все население без жителей других штатов. Этапы D-RDe можно считывать по совокупности исторических данных (с начала до 4 мая). Наконец, для E и I мы использовали информацию из построения модели SEIR за предыдущий интервал времени.

Имея начальные значения, априорные значения и набор моделей, мы смогли произвести выборку из апостериорного распределения. Сгенерировано с использованием Random Walk MCMC, реализованного в tensorflow-probability. 100 000 итераций сошлись к истинным апостериорным распределениям.

Несмотря на то, что модель SEID-RDe была создана для моделирования эпидемий, она предполагает, что ее параметры (условия) постоянны во времени, а в данном примере это не так из-за меняющихся ограничений со стороны правительства. Чтобы исправить это потенциальное смещение, примите во внимание сезонность (мы заметили, что количество тестов, проведенных в выходные дни, значительно меньше) и зафиксируйте другие отношения, которые присутствуют, но не моделируются моделью SEID-RDe, мы подгоняем другую модель к остаткам.

ARIMA
Авторегрессионное интегрированное скользящее среднее — широко используемая модель для прогнозирования временных рядов. Он состоит из трех частей. Часть AR в ARIMA указывает на то, что изменяющаяся переменная, представляющая интерес, подвергается регрессии по своим собственным запаздывающим (т. е. предшествующим) значениям. Часть MA указывает, что ошибка регрессии на самом деле является линейной комбинацией ошибок, значения которых произошли одновременно и в разное время в прошлом. I (для «интегрированного») указывает, что значения данных были заменены разницей между их значениями и предыдущими значениями (и этот процесс разности мог быть выполнен более чем один раз). Цель каждой из этих функций состоит в том, чтобы модель как можно лучше соответствовала данным.

Модель обычно обозначается как ARIMA(p, d, q), где p — количество задержек, d — количество раз, когда данные различаются, и q — это порядок модели скользящего среднего. Стандартная модель ARMA, которая является частным случаем ARIMA и основой для этой модели, может быть записана следующим образом.

В нашем случае мы подогнали три разные модели для инфицированных, выздоровевших и мертвых. В каждом случае мы искали оптимальные p, d, q. Цель состояла в том, чтобы предсказать и объяснить суточные колебания, поэтому из исходных данных мы вычли тренд (SEIR-RD), а затем использовали полученные остатки для моделирования ARIMA. Прогноз был сделан таким же образом, т.е. мы прогнозируем тренд по эпидемиологической модели, а затем добавляем прогнозы по остаточной модели.

Ошибка оценки

Оценка модели с данными периода хакатона IBM показывает, что у нас были отличные результаты для новых случаев и предсказания смерти, но мы не были так хороши с предсказанием выздоровлений.

  • Ошибка прогноза новых подтвержденных случаев (ежедневно) составила менее 25 за 9 за 12 дней хакатона.
  • смерти имели гораздо меньшую дисперсию и не играли большой роли в окончательной оценке. Тем не менее, все еще кажется впечатляющим, что более чем в половине дней мы были менее чем на 5 смертей от истинного значения. Минимальная ошибка для зарегистрированных смертей и новых случаев была ниже 2.
  • восстановления — произошло радикальное изменение величины выздоровлений во время испытания, которое SEID-RDe не смог предсказать. Несмотря на всю прогностическую способность моделей ARIMA, нам не хватило скорости, чтобы проследить за новой тенденцией. Поэтому у нас был ужасный прогноз по количеству выздоровевших. Средняя абсолютная ошибка была выше 100.

Пакеты Python

Подгонка модели SEIR требует решения системы дифференциального уравнения на каждом шаге выборки из апостериорного распределения. Мы использовали реализацию MCMC из вероятности тензорного потока и функцию odeint из scipy.integrate для нахождения численного решения дифференциальной уравнение. Наша вторая модель была оснащена auto arima от pmdarima.arima. Чтобы воспроизвести наши результаты, вам также понадобятся:

  • TensorFlow в версии 2.1.0+
  • панды
  • numPy
  • matplotlib
  • инструменты

Время работы ноутбука Watson Studio

Для командной работы мы использовали среду выполнения ноутбуков Watson Studio в IBM Cloud. Это позволило нам легко общаться, сотрудничать и делиться результатами нашей работы. Он поставляется с планировщиком выполнения ноутбука, который был чрезвычайно полезен для длительных заданий.

Резюме

Этот подход имеет свои сильные и слабые стороны. С одной стороны, он использует широко принятую экспертами эпидемиологическую модель для моделирования распространения COVID-19 и адаптирует ее к требованиям краткосрочного прогнозирования. И SEID-RDe, и ARIMA имеют всего несколько параметров, поэтому они оценивают свои параметры с относительно низкой дисперсией. Однако, с другой стороны, подгонка двух моделей по отдельности может привести к распространению ошибки, расчетные параметры для SEID-RDe могут оказаться неподходящими для второй половины июня. Тем не менее, результаты кажутся довольно хорошими и заслуживают дальнейшего изучения.

Использованная литература:

  1. Исходный код в блокноте Watson Studio
  2. Отчет о случаях COVID-19 в Википедии
  3. Материалы хакатона Уставка 2020