使用Python实现SEIAR-SEA-SEA-W模型,模拟病毒在“人群-媒介-宿主-环境”四个部分之间的传播
该模型是基于SEIAR-SEA-SEA-W的多种群多途径动态模型(MMDM)。此案例将基于该模型,模拟病毒在“人群-媒介-宿主-环境”四个部分之间的传播,并分别用下标1、2、3和w表示。
在构建基于SEIAR-SEA-SEA-W的多种群多途径动态模型(MMDM)时,做出以下假设:
(1) 系统划分:
(2) 人群部分的假设:
(3) 媒介部分的假设:
(4) 宿主部分的假设:
(5) 环境部分的假设:
(6) 传播动力学假设:
参数符号 | 含义 |
---|---|
β1 | 人与人之间的传播系数 |
κ | 无症状感染相对传染系数 |
p | 潜伏感染的比例 |
1/ω1 | 潜伏期 |
1/γ | 显性感染的感染期 |
1/γ' | 潜伏感染期 |
f | 致死率 |
br | 出生率 |
dr | 死亡率 |
β2 | 媒介之间的传播系数 |
β21 | 媒介对人传播的传播系数 |
β23 | 媒介对宿主传播的传播系数 |
1/ω2 | 媒介的潜伏期 |
β3 | 宿主之间的传播系数 |
β31 | 宿主对人的传播系数 |
β32 | 宿主对媒介的传播系数 |
1/ω3 | 宿主的潜伏期 |
j | 宿主向环境传播的速率 |
βw | 环境对人和宿主的传播系数 |
W | 环境中的媒介密度 |
$$
\begin{cases}
\frac{dS_1}{dt} = br \cdot N - dr \cdot S_1 - \beta_1 \cdot S_1 \cdot (I_1 + \kappa \cdot A_1) - \beta_{2-1} \cdot S_1 \cdot A_2 - \beta_w \cdot S_1 \cdot W_{env} - \beta_{3-1} \cdot S_1 \cdot A_3 \\
\frac{dE_1}{dt} = \beta_1 \cdot S_1 \cdot (I_1 + \kappa \cdot A_1) + \beta_w \cdot S_1 \cdot W_{env} + \beta_{2-1} \cdot S_1 \cdot A_2 + \beta_{3-1} \cdot S_1 \cdot A_3 - dr \cdot E_1 - p \cdot \omega_1 \cdot E_1 - (1 - p) \cdot \omega_1 \cdot E_1 \\
\frac{dA_1}{dt} = p \cdot \omega_1 \cdot E_1 - dr \cdot A_1 - \gamma' \cdot A_1 \\
\frac{dI_1}{dt} = (1 - p) \cdot \omega_1 \cdot E_1 - \gamma \cdot I_1 - (dr + f) \cdot I_1 \\
\frac{dR_1}{dt} = \gamma' \cdot A_1 + \gamma \cdot I_1 - dr \cdot R_1 \\
\frac{dW_{env}}{dt} = j \cdot A_3 \\
\frac{dS_2}{dt} = -\beta_2 \cdot S_2 \cdot A_2 - \beta_{3-2} \cdot S_2 \cdot A_3 \\
\frac{dE_2}{dt} = \beta_2 \cdot S_2 \cdot A_2 + \beta_{3-2} \cdot S_2 \cdot A_3 - \omega_2 \cdot E_2 \\
\frac{dA_2}{dt} = \omega_2 \cdot E_2 \\
\frac{dS_3}{dt} = -\beta_w \cdot S_3 \cdot W_{env} - \beta_3 \cdot S_3 \cdot A_3 - \beta_{2-3} \cdot S_3 \cdot A_2 \\
\frac{dE_3}{dt} = \beta_3 \cdot S_3 \cdot A_3 + \beta_{2-3} \cdot S_3 \cdot A_2 + \beta_w \cdot S_3 \cdot W_{env} - \omega_3 \cdot E_3 \\
\frac{dA_3}{dt} = \omega_3 \cdot E_3
\end{cases}
$$
这个基于SEIAR-SEA-SEA-W的多种群多途径动态模型(MMDM)适用于描述通过多种途径传播的疾病,特别是那些涉及人群、媒介、宿主和环境之间复杂相互作用的传染病。以下是该模型适用的疾病条件:
多途径传播:
媒介传播:
宿主传播:
环境传播:
潜伏期和传染期:
无症状感染:
适用于该模型的典型疾病包括发热伴血小板减少综合征等,这些疾病会通过媒介、宿主和环境在人群中传播。
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
# 参数设置
br = 0.00009173 # 出生率
dr = 0.00007523 # 自然死亡率
κ = 1 # 无症状感染相对传染系数
p = 0.043 # 潜伏感染的比例
f = 0.16 # 致死率
# 潜伏期和感染期(单位:天)
ω1 = 1 / 11
γ = 1 / 14
γ_prime = 1 / 14
# 媒介相关参数
β2 = 0 # 媒介之间的传播系数
ω2 = 1 / 7
# 宿主相关参数
ω3 = 1 / 12
j = 10 # 宿主向环境传播的速率
# 环境相关
W = 0.048 # 环境中的媒介密度
# 定义 β 的季节性变化函数
def beta_seasonal(t, beta0, alpha, T):
return beta0 * (1 + np.sin(2 * np.pi * (t + alpha) / T))
# 定义动力学模型的微分方程
def MMDM_model(t, Y, beta0, alpha, T, br, dr, κ, p, f, ω1, γ, γ_prime, β2, ω2, ω3, j, W):
S1, E1, A1, I1, R1, W_env, S2, E2, A2, S3, E3, A3, X = Y
N = S1 + E1 + A1 + I1 + R1 # 人口总数
β1 = beta_seasonal(t, beta0, alpha, T) # 计算季节性β
β21 = 8 * β1
β23 = 8 * β1
β3 = 2 * β1
β31 = 2 * β1
β32 = 8 * β1
βw = 9 * β1
# 微分方程
dS1_dt = br * N - dr * S1 - β1 * S1 * (I1 + κ * A1) / N - β21 * S1 * A2 / N - βw * S1 * W_env / N - β31 * S1 * A3 / N
dE1_dt = β1 * S1 * (I1 + κ * A1) / N + βw * S1 * W_env / N + β21 * S1 * A2 / N + β31 * S1 * A3 / N - dr * E1 - p * ω1 * E1 - (1 - p) * ω1 * E1
dA1_dt = p * ω1 * E1 - dr * A1 - γ_prime * A1
dI1_dt = (1 - p) * ω1 * E1 - γ * I1 - (dr + f) * I1
dR1_dt = γ_prime * A1 + γ * I1 - dr * R1
dW_env_dt = j * A3
dS2_dt = -β2 * S2 * A2 / N - β32 * S2 * A3 / N
dE2_dt = β2 * S2 * A2 / N + β32 * S2 * A3 / N - ω2 * E2
dA2_dt = ω2 * E2
dS3_dt = -βw * S3 * W_env / N - β3 * S3 * A3 / N - β23 * S3 * A2 / N
dE3_dt = β3 * S3 * A3 / N + β23 * S3 * A2 / N + βw * S3 * W_env / N - ω3 * E3
dA3_dt = ω3 * E3
dX_dt = (1 - p) * ω1 * E1 # 新发病例数
return [dS1_dt, dE1_dt, dA1_dt, dI1_dt, dR1_dt, dW_env_dt, dS2_dt, dE2_dt, dA2_dt, dS3_dt, dE3_dt, dA3_dt, dX_dt]
# 初始值设置
S1_0 = 10000 # 初始易感人群
E1_0 = 0 # 初始潜伏期人群
A1_0 = 0 # 初始无症状感染者
I1_0 = 10 # 初始有症状感染者
R1_0 = 0 # 初始康复人群
W_env_0 = 0 # 初始环境中的媒介密度
S2_0 = 1000 # 初始媒介易感者
E2_0 = 0 # 初始媒介潜伏者
A2_0 = 1 # 初始媒介感染者
S3_0 = 1000 # 初始宿主易感者
E3_0 = 0 # 初始宿主潜伏者
A3_0 = 1 # 初始宿主感染者
X_0 = 0 # 初始新发病例数
Y0 = [S1_0, E1_0, A1_0, I1_0, R1_0, W_env_0, S2_0, E2_0, A2_0, S3_0, E3_0, A3_0, X_0]
# 时间范围 (单位:天)
t_span = (0, 365)
# 其他参数
beta0 = 0.0005 # 基础传播率
alpha = 0 # 相位偏移
T = 365 # 周期 (一年)
# 求解微分方程
sol = solve_ivp(MMDM_model, t_span, Y0, args=(beta0, alpha, T, br, dr, κ, p, f, ω1, γ, γ_prime, β2, ω2, ω3, j, W), method='RK45', t_eval=np.linspace(0, 365, 365))
# 可视化结果
plt.figure(figsize=(12, 8))
plt.plot(sol.t, sol.y[0], label='S1 (Susceptible)')
plt.plot(sol.t, sol.y[1], label='E1 (Exposed)')
plt.plot(sol.t, sol.y[2], label='A1 (Asymptomatic)')
plt.plot(sol.t, sol.y[3], label='I1 (Infected)')
plt.plot(sol.t, sol.y[4], label='R1 (Removed)')
plt.xlabel('Time (days)')
plt.ylabel('Population')
plt.title('MMDM Simulation')
plt.legend()
结果图展示了多种群多途径动态模型(MMDM)在1年(365天)内的模拟结果。模型包含以下五个群体:
结果清晰地展示了疾病传播过程中的时间动态,从以易感人群为主逐渐过渡到移除人群的稳定状态。
为了更全面地描述疾病传播过程并评估干预措施的效果,可以在现有SEIAR-SEA-SEA-W模型的基础上进行扩展。以下是几种可能的扩展方向:
干预措施是控制疾病传播的重要手段。可以在模型中引入以下干预措施:
疫苗接种:
在人群部分加入疫苗接种仓室 ( V_1 ),假设疫苗接种可以使人从易感者 ( S_1 ) 直接转移到免疫状态 ( V_1 )。
修改人群部分的方程:
$$ \frac{dS_1}{dt} = br \cdot N_1 - dr \cdot S_1 - \beta_1 S_1 (I_1 + \kappa A_1) - \beta_{21} S_1 A_2 - \beta_w S_1 W - \beta_{31} S_1 A_3 - v S_1 $$
$$\frac{dV_1}{dt} = v S_1 - dr \cdot V_1$$
其中,( v ) 是疫苗接种率。
媒介控制:
引入媒介控制措施(如杀虫剂使用、环境管理等),降低媒介的出生率或增加媒介的死亡率。
修改媒介部分的方程: $$ \frac{dS_2}{dt} = - \beta_2 S_2 A_2 - \beta_{32} S_2 A_3 - u S_2 $$ 其中,( u ) 是媒介控制措施导致的额外死亡率。
隔离和治疗:
在人群部分加入隔离仓室 ( Q_1 ),假设感染者 ( I_1 ) 可以通过隔离措施转移到 ( Q_1 )。
修改人群部分的方程: $$ \frac{dI_1}{dt} = (1 - p) \omega_1 E_1 - \gamma I_1 - (dr + f) I_1 - q I_1 $$ $$ \frac{dQ_1}{dt} = q I_1 - \gamma Q_1 $$
其中,( q ) 是隔离率。
可以通过改变仓室之间的流向来模拟不同的疾病传播机制:
假设康复者 ( R_1 ) 可能会再次感染病毒,重新成为易感者 ( S_1 )。
修改人群部分的方程: $$ \frac{dR_1}{dt} = \gamma' A_1 + \gamma I_1 - dr \cdot R_1 - \sigma R_1 $$ $$ \frac{dS_1}{dt} = br \cdot N_1 - dr \cdot S_1 - \beta_1 S_1 (I_1 + \kappa A_1) - \beta_{21} S_1 A_2 - \beta_w S_1 W - \beta_{31} S_1 A_3 + \sigma R_1 $$
其中,( σ ) 是再感染率。