Читать книгу Искусственный интеллект в прикладных науках. Медицина онлайн
Потеря временного иммунитета: После определенного времени временный иммунитет уменьшается, и ранее выздоровевшие снова становятся подверженными инфекции.
Повторение цикла: Процесс повторяется, пока большинство популяции не будет либо заражено, либо приобретет иммунитет.
Модель позволяет нам проследить динамику распространения болезни во времени, учитывая временные аспекты, такие как инкубационный период и временной иммунитет, что делает ее более реалистичной и полезной для прогнозирования и управления эпидемиологической ситуацией.
Рассмотрим пример простой реализации SEIRS-модели на языке Python с использованием библиотеки `numpy` для вычислений и `matplotlib` для визуализации:
```python
import numpy as np
import matplotlib.pyplot as plt
def seirs_model(beta, sigma, gamma, delta, susceptible, exposed, infectious, recovered, days):
N = susceptible + exposed + infectious + recovered
S = [susceptible]
E = [exposed]
I = [infectious]
R = [recovered]
for _ in range(days):
new_exposed = beta * S[-1] * I[-1] / N
new_infectious = sigma * E[-1]
new_recovered = gamma * I[-1]
new_susceptible = delta * R[-1]
susceptible -= new_exposed
exposed += new_exposed – new_infectious
infectious += new_infectious – new_recovered
recovered += new_recovered – new_susceptible
S.append(susceptible)
E.append(exposed)
I.append(infectious)
R.append(recovered)
return S, E, I, R
# Параметры модели
beta = 0.3 # Скорость инфекции
sigma = 0.2 # Скорость инкубационного периода
gamma = 0.1 # Скорость выздоровления
delta = 0.05 # Скорость временного иммунитета
susceptible = 990
exposed = 10
infectious = 0
recovered = 0
days = 160
# Запуск модели
S, E, I, R = seirs_model(beta, sigma, gamma, delta, susceptible, exposed, infectious, recovered, days)
# Визуализация результатов
plt.figure(figsize=(10, 6))
plt.plot(S, label='Susceptible')
plt.plot(E, label='Exposed')
plt.plot(I, label='Infectious')
plt.plot(R, label='Recovered')
plt.xlabel('Days')
plt.ylabel('Population')
plt.title('SEIRS Model')
plt.legend()
plt.grid(True)