基于离散时间系统的SEIRD 模型与免疫消退的随机模拟

在疫情防控的科学研究中,传统的 SIR 模型虽然经典,但无法满足对复杂传播过程的精确描述。今天我们将深入探讨一个更精细的传染病模型 ——SEIRD 模型,它不仅区分了不同结局的感染者,还考虑了免疫力随时间消退的重要因素。通过 MATLAB 代码实现,我们将揭示这种更贴近现实的模型如何帮助我们理解传染病的长期传播规律。

一、SEIRD 模型:更精细的传染病传播图景

1. 模型结构解析

SEIRD 模型将人群细分为 6 个类别:

  • S (Susceptible):易感者,可能被感染的健康人群
  • E (Exposed):暴露者,已感染但尚未具有传染性(潜伏期)
  • Ir (Infected - Recovering):将康复的感染者
  • Id (Infected - Dying):将死亡的感染者
  • R (Recovered):康复者,具有暂时免疫力
  • D (Deceased):死亡者

2. 关键参数意义

模型通过以下参数描述传播过程:

  • β (beta):感染率,表示接触导致感染的概率
  • δ (delta):潜伏期倒数,控制从暴露到传染的转变速率
  • γR (gamma_R):康复率,决定感染者康复的速度
  • γD (gamma_D):死亡率,刻画重症患者死亡的速率
  • μ (mu):病死率,区分感染者的不同结局
  • ω (omega):免疫力消退率,模拟抗体随时间减少的过程
  • ϵ (epsilon):输入病例率,模拟外部感染源的引入

二、模型数学原理:状态转移方程

SEIRD 模型的核心是一组差分方程,描述各状态间的转移关系:

\(\begin{aligned} S_{t+1} &= S_t - \beta S_t \frac{I_{R,t} + I_{D,t}}{N_t} + \omega R_t \\ E_{t+1} &= E_t + \beta S_t \frac{I_{R,t} + I_{D,t}}{N_t} - \delta E_t + \epsilon \\ I_{R,t+1} &= I_{R,t} + \delta (1-\mu) E_t - \gamma_R I_{R,t} + \epsilon \\ I_{D,t+1} &= I_{D,t} + \delta \mu E_t - \gamma_D I_{D,t} + \epsilon \\ R_{t+1} &= R_t + \gamma_R I_{R,t} - \omega R_t \\ D_{t+1} &= D_t + \gamma_D I_{D,t} \end{aligned}\)

这些方程体现了模型的核心逻辑:

  • 易感者 (S) 通过接触感染者 (Ir+Id) 转为暴露者 (E)
  • 暴露者 (E) 以 δ 的速率转为感染者,其中 μ 比例的感染者将死亡 (Id),其余将康复 (Ir)
  • 感染者 (Ir) 以 γR 的速率康复 (R),感染者 (Id) 以 γD 的速率死亡 (D)
  • 康复者 (R) 的免疫力以 ω 的速率消退,重新成为易感者 (S)

三、代码实现:随机模拟的力量

1. 参数设置与初始化

% SEIRD模型参数设置
S_ini = 1e6;       % 初始易感人数
E_ini = 1;         % 初始潜伏期人数
beta = 0.3;        % 感染率
delta = 0.2;       % 潜伏期倒数
gamma_R = 0.2;     % 康复率
gamma_D = 0.4;     % 死亡率
mu = 0.05;         % 病死率
omega = 1;         % 免疫力消退率
epsilon = 0.01;    % 输入病例率

% 时间与模拟设置
t_steps = 0:2000;
num_simulations = 25; % 多次模拟捕捉随机性

2. 随机模拟核心逻辑

代码使用随机抽样模拟状态转移:

% 主模拟循环
for sim = 1:num_simulations
    for t = 1:num_time_points-1
        % 获取当前状态
        current_S = S(t, sim);
        current_E = E(t, sim);
        current_Ir = Ir(t, sim);
        current_Id = Id(t, sim);
        current_R = R(t, sim);
        current_D = D(t, sim);
        
        % 计算感染压力和总人口
        I = current_Ir + current_Id;
        N = current_S + current_E + I + current_R + current_D;
        
        % 处理零人口情况
        p_SE = (N > 0) ? 1 - exp(-beta * I / N) : 0;
        
        % 计算转移概率
        p_EI = 1 - exp(-delta);
        p_IrR = 1 - exp(-gamma_R);
        p_IdD = 1 - exp(-gamma_D);
        p_RS = 1 - exp(-omega);
        
        % 随机抽样转移人数
        n_SE = binornd(current_S, p_SE);  % 易感转暴露
        n_EI = binornd(current_E, p_EI);  % 暴露转感染
        
        % 区分感染者结局
        if n_EI > 0
            n_EIrId = mnrnd(n_EI, [1-mu, mu]);  % 多项分布抽样
            n_EIr = n_EIrId(1);  % 转康复组
            n_EId = n_EIrId(2);  % 转死亡组
        else
            n_EIr = 0; n_EId = 0;
        end
        
        % 其他状态转移
        n_IrR = binornd(current_Ir, p_IrR);  % 康复
        n_IdD = binornd(current_Id, p_IdD);  % 死亡
        n_RS = binornd(current_R, p_RS);    % 免疫消退
        n_import_E = poissrnd(epsilon);     % 外部输入
        
        % 更新状态并确保非负
        S(t+1, sim) = max(current_S - n_SE + n_RS, 0);
        E(t+1, sim) = max(current_E + n_SE - n_EI + n_import_E, 0);
        Ir(t+1, sim) = max(current_Ir + n_EIr - n_IrR, 0);
        Id(t+1, sim) = max(current_Id + n_EId - n_IdD, 0);
        R(t+1, sim) = max(current_R + n_IrR - n_RS, 0);
        D(t+1, sim) = max(current_D + n_IdD, 0);
    end
end

这段代码通过随机抽样实现了模型的随机性:

  • 使用二项分布binornd模拟离散事件(如感染、康复)
  • 使用多项分布mnrnd模拟感染者的不同结局
  • 使用泊松分布poissrnd模拟外部病例输入
  • 通过多次模拟(25 次)捕捉系统的随机行为

四、结果分析:免疫力消退如何影响疫情

1. 可视化结果

代码绘制了所有状态变量随时间的变化:

% 绘制结果
figure;
hold on;
for i = 1: num_simulations
    plot(t_steps, S(:, i), 'LineWidth', 2, 'DisplayName', 'Susceptible');
    plot(t_steps, E(:, i), 'LineWidth', 2, 'DisplayName', 'Exposed');
    plot(t_steps, Ir(:, i), 'LineWidth', 2, 'DisplayName', 'Infected (Recovering)');
    plot(t_steps, Id(:, i), 'LineWidth', 2, 'DisplayName', 'Infected (Dying)');
    plot(t_steps, R(:, i), 'LineWidth', 2, 'DisplayName', 'Recovered');
    plot(t_steps, D(:, i), 'LineWidth', 2, 'DisplayName', 'Deceased');
end

xlabel('Time (days)');
ylabel('Number of individuals');
title('SEIRD Model Simulation');
legend('S', 'E', 'Ir', 'Id', 'R', 'D', 'Location', 'best');
grid on;

2. 关键发现

通过分析模拟结果,我们可以观察到:

  • 多次疫情波峰:由于免疫力消退 (ω=1),康复者会逐渐转回易感状态,导致疫情可能出现多轮爆发
  • 输入病例的影响:即使本地疫情得到控制,外部输入 (ϵ=0.01) 仍可能引发新的传播
  • 病死率的作用:通过 μ 参数区分不同结局的感染者,更准确地反映了真实疫情的死亡情况

五、模型应用与拓展

1. 公共卫生决策支持

SEIRD 模型可以帮助决策者评估:

  • 疫苗接种策略的长期效果
  • 不同防控措施对疫情曲线的影响
  • 医疗资源需求的动态变化

2. 参数敏感性分析

通过调整参数,可以研究:

  • 潜伏期长短对传播的影响 (δ)
  • 免疫持续时间 (ω 的倒数) 如何改变疫情轨迹
  • 输入病例控制 (ϵ) 的重要性

3. 模型扩展方向

  • 引入年龄结构:不同年龄段的感染率、病死率差异显著
  • 考虑空间扩散:模拟疫情在不同地区间的传播
  • 结合行为变化:如社交距离、戴口罩等干预措施

结语:用更精细的模型应对复杂疫情

SEIRD 模型通过细分感染状态和考虑免疫消退,为我们提供了更贴近现实的传染病传播图景。在面对 COVID-19 等具有长期流行潜力的疾病时,这类模型尤为重要。通过随机模拟,我们不仅能捕捉疫情的平均趋势,还能评估不确定性带来的风险。

互动话题:你认为 SEIRD 模型还可以在哪些方面进一步优化?欢迎在评论区分享你的见解!👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code_Verse

下章剧情由你定~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值