Спроектируйте агентную модель эпидемии для малого города, учитывая гетерогенность населения (возраст, мобильность), сезонные факторы и вмешательства (вакцинация, локдаун). Опишите архитектуру модели, выбор уровня детализации, методы калибровки и валидации на неполных данных, а также как оценивать неопределённость прогнозов
Архитектура модели (высокоуровнево) - Тип: агентная (ABM) или масштабируемая синтетическая популяция (веса агентов) для города N∼104 − 106N\sim 10^4\!-\!10^6N∼104−106. - Компоненты: - Агент: атрибуты — возраст, пол, домохозяйство, профессия/школа, мобильность/комплаенс, иммунный статус, вакцинация. - Контактные слои: домашний, школьный, рабочий/университет, транспорт, случайные встречи/сообщество. Каждый слой имеет матрицу контактов или сеть. - Динамика болезни: SEIR-подобная с фазами (экспозиция, инкубация, предсимптом., симптом., госпитализация, восстановление/смерть), длительности — случайные величины (гамма/лог-норм). - Интервенции: вакцинация (снижение восприимчивости/инфекционности, бустеры, выгорание), локдаун (редукция контактов по слоям), тестирование/изоляция, таргетированные меры. - Сезонность: модуль повышающей/понижающей трансмиссивности. - Модель наблюдений: процессы регистрации случаев/госпитализаций/смертей/серопревалентности с учётом задержек и недоучёта. Ключевые формулы (пример) - Сезонная передача: β(t)=β0(1+Acos2π(t−ϕ)365)
\beta(t)=\beta_0\Big(1 + A\cos\frac{2\pi (t-\phi)}{365}\Big) β(t)=β0(1+Acos3652π(t−ϕ))
- Сила инфекции для агента iii: λi(t)=∑слои Lβ(t)∑j∈контактыL(i)wijIj(t)NL
\lambda_i(t)=\sum_{\text{слои }L}\beta(t)\sum_{j\in \text{контакты}_L(i)} w_{ij} \frac{I_j(t)}{N_L} λi(t)=слоиL∑β(t)j∈контактыL(i)∑wijNLIj(t)
- Наблюдаемая отчётность (пример): yt∼NegBin(ρ⋅incidencet, ϕ)
y_t \sim \operatorname{NegBin}\big(\rho\cdot \text{incidence}_t,\ \phi\big) yt∼NegBin(ρ⋅incidencet,ϕ)
где ρ\rhoρ — доля зарегистрированных, ϕ\phiϕ — параметр сверхдисперсии. Выбор уровня детализации (руководящие принципы) - Полный ABM (каждый человек) — если NNN небольшое/среднее и есть вычисл. ресурсы, нужен для оценки локальных эффектов и неравномерных интервенций. - Взвешенная/аггрегированная ABM — когда NNN велико: моделируйте репрезентативные агенты с весами. - Микро-среда vs популяционные слои: детализируйте те слои, которые больше всего влияют на политики (школы, семьи, транспорт). - Временной шаг: суточный чаще всего достаточен; при необходимости — почасовой для транспорта/коротких контактов. - Базовая рекомендация: начать с минимального набора атрибутов, достаточного для ответов на целевые вопросы (возраст, дом, работа/школа, мобильность, вакцинация), затем наращивать. Параметризация данных и источники - Демография: перепись, реестры. - Контакты: POLYMOD/локальные опросы, мобильные данные (агрегированные потоки), расписания школ/работ. - Клинические параметры: литература (инфекционность, периоды), локальные НПЦ/больницы. - Вмешательства: логи мер, данные о вакцинации по возрасту/району, мобильность (Google/Apple, телеком). Калибровка на неполных данных - Представление наблюдений: явная модель наблюдения для каждого типа данных (задержки, тест/чувствительность, недоучёт). - Байесовский подход: найти апостериорное распределение p(θ∣y)∝p(y∣θ)p(θ)
p(\theta\mid y)\propto p(y\mid\theta)p(\theta) p(θ∣y)∝p(y∣θ)p(θ)
где yyy — все доступные наблюдения (случаи, госпитализации, серология, wastewater). - Методы: - Частицы/Sequential Monte Carlo (SMC/Particle Filter) для одновременного оценивания скрытого состояния и параметров. - ABC-SMC (Approximate Bayesian Computation) — когда явный likelihood сложен. - MCMC с эмульгатором/суррогатной моделью (Gaussian Process) для ускорения. - Оптимизационные методы (Bayesian Optimization) для быстро приближённой калибровки. - Целевая функция/likelihood: использовать комбинированный likelihood по источникам с весами и учётом дисперсии: logL(θ)=∑s∈sources∑tlogps(ys,t∣θ)
\log L(\theta)=\sum_{s\in\text{sources}}\sum_t \log p_s(y_{s,t}\mid \theta) logL(θ)=s∈sources∑t∑logps(ys,t∣θ)
- Информативные априорные распределения для плохо идентифицируемых параметров, иерархические модели для районов/возрастных групп. Валидация на неполных/шумных данных - Кросс-валидация по времени: каллибруем на t≤T0t\le T_0t≤T0, валидируем прогнозы на T0<T≤T1T_0<T\le T_1T0<T≤T1. - Posterior predictive checks: сравнивать распределения симулированных наблюдений с реальными данными (coverage, bias). - Использование независимых источников (серосопр., wastewater, госпитализации) для валидации, которые не использовались в калибровке. - Синтетические эксперименты: генерация «ground-truth» синтетических данных и проверка способности метода восстановить параметры. - Валидация пространственно: проверять прогнозы по районам/школам при условии калибровки на агрегатных данных. Оценка неопределённости прогнозов - Множественные типы неопределённости: - стохастическая (рандомизация в ABM), - параметрическая (неопределённые параметры), - структурная (альтернативные модели), - наблюдательная (ошибки в данных). - Практика: - Генерировать ансамбль симуляций, комбинируя сэмплы из апостериора параметров и разные RNG-seed: коллекция траекторий даёт предиктивное распределение. - Представлять интервалы доверия/достоверности, например 50%50\%50% и 90%90\%90% предиктивные интервалы. - Декомпозиция неопределённости: фиксировать категории параметров по очереди, чтобы оценить вклад каждой группы в вариабельность (ANOVA/Sobol). - Глобальный анализ чувствительности (Sobol, FAST) и локальный (PRCC). - Сценарный анализ для политик: варьировать скорости вакцинации, эффективность, долю комплаенса, продолжительность локдауна. - Метрики для оценки прогнозов: RMSE, MAE, CRPS для распределений, coverage частоты попадания наблюдений в предиктивные интервалы. Практическая реализация и вычисления - Модульная архитектура: чёткое разделение движка симуляции, модели контактов, модели наблюдений, интерфейса калибровки. - Масштабирование: параллельные прогоня (MPI/cluster), батчевые запуски для ансамблей, использование контейнеров (Docker) для воспроизводимости. - Проверка производительности: профилирование, уменьшение деталей там, где не влияют на выходные показатели. - Логирование, тестирование кода и объяснимость (feature importance по агент-атрибутам). Рекомендованный рабочий план (сжатый) 1. Собрать данные демографии, контактов, наблюдений; задать приоритеты вопросов. 2. Построить минимальный ABM с возрастными слоями и ключевыми контактами; включить сезонность и простую модель интервенций. 3. Описать модель наблюдений и априоры. 4. Калибровать последовательностью: сначала ключевые параметры (R0/β0) на госпитализациях/смертях, затем адаптировать на случаях/серологии (SMC/ABC). 5. Валидировать на независимых данных и синтетике. 6. Выполнить ансамблевые прогнозы и анализ неопределённости; предоставить интервалы и сценарии. Короткие предупреждения - Без явной модели наблюдений калибровка приведёт к смещённым оценкам (особенно при сильном недоучёте). - Некоторые параметры неидентифицируемы: используйте априоры и независимые датасеты. - Коммуникация: всегда указывайте источники неопределённости и предположения (вариант вируса, сезонность, комплаенс). Если нужны — могу дать пример структуры данных агента и примеры кодовой схемы калибровки (SMC/ABC) или шаблон наблюдательной модели.
- Тип: агентная (ABM) или масштабируемая синтетическая популяция (веса агентов) для города N∼104 − 106N\sim 10^4\!-\!10^6N∼104−106.
- Компоненты:
- Агент: атрибуты — возраст, пол, домохозяйство, профессия/школа, мобильность/комплаенс, иммунный статус, вакцинация.
- Контактные слои: домашний, школьный, рабочий/университет, транспорт, случайные встречи/сообщество. Каждый слой имеет матрицу контактов или сеть.
- Динамика болезни: SEIR-подобная с фазами (экспозиция, инкубация, предсимптом., симптом., госпитализация, восстановление/смерть), длительности — случайные величины (гамма/лог-норм).
- Интервенции: вакцинация (снижение восприимчивости/инфекционности, бустеры, выгорание), локдаун (редукция контактов по слоям), тестирование/изоляция, таргетированные меры.
- Сезонность: модуль повышающей/понижающей трансмиссивности.
- Модель наблюдений: процессы регистрации случаев/госпитализаций/смертей/серопревалентности с учётом задержек и недоучёта.
Ключевые формулы (пример)
- Сезонная передача:
β(t)=β0(1+Acos2π(t−ϕ)365) \beta(t)=\beta_0\Big(1 + A\cos\frac{2\pi (t-\phi)}{365}\Big)
β(t)=β0 (1+Acos3652π(t−ϕ) ) - Сила инфекции для агента iii:
λi(t)=∑слои Lβ(t)∑j∈контактыL(i)wijIj(t)NL \lambda_i(t)=\sum_{\text{слои }L}\beta(t)\sum_{j\in \text{контакты}_L(i)} w_{ij} \frac{I_j(t)}{N_L}
λi (t)=слои L∑ β(t)j∈контактыL (i)∑ wij NL Ij (t) - Наблюдаемая отчётность (пример):
yt∼NegBin(ρ⋅incidencet, ϕ) y_t \sim \operatorname{NegBin}\big(\rho\cdot \text{incidence}_t,\ \phi\big)
yt ∼NegBin(ρ⋅incidencet , ϕ) где ρ\rhoρ — доля зарегистрированных, ϕ\phiϕ — параметр сверхдисперсии.
Выбор уровня детализации (руководящие принципы)
- Полный ABM (каждый человек) — если NNN небольшое/среднее и есть вычисл. ресурсы, нужен для оценки локальных эффектов и неравномерных интервенций.
- Взвешенная/аггрегированная ABM — когда NNN велико: моделируйте репрезентативные агенты с весами.
- Микро-среда vs популяционные слои: детализируйте те слои, которые больше всего влияют на политики (школы, семьи, транспорт).
- Временной шаг: суточный чаще всего достаточен; при необходимости — почасовой для транспорта/коротких контактов.
- Базовая рекомендация: начать с минимального набора атрибутов, достаточного для ответов на целевые вопросы (возраст, дом, работа/школа, мобильность, вакцинация), затем наращивать.
Параметризация данных и источники
- Демография: перепись, реестры.
- Контакты: POLYMOD/локальные опросы, мобильные данные (агрегированные потоки), расписания школ/работ.
- Клинические параметры: литература (инфекционность, периоды), локальные НПЦ/больницы.
- Вмешательства: логи мер, данные о вакцинации по возрасту/району, мобильность (Google/Apple, телеком).
Калибровка на неполных данных
- Представление наблюдений: явная модель наблюдения для каждого типа данных (задержки, тест/чувствительность, недоучёт).
- Байесовский подход: найти апостериорное распределение
p(θ∣y)∝p(y∣θ)p(θ) p(\theta\mid y)\propto p(y\mid\theta)p(\theta)
p(θ∣y)∝p(y∣θ)p(θ) где yyy — все доступные наблюдения (случаи, госпитализации, серология, wastewater).
- Методы:
- Частицы/Sequential Monte Carlo (SMC/Particle Filter) для одновременного оценивания скрытого состояния и параметров.
- ABC-SMC (Approximate Bayesian Computation) — когда явный likelihood сложен.
- MCMC с эмульгатором/суррогатной моделью (Gaussian Process) для ускорения.
- Оптимизационные методы (Bayesian Optimization) для быстро приближённой калибровки.
- Целевая функция/likelihood: использовать комбинированный likelihood по источникам с весами и учётом дисперсии:
logL(θ)=∑s∈sources∑tlogps(ys,t∣θ) \log L(\theta)=\sum_{s\in\text{sources}}\sum_t \log p_s(y_{s,t}\mid \theta)
logL(θ)=s∈sources∑ t∑ logps (ys,t ∣θ) - Информативные априорные распределения для плохо идентифицируемых параметров, иерархические модели для районов/возрастных групп.
Валидация на неполных/шумных данных
- Кросс-валидация по времени: каллибруем на t≤T0t\le T_0t≤T0 , валидируем прогнозы на T0<T≤T1T_0<T\le T_1T0 <T≤T1 .
- Posterior predictive checks: сравнивать распределения симулированных наблюдений с реальными данными (coverage, bias).
- Использование независимых источников (серосопр., wastewater, госпитализации) для валидации, которые не использовались в калибровке.
- Синтетические эксперименты: генерация «ground-truth» синтетических данных и проверка способности метода восстановить параметры.
- Валидация пространственно: проверять прогнозы по районам/школам при условии калибровки на агрегатных данных.
Оценка неопределённости прогнозов
- Множественные типы неопределённости:
- стохастическая (рандомизация в ABM),
- параметрическая (неопределённые параметры),
- структурная (альтернативные модели),
- наблюдательная (ошибки в данных).
- Практика:
- Генерировать ансамбль симуляций, комбинируя сэмплы из апостериора параметров и разные RNG-seed: коллекция траекторий даёт предиктивное распределение.
- Представлять интервалы доверия/достоверности, например 50%50\%50% и 90%90\%90% предиктивные интервалы.
- Декомпозиция неопределённости: фиксировать категории параметров по очереди, чтобы оценить вклад каждой группы в вариабельность (ANOVA/Sobol).
- Глобальный анализ чувствительности (Sobol, FAST) и локальный (PRCC).
- Сценарный анализ для политик: варьировать скорости вакцинации, эффективность, долю комплаенса, продолжительность локдауна.
- Метрики для оценки прогнозов: RMSE, MAE, CRPS для распределений, coverage частоты попадания наблюдений в предиктивные интервалы.
Практическая реализация и вычисления
- Модульная архитектура: чёткое разделение движка симуляции, модели контактов, модели наблюдений, интерфейса калибровки.
- Масштабирование: параллельные прогоня (MPI/cluster), батчевые запуски для ансамблей, использование контейнеров (Docker) для воспроизводимости.
- Проверка производительности: профилирование, уменьшение деталей там, где не влияют на выходные показатели.
- Логирование, тестирование кода и объяснимость (feature importance по агент-атрибутам).
Рекомендованный рабочий план (сжатый)
1. Собрать данные демографии, контактов, наблюдений; задать приоритеты вопросов.
2. Построить минимальный ABM с возрастными слоями и ключевыми контактами; включить сезонность и простую модель интервенций.
3. Описать модель наблюдений и априоры.
4. Калибровать последовательностью: сначала ключевые параметры (R0/β0) на госпитализациях/смертях, затем адаптировать на случаях/серологии (SMC/ABC).
5. Валидировать на независимых данных и синтетике.
6. Выполнить ансамблевые прогнозы и анализ неопределённости; предоставить интервалы и сценарии.
Короткие предупреждения
- Без явной модели наблюдений калибровка приведёт к смещённым оценкам (особенно при сильном недоучёте).
- Некоторые параметры неидентифицируемы: используйте априоры и независимые датасеты.
- Коммуникация: всегда указывайте источники неопределённости и предположения (вариант вируса, сезонность, комплаенс).
Если нужны — могу дать пример структуры данных агента и примеры кодовой схемы калибровки (SMC/ABC) или шаблон наблюдательной модели.