SIS模型

使用Python实现SIS模型,模拟流行病传播过程


日期

SIS模型

1 概述

SIS模型(易感-感染-易感模型)是一种经典的传染病模型,用于描述疾病在一个固定人群中传播和消退的过程。在SIS模型中,个体在感染后不会获得长期免疫,康复后会重新回到易感状态。这种模型适用于那些感染后无法获得永久免疫的疾病,如普通感冒或某些性传播疾病。

1.1 模型假设

SIS模型基于以下几个基本假设:

  1. 固定人群规模:总人口数 N 保持不变,不考虑出生、死亡和迁移。

  2. 同质混合:人群中每个人都有相同的概率与其他任何个体接触。

  3. 瞬时接触:传染过程发生在接触时,不考虑接触的持续时间。

  4. 易感与感染状态:个体只能处于易感(S)或感染(I)两种状态。

  5. 无长期免疫:感染者康复后立即恢复为易感状态,无法获得免疫力。

  6. 恒定参数:传播率 β 和康复率 γ 在整个过程中保持不变。

参数在人群中的作用

  1. 传播率 β
  1. 康复率 γ
  1. 初始感染人数 I₀
  1. 易感者 S₀
  1. 模拟时间

1.2 模型描述

SIS模型通过描述易感者(S)和感染者(I)之间的人群流动,展示了疾病传播的动态过程。在该模型中,总人口(N)保持不变,人群在易感和感染两种状态之间转化:

  1. 易感者到感染者的转化:当易感者与感染者接触时,易感者有一定概率被感染,成为感染者。感染的速率由传播率(β)和当前感染者、易感者的数量决定。

  2. 感染者到易感者的转化:感染者在一定时间后康复,但由于无法获得长期免疫,他们会重新回到易感状态。康复的速率由康复率(γ)决定。

通过观察人群在这两种状态间的流动,可以理解疾病传播的主要驱动力及其长期趋势。这种模型特别适用于那些感染后不会形成长期免疫的疾病,如普通感冒等。

1.3 模型参数及含义

参数 含义
N 总人口数
β 传播率,疾病传播的速率
γ 康复率,感染者康复的速率
S 易感者数量
I 感染者数量

2 模型流程图及方程

2.1 模型流程图

以下是SIS模型的流程图,展示了易感者和感染者之间的转化过程:

SIS模型流程图

2.2 模型方程

SIS模型的核心在于描述易感者和感染者数量随时间的变化,其数学表达式如下:

$$ \begin{cases} \frac{dS}{dt} = -\beta \frac{SI}{N} + \gamma I \\
\frac{dI}{dt} = \beta \frac{SI}{N} - \gamma I \end{cases} $$

其中:

3 适用疾病流行条件

SIS模型适用于以下类型的传染病流行条件:

  1. 无长期免疫:疾病感染后,个体无法获得长期免疫力,康复后会重新回到易感状态。例如,普通感冒、某些性传播疾病等。
  2. 固定人群规模:总人口数在模型的时间范围内保持相对稳定,不考虑出生、死亡和人口迁移的影响。
  3. 同质混合:假设人群中的个体随机接触,没有特定的群体结构或网络限制。
  4. 快速康复:疾病的康复时间较短,个体能够频繁地在易感和感染状态之间转变。
  5. 传播途径简单:疾病的传播方式较为直接,如通过呼吸道、直接接触等。

在这些条件下,SIS模型能够有效地描述疾病的传播动态,并为公共卫生决策提供参考。

4 代码(Python)

本节将详细展示如何使用Python实现SIS模型,包括条件设定、代码实现以及结果分析。

4.1 条件设定

在进行模型模拟前,需要设定以下条件和参数:

参数设定的具体值

为模拟实际情况,设置以下具体参数:

通过这些参数的设定,可以较为全面地观察疫情在人群中的传播过程,并评估不同因素对传播动态的影响。

4.2 代码

以下Python代码实现了SIS模型的模拟过程,并生成易感者和感染者人数随时间变化的图表。

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp

# 设置中文字体
plt.rcParams['font.family'] = ['SimHei']  # 或者 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# SIS模型微分方程
def sis_ode(t, y, N, beta, gamma):
    S, I = y  # 易感者和感染者数量
    dS = -beta * S * I / N + gamma * I  # 易感者的变化
    dI = beta * S * I / N - gamma * I   # 感染者的变化
    return [dS, dI]

# 参数设置
N = 21858000  # 总人口数
beta = 1.1    # 传播率
gamma = 0.25  # 康复率
I0 = 170      # 初始感染人数

# 计算初始的易感者数量
S0 = N - I0
y0 = [S0, I0]

# 时间点设置
t_start = 0         # 模拟开始天数
t_end = 160         # 模拟结束天数
num_points = 160    # 时间点数量
t_eval = np.linspace(t_start, t_end, num_points)

# 求解微分方程
solution = solve_ivp(
    sis_ode,
    [t_start, t_end],
    y0,
    args=(N, beta, gamma),
    t_eval=t_eval
)

# 检查求解是否成功
if solution.success:
    S, I = solution.y
else:
    raise RuntimeError("微分方程求解失败!")

# 绘制图形
plt.figure(figsize=(12, 6))
plt.plot(solution.t, S, label='易感者 S', color='blue')
plt.plot(solution.t, I, label='感染者 I', color='red')
plt.title(f'SIS 模型模拟结果 (β={beta}, γ={gamma}, N={N}, I0={I0})')
plt.xlabel('天数')
plt.ylabel('人数')
plt.legend()
plt.grid(True)
plt.show()

4.3 结果

运行上述代码后,得到如下模拟结果:

SIS模型模拟结果 图表解释

从图中可以观察到

这些结果表明,在SIS模型下,疾病会在群体中持续存在,并维持在一个稳定的感染水平。

关键观察点

  1. 传播与康复的平衡:当传播率 β 和康复率 γ 达到一定平衡时,感染者人数不再显著增加或减少,系统进入稳定状态。

  2. 初始感染者的影响:初始感染人数 I₀ 对疾病传播的早期动态有显著影响,但对长期稳定状态的影响较小。

  3. 模型的敏感性:通过调整 βγ 的值,可以显著改变感染者和易感者的动态变化,反映出模型对这些参数的高度敏感性。

进一步分析:

5 扩展(保证仓室不变)

在实际应用中,传染病的传播过程可能会受到各种干预措施的影响。为了进一步提高模型的现实性,可以在SIS模型的基础上进行扩展,加入干预措施或改变状态流向。以下是一些可能的扩展方向:

5.1 加入干预措施

5.1.1 隔离措施

引入隔离状态(Q),将一部分感染者隔离,减少他们与易感者的接触机会,从而降低传播率。

$$ \begin{cases} \frac{dS}{dt} = -\beta \frac{SI}{N} + \gamma I \\
\frac{dI}{dt} = \beta \frac{SI}{N} - (\gamma + \delta) I \\
\frac{dQ}{dt} = \delta I \end{cases} $$

其中:

5.1.2 疫苗接种

引入疫苗接种,将一部分易感者转化为免疫者(R),从而减少易感者数量。

$$ \begin{cases} \frac{dS}{dt} = -\beta \frac{SI}{N} - \nu S + \gamma I \\
\frac{dI}{dt} = \beta \frac{SI}{N} - \gamma I \\
\frac{dR}{dt} = \nu S \end{cases} $$

其中:

5.2 改变状态流向

5.2.1 考虑潜伏期

引入潜伏者状态(E),即个体在感染后有一段时间处于潜伏期,尚未具有传染性。

$$ \begin{cases} \frac{dS}{dt} = -\beta \frac{SI}{N} \\
\frac{dE}{dt} = \beta \frac{SI}{N} - \sigma E \\
\frac{dI}{dt} = \sigma E - \gamma I \end{cases} $$

其中:

5.2.2 多阶段感染

将感染者分为轻度感染和重度感染,分别对应不同的传播率和康复率。

$$ \begin{cases} \frac{dS}{dt} = -\beta_L \frac{SI_L}{N} - \beta_H \frac{SI_H}{N} \\
\frac{dI_L}{dt} = \beta_L \frac{SI_L}{N} - \gamma_L I_L \\
\frac{dI_H}{dt} = \beta_H \frac{SI_H}{N} - \gamma_H I_H \end{cases} $$

其中:

5.4 其他扩展方向

除了疫苗接种和隔离措施外,还可以考虑以下扩展,以进一步提高模型的现实性和应用范围:

5.4.1 人口流动

描述:考虑不同地区之间的人口迁移,模拟疾病在多个区域的传播。

实现方法

应用示例

5.4.2 年龄结构

描述:引入年龄分层,不同年龄组的传播率和康复率可能不同。

实现方法

应用示例

5.4.3 接触网络

描述:不再假设同质混合,采用复杂的接触网络模型,更真实地反映人群互动结构。

实现方法

应用示例

5.4.4 季节性因素

描述

考虑季节变化对传播率的影响,如流感在冬季传播更为严重。

实现方法

应用示例

5.4.5 多病原体竞争

描述:在同一人群中模拟多种病原体的竞争与共存,研究不同疾病之间的相互影响。

实现方法

应用示例

5.4.6 环境传播

描述:考虑疾病通过环境媒介(如水源、空气)传播,增加模型的复杂性和现实性。

实现方法

应用示例

5.4.7 经济与社会因素

描述:将经济和社会因素纳入模型,研究其对疾病传播和控制的影响。

实现方法

应用示例

通过这些扩展,传染病模型能够更全面地反映现实世界中的复杂因素,提供更精准的预测和有效的干预策略支持,为公共卫生决策者提供更有力的科学依据。

赵虹锋
壮汉二米五