COVID 19 – «хорошая», «плохая» и агентная модели

COVID 19 – «хорошая», «плохая» и агентная модели

Данный блог-пост переведен с английского языка. При желании вы можете ознакомиться с оригиналом - COVID 19: The Good, the Bad and the Agent Based Model.



Во время эпидемии COVID-19 в попытках предсказать её развитие и последствия было создано огромное количество имитационных моделей. Есть ли между ними какие-либо различия, или они все, по сути, одинаковы?

Эта публикация — часть цикла статей о сложностях разработки хорошей эпидемиологической модели и о том, почему её так тяжело создать. Из статей вы узнаете, в чём мы видим недостатки классической SEIR-модели применительно к этой задаче, и в чём преимущества агентной модели. Мы также поделимся своей полностью параметризированной и легко настраиваемой агентной моделью, которую вы можете использовать и адаптировать по собственному усмотрению, а также результатами, полученными нами с помощью этой модели.

В части I наибольшее внимание уделяется описанию разработки модели, её компонентов и отличий от SEIR-моделей.

В части II представлены разработка разных сценариев и результаты, полученные с помощью экспериментов Монте-Карло.

Модель можно скачать на GitHub и AnyLogic Cloud и полностью адаптировать её под любой регион за счет изменения входных файлов. Используйте модель и оставляйте свои комментарии; так вы поможете внести вклад в её непрерывное совершенствование.

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


Часть I


  • Почему так сложно создать модель эпидемии COVID-19?
  • Преимущества агентного подхода по сравнению с SЕIR-моделью
  • Как мы обрабатываем данные?




1. Почему так сложно создать модель эпидемии COVID-19?

Проблемы точного имитационного моделирования COVID-19: все они связаны с данными (и их взаимозависимостью)

Первое, что нужно сделать, чтобы понять любую систему, — это спросить себя, что же мы, собственно, пытаемся понять. И как удачно объясняет команда FiveThirtyEight в своей статье, которую мы очень рекомендуем к прочтению, понимание развития COVID-19 — непростая задача.

Так что же значит развитие эпидемии COVID-19?

В любой эпидемиологической модели делается упор на определение вариации одного (вернее обоих) из следующих факторов:

  • Максимальное количество инфицированных
  • Общее число летальных исходов

Дело в том, что эти факторы ― две стороны одной монеты, и их нельзя изучать отдельно друг от друга.

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

Эти две переменные в значительной степени определяются двумя факторами:

  1. Летальностью
  2. Уровнем заболеваемости


Летальность

Коэффициент летальности

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

КЛ = число смертей / число зараженных

Коэффициент летальности

И здесь мы сразу же сталкиваемся с первой проблемой: данные не всегда объективны. На самом деле, это в значительной степени зависит от того, как они собираются. Нам не удастся получить данные об общем числе зараженных, но лишь данные обо всех выявленных зараженных.

КЛ = число смертей / число выявленных зараженных

 Коэффициент летальности

В чем же разница между общим числом заражённых и общим числом выявленных заражённых? В методах тестирования и диагностики. Более того, на метод тестирования в значительной степени влияет доступность тестов для изучаемой системы и показатель частотности проявления симптомов заболевания, на основе которых проводятся эти тесты.

Коэффициент летальности

А что нам известно о числителе? Хотя общее число смертей можно определить более точно, чем общее число инфицированных, оно также зависит от некоторых факторов.

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

С другой стороны, летальность зависит от медицинского вмешательства во время заболевания. Если медицинская помощь оказана надлежащим образом, некоторые смертельные случаи можно предотвратить. Это также будет определяться изучаемой системой.

Коэффициент летальности

Как видите, от необходимости определить одну переменную мы перешли к четырем переменным. Более того, некоторые из этих переменных можно достоверно определить, только проведя тщательное тестирование в контрольных группах.

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

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



Уровень заболеваемости

К настоящему моменту все мы, по крайней мере, слышали о термине базовое репродуктивное число, обозначаемое R0 (и читающееся как Р-нулевое, если вам интересно).

Коэффициент заболеваемости

R0 – эпидемиологический термин, описывающий ожидаемое число случаев заражения от одного инфицированного среди населения, все представители которого восприимчивы к инфекции.

Нам сразу ясно, что в уравнение, описывающее R0, входит ряд других переменных:

Коэффициент заболеваемости

Более того, все эти переменные влияют друг на друга.

Уровень взаимодействия

Уровень взаимодействия ― это количество людей, с которыми инфицированный контактировал в течение своей болезни.

Этот показатель сильно отличается у разных людей по ряду причин; он зависит от плотности населения и бытовых условий, социального образа жизни и способов перемещения (например, на работу или учебу). Защитные меры, такие как ношение медицинской маски, также влияют на уровень взаимодействия человека.

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

Уровень распространения

Уровень распространения ― это количество людей, которых больной заразил из числа тех, с кем он контактировал.

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

Продолжительность болезни

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



По крайней мере до появления вакцины от COVID-19 единственный фактор, на который мы можем повлиять, — это уровень взаимодействия. Остальные два фактора зависят от вируса и иммунитета зараженного или подвергнутого риску заражения человека

Поэтому, как правило, нелекарственное медицинское вмешательство направлено именно на изменение этой переменной.



Вернемся к определению R0, которое мы упоминали выше:

R0 — эпидемиологический термин, описывающий ожидаемое число случаев заражения от одного инфицированного среди населения, все представители которого восприимчивы к инфекции.

Обратите внимание на фразу: «все представители которого восприимчивы к инфекции».

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

Число случаев заражения от одного инфицированного — это не фиксированная или статичная величина, а, скорее, постоянно изменяющаяся переменная.

Эффективное репродуктивное число

Будем называть этот показатель эффективным репродуктивным числом или Re (его также называют просто R или Rt), и, в отличие от R0, которое можно лишь вычислить, эту величину мы можем попробовать как-то измерить.

Но здесь мы вновь вязнем в контексте неточностей при сборе данных.

Теперь, когда мы разобрались, с чем имеем дело, как нам отразить это в модели?



2. Какой подход выбрать?

Почему классическая SEIR-модель не совсем подходит: агентное имитационное моделирование как более достоверное отображение проблемы

Узнав обо всех вышеописанных трудностях, мы вполне закономерно задаемся вопросом: «Как же тогда создавали все эти многочисленные модели COVID-19?»

Большая часть имитационных моделей коронавируса появилась за последние пару недель, и основываются они на так называемой SEIR-модели.

Эта аббревиатура расшифровывается как:

SUSCEPTIBLE — ПОДВЕРЖЕННЫЕ (т.е. восприимчивые к инфекции)
EXPOSED — КОНТАКТНЫЕ (т.е. подвергнутые риску заражения)
INFECTED — ИНФИЦИРОВАННЫЕ
REMOVED — ВЫБЫВШИЕ (т.е. выздоровевшие)



SEIR-модель | Обзор и недостатки классической модели при анализе реальных случаев

В основу этой модели положена системная динамика, и, следовательно, такая модель состоит из ряда накопителей, представляющих различные совокупности людей, и потоков, которые вызывают изменения в накопителях.

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

Объяснение аббревиатуры SEIR

Динамика этой модели характеризуется набором четырех обыкновенных дифференциальных уравнений, которые соответствуют стадиям развития для каждой из четырех совокупностей людей:

Уравнения SEIR



«Хорошая» модель

Какие преимущества делают SEIR-модели такими привлекательными?

Рост популярности SEIR-модели произошел не просто так. И чтобы отдать ей должное, мы разбили причины её использования на две основные категории.

Первая — её манящая простота или KISS (акроним для «Keep it simple, stupid», букв. «не усложняй, глупыш» англ. — принципа проектирования, принятого в ВМС США в 1960 и утверждавшего, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются).

В простоте бесспорно есть своя красота: всего четыре накопителя, всего три потока. Её легко настраивать, легко создавать и использовать, и поэтому она так широко распространена.

Кроме того, её легко можно усложнить. SEIR-модель с четырьмя накопителями — классическая, но существует бесконечное количество различных вариаций и модификаций. Возможность оперативно опробовать различные дополнительные настройки, идеи и гипотезы — это огромное преимущество. Проблема в том, что если в этом переусердствовать, то полностью пропадает смысл использования простой модели, в то время как для более серьезного анализа её сложности все ещё не хватает.

Её неотразимое обаяние в том, что её легко понять: что видишь, то и получаешь.

SEIR-модель не говорит загадками: она показывает всё, что знает, сколько бы раз вы ни спрашивали.

Проблема использования уровней доверительной вероятности для сравнения средних вероятностных значений ― неподходящая тема для разговоров в лифте, и SEIR-модели это известно. Поэтому она не будет вам этим докучать и сразу перейдет к числам, которые вы хотите узнать. Их легко запомнить, легко сравнивать, легко объяснять.

Прибавьте к этому тот факт, что вам не нужно проводить эксперименты Монте-Карло (по крайней мере, в большинстве случаев), и вы получите формулу самой популярной модели.



«Плохая» модель

Так что же не так с этой моделью?

За всё надо платить. Простота и доступность SEIR-модели — не исключение.

Чтобы быть последовательными и помочь вам сделать собственные выводы, мы также разбили ответы на этот вопрос на две основные группы:

Игра с меченым кубиком — на основании детерминистического подхода

Что случилось со всеми тонкостями и вариациями, о которых мы говорили выше? Они просто исчезли?

Да, но не совсем.

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

Поступив таким образом, вы лишите задачу всей вариативности и случайностей, которые присущи ей по ее природе.

Но что если мы не хотим видеть лишь один возможный вариант разрешения ситуации? Что если мы хотим увидеть все возможные комбинации всех возможных последствий? Так вот, в детерминистической SEIR-модели это просто невозможно.

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



Грубее наждачки — анализ по принципу «сверху вниз»

Другое ограничение модели связано с тем, что она работает на уровне крупных структурных единиц.

Поскольку за основу модели взяты совокупности людей, результаты и выводы тоже рассматриваются на этом уровне.

Большая часть вариативности, заложенной в систему, обусловлена различиями между отдельными людьми, которые составляют совокупности.

К примеру, мы рассматривали, как возраст и медицинская помощь, полученная во время болезни, влияют на показатель смертности. При работе на уровне населения эти взаимосвязи будут утеряны, поскольку наименьшие единицы анализа (а значит и взаимодействия в модели) тоже будут на уровне населения.

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

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



«Злая» модель

Агентное моделирование: что это, и как оно может быть применено для моделирования нашей проблемы

После знакомства с «хорошей» и «плохой» нам пора окунуться с головой в грязь, чтобы встретиться со «злой» агентной моделью.

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

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

Как мы можем избежать попадания в те же ловушки, которые мучили SEIR-модель?

Ответ — строить модель наоборот.

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

Так мы создали вероятностный подход посредством анализа системы по принципу «снизу вверх».

Такой тип моделирования, когда различные объекты взаимодействуют друг с другом, воздействуя на систему в целом, называется «агентным моделированием».

Здесь каждый агент системы характеризуется рядом состояний. Агент изменяет состояния посредством различных переходов, которые могут быть вызваны определенными событиями, например, встречей с другим агентом.

Диаграмма агентного моделирования

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



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

Наш агент представляет зараженного человека, и его можно охарактеризовать двумя основными диаграммами состояний:

  • Первая представляет собой движение агента через различные стадии болезни. Мы назовем это диаграммой состояний болезни.
  • С другой стороны, наш агент взаимодействует с системой здравоохранения и может находиться в статусе изоляции. Это диаграмма состояний медицинского вмешательства.

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



Диаграмма состояний болезни

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

Эволюция болезни

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

Те, у кого симптомы не развиваются, переходят в состояние «выздоровевший» и заканчивают эволюцию своей болезни. Эти случаи соответствуют бессимптомным случаям, когда зараженный агент прошел болезнь полностью без видимых симптомов.

Эволюция болезни

Случаи, когда болезнь сопровождается симптомами, делятся на три состояния, соответствующие интенсивности болезни: от легкой до тяжелой.

Наконец, у нас осталось два перехода. В случае умеренного и тяжелого хода болезни у пациента существует риск не выздороветь, и, соответственно, агент перейдет в состояние «умерший».

С другой стороны, зараженный может выздороветь и перейти из симптомной фазы в состояние «выздоровевший».

Эволюция болезни

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



Диаграмма состояний медицинского вмешательства

В диаграмме состояний медицинского вмешательства у нас есть два основных состояния, которые относятся к статусу изоляции агента: «свободно перемещающийся» и «изолированный».

Эволюция медицинского вмешательства

Переход от свободного перемещения к изоляции будет определяться политикой тестирования и немедикаментозным вмешательством, а также расположением агента в диаграмме состояний болезни. Например, хотя это и не подтверждено тестами, агент с тяжелыми симптомами скорее обратится за медицинской помощью и, следовательно, будет изолирован.

Изолированное население может находиться в одном из двух подсостояний, которые соотносятся с двумя уровнями полученной медицинской помощи: «негоспитализированный» и «госпитализированный».

В то время как диаграмма состояний болезни определяет требования к медицинской помощи агенту (в зависимости от тяжести заболевания), полученная медицинская помощь окончательно определяется диаграммой состояний медицинского вмешательства в зависимости от политики и возможностей региона.

Эволюция медицинского вмешательства

В случае госпитализации мы различаем тип медицинской помощи, которую получает инфицированный человек.

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

Эволюция медицинского вмешательства

Точно так же среди пациентов интенсивной терапии мы выделяем тех, которые подключены к аппарату ИВЛ и тех, которые не подключены.

Эволюция медицинского вмешательства

Наконец, у нас есть переходы к умершим и выздоровевшим состояниям.



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

Как видите, «злая» модель оказалась не такой уж плохой.

Эволюция болезни и медицинского вмешательства



3. Итак, как же мы обрабатываем данные?

Основные входные данные и допущения и их применение

Итак, теперь, когда мы познакомились c нашим протагонистом, как же мы будем обрабатывать данные?

Хотя агентная модель и позволяет нам лучше понять ситуацию, она все же не решает проблемы, перечисленные в первой части. Для этого мы разделили входные данные на пять категорий:

  • Регионы
  • Передвижения
  • Потенциал системы здравоохранения
  • Характеристики заболевания
  • Изначальное состояние

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

При этом модель полностью параметризирована: в коде ничего жестко не запрограммированно. Благодаря этому вы можете не только адаптировать модель под интересующий вас регион, но и поменять используемые данные, к примеру, характеристики заболевания, на свои собственные.



Регионы

Входные данные из категории «Регионы» состоят из количества регионов, их населения, территории (и, соответственно, плотности населения) и названия.

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

Возрастные структуры регионов также загружены в модель.

Передвижения

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

1. Внешние передвижения

Внешние передвижения обусловлены средним числом прибывающих в день и вероятностным распределением конечных пунктов маршрута в каждом из регионов.

Таким образом, каждый день генерируется определённое количество людей, которые приезжают в свой пункт назначения с упомянутой выше вероятностью.

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

2. Внутрирегиональные передвижения

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

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

Но сколько должна длиться такая поездка? Это определяется средней продолжительностью пребывания для каждого передвижения и соответствующей вероятностью. Мы используем типы передвижений «досуг», «работа», «семья и друзья» и «другое», но вы можете добавить в модель свой собственный тип.

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



Система здравоохранения

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

Кроме изолированных коек в каждом регионе в рассчет брались также стандартные, которые можно было бы переоборудовать. Койки в родильных, педиатрических и неонатальных отделениях в расчёт не брались. Для отделений реанимации педиатрические койки также не брались в расчет.

При необходимости в модели легко можно увеличить потенциал системы здравоохранения к определенной дате.



Характеристики заболевания

До сих пор мы рассматривали входные данные, которые варьировались от системы к системе: население, передвижения и система здравоохранения зависят от того, ситуацию в каком регионе вы хотите промоделировать.

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

Эти входные данные складываются из (источники данных можно посмотреть во входном файле):

  • Максимальных и минимальных базовых репродуктивных чисел — (R0Max и R0Min)

Продолжительности болезни


  • Продолжительности инкубационного периода — (задано распределением)
  • Длительности при легкой форме — (задано распределением)
  • Длительности при тяжелой/средней форме — (задано распределением)

Симптомов и тяжести заболевания


  • Интенсивности симптомов — (вероятность с разбивкой по возрастным группам)
  • Вероятности развития умеренной формы заболевания — (вероятность с разбивкой по возрастным группам)
  • Вероятности развития тяжелой формы заболевания — (вероятность с разбивкой по возрастным группам)
  • Потребности в аппарате ИВЛ — (вероятность с разбивкой по возрастным группам)

Уровня летальности и эффективности медицинского вмешательства


  • Летальности при умеренной форме заболевания — (показатель с разбивкой по возрастным группам)
  • Летальности при тяжелых случаях — (показатель с разбивкой по возрастным группам)
  • Влияния оказания медицинской помощи на показатели летальности
  • Времени диагностики — (задано распределением)


Изначальное состояние

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



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



Спасибо, что дочитали до конца! Надеемся, статья оказалась интересной и полезной.

Вам понравилась статья? Хотите посмотреть, какие результаты можно получить с помощью такой модели? Подписывайтесь на нашу рассылку, скоро выйдет продолжение! А пока можете сами протестировать модель.

И еще раз повторим, что мы открыты для ваших отзывов и комментариев, и нам не терпится посмотреть, какие изменения вы внесёте.


Похожие материалы