【Python数学建模】SEIR传染病模型模型延伸-SEIDR模型(一),加入疫苗接种、政府管控、病毒变异等因素的影响

article/2025/9/25 11:45:17

目录

一. SEIR传染病模型

二. SEIR模型的延伸——SEIDR模型

三. 模型延伸——影响因素1:疫苗接种

四. 模型延伸——影响因素2:政府管控

五. 模型延伸——影响因素3:病毒变异


写在前面:

需要源代码的小伙伴可以移步到我的GitHub仓库https://github.com/moyuweiqing/SEIR-Model-extension 中进行获取,如果觉得我的文章或代码帮助到你的话,不妨在文章或GitHub代码中给我点个赞,谢谢大家!


一. SEIR传染病模型

SEIR传染病模型是一个在数据建模中常见的基础模型,其中分为以下四类人群:

S (Susceptible),易感者,指缺乏免疫能力健康人,与感染者接触后容易受到感染;

E (Exposed),暴露者/潜伏者 ,指接触过感染者,在还未发病或发生症状的人,可用于存在潜伏期的传染病;暴露者可以有传染性,具体取决于模型和传染病本身情况;

I (Infectious),患病者,指有传染性的病人,可以传播给 S,将其变为 E 或 I ;

R (Recovered),康复者,指病愈后具有免疫力的人;康复者可以终身免疫,或者是受到二次感染。

 图1 SEIR模型人群转化图

其基本公式如下:

dS/dt = -r\beta (I+E) S / N

dE/dt = r\beta (I + E)S / N - \alpha E

dI/dt = \alpha E - \gamma I

dR/dt = \gamma I

此模型无解析解,给定指定的参数可求数值解。

图2 SEIR模型


二. SEIR模型的延伸——SEIDR模型

在这里,假定患病者(Infectious)在患病期间有概率康复或死亡,设定死亡率为\delta;则在患病期间,患者可以转化为康复者(Recovered)和死亡者(Dead),则延伸为SEIDR模型,其微分公式如下:

dS/dt = -r\beta (I+E) S / N

dE/dt = r\beta (I + E)S / N - \alpha E

dI/dt = \alpha E - \gamma I - \delta I

dD/dt = \delta I

dR/dt = \gamma I

此时,日死亡率为\delta,日治愈率为\gamma,该传染病的致死率为 \delta / \left (\delta +\gamma \right ) 。例如,日死亡率\delta=0.02,日治愈率为\gamma=0.10,该传染病的致死率为 \delta / \left (\delta +\gamma \right )= 0.02 / ( 0.02 + 0.10 ) * 100% = 16.7%

python的模型微分代码如下:

ds_dt = - lamda * beta * s * (i + e) / n
de_dt = lamda * beta * s * (i + e) / n - alpha * e
di_dt = alpha * e - gamma * i - delta * i
dd_dt = delta * i
dr_dt = gamma * i

此时,模型的效果图如下:

图3 SEIDR模型 


三. 模型延伸——影响因素1:疫苗接种

引入疫苗(vaccine)的接种影响因素,接种疫苗可以直接反映在SEIDR中的感染率\beta、死亡率\delta、康复率\gamma,影响传染病的致死率 \delta / \left (\delta +\gamma \right ) 数值情况。具体的影响可以基本分为以下四种情况作进一步讨论:

  1. 一剂疫苗,在传染病发生时期即存在疫苗,在传染病爆发的同时开始接种疫苗。
  2. 一剂疫苗,传染病发生时并无疫苗,疫苗相对于传染病传播具有延迟性,在传染病开始爆发T日后开始接种疫苗。
  3. 二剂疫苗,在传染病发生时期即存在疫苗,在传染病爆发的同时开始接种第一剂疫苗;在两针疫苗的间隔期后开始接种第二剂疫苗。
  4. 二剂疫苗,传染病发生时并无疫苗,疫苗相对于传染病传播具有延迟性,在传染病开始爆发T日后开始接种第一剂疫苗;在两针疫苗的间隔期后开始接种第二剂疫苗。

引入该变量后,模型的基本微分公式如下:

dS/dt = \sum -r\beta _{i} \left ( I+E \right )/N+\sum \nu _{j} S_{i},\: \: \: \: i\epsilon (0,1,2), j\epsilon (1,2)

dE/dt = \sum r\beta _{i} \left ( I+E \right )/N+\sum \alpha E_{i},\: \: \: \: i\epsilon (0,1,2)

dI/dt = \sum \left ( \alpha E_{i} - \gamma_{i} I_{i} -\delta_{i} I_{i} \right),\: \: \: \: \: i\epsilon \left ( 0, 1, 2 \right )

dD/dt = \sum \delta _{i}I_{i}, \: \: \: \: \: i\epsilon \left ( 0, 1,2 \right )

dR/dt = \sum \gamma _{i}I_{i},\: \: \: \: \: i\epsilon \left ( 0, 1, 2 \right )

其中,i\epsilon (0,1,2)是对应的是未接种疫苗、接种一剂疫苗和接种两剂疫苗的情况,S_{i}E_{i}I_{i}分别是不同疫苗接种情况的易感人群、潜伏者和感染者,\beta _{i}\gamma_{i}\delta_{i}分别对应不同疫苗接种情况下各个人群的患病率、康复率、死亡率。\nu _{j}, j\epsilon \left ( 1,2 \right )表示一剂疫苗的日接种率和二剂疫苗的日接种率。

具体的一个样例如下:

ds0_dt = - lamda * beta0 * s0 * i_e / n - v1 * s0
ds1_dt = - lamda * beta1 * s1 * i_e / n + v1 * s0 - v2 * s1
ds2_dt = - lamda * beta2 * s2 * i_e / n + v2 * s1
de0_dt = lamda * beta0 * s0 * i_e / n - alpha * e0
de1_dt = lamda * beta1 * s1 * i_e / n - alpha * e1
de2_dt = lamda * beta2 * s2 * i_e / n - alpha * e2
di0_dt = alpha * e0 - gamma0 * i0 - delta0 * i0
di1_dt = alpha * e1 - gamma1 * i1 - delta1 * i1
di2_dt = alpha * e2 - gamma2 * i2 - delta2 * i2
dd0_dt = delta0 * i0
dd1_dt = delta1 * i1
dd2_dt = delta2 * i2
dr_dt = gamma0 * i0 + gamma1 * i1 + gamma2 * i2

此时,模型的效果图如下:

图4 SEIDR_V2t模型


四. 模型延伸——影响因素2:政府管控

在传染病影响情况较为严重的情况下,政府会进行管控,政府通过不同的手段和措施进行管控,其不同的手段和措施会影响某一些参数。例如,如果政府通过采取措施限制人员接触,其在模型中会直接影响到单位时间内受感染者接触的易感人群数量r,在政府采取限制人员接触的措施后,r的数值会降低。

具体案例如下:

if t < 30:         # 从第30天开始限制人员接触r = 5
else:r = 2

此时,模型的效果图如下:

图5 SEIDR_G模型 


五. 模型延伸——影响因素3:病毒变异

考虑病毒变异的影响,在传染病的传播过程中,病毒会发生变异,使得其传染性和致死率会发生变化。例如在本次Covid-19的疫情影响中,从最开始的毒株,后面变异到传染性更强的德尔塔毒株,以及后面的奥密克戎毒株,其传染性逐渐变强,而其致死率反而逐渐降低。因此,在时间维度上引入病毒变异的情况,其在模型中会直接影响到感染率\beta和致死率\delta

具体案例如下:

if t >= 30 and t <= 60:                 # 从第30天开始病毒发生变异beta = beta * 1.2                   # 传染性增强delta = delta * 0.8                 # 致死性降低
elif t > 60:                            # 第二次变异beta = beta * 1.5                   # 传染性进一步增强delta = delta * 0.5                 # 致死性进一步降低

此时,模型的效果图如下:

图6 SEIDR_C模型 

后续文章:

【Python数学建模】SEIR传染病模型模型延伸-SEIDR模型(二),加入外部输入等因素的影响,延伸模型_moyuweiqing的博客-CSDN博客


http://chatgpt.dhexx.cn/article/BEOmBg08.shtml

相关文章

Matlab-SEIR传染病模型预测

文章目录 1. SEIR模型2. Demo13. Demo24. 数据 1. SEIR模型 适用于存在易感者、暴露者、患病者和康复者4类人群&#xff0c;有潜伏期、治愈后获得终身免疫的疾病&#xff0c;如带状疱疹、水痘。 模型假设 假设易感者与患病者有效接触即变为暴露者&#xff0c;暴露者经过平均…

传染病学模型 | Matlab实现SEIRS传染病学模型 (SEIRS Epidemic Model)

文章目录 效果一览基本描述模型介绍程序设计参考资料效果一览 基本描述 传染病学模型 | Matlab实现SEIRS传染病学模型 (SEIRS Epidemic Model) 模型介绍 SEIRS是一种基于计算机模拟的传染病学模型,用于研究人群中传染病的传播和控制。与其他传染病学模型不同,SEIRS模型考虑了…

传染病模型3

一、研究方向 建立传染病的数学模型描述传染病的传播过程 分析感染人数的变化规律&#xff0c;预测传染病高峰的到来 探索控制、根除、预防传染病传播蔓延的手段 二、舱室 流行病学中的一大类模型&#xff0c;称为“舱室”模型&#xff0c;它是将人群分成若干个“舱室…

传染疾病模型

1 分支过程 1.1 工作原理 第一波疫情 假设一个人携带一种新的病毒&#xff0c;以独立的概率p将疾病传染给遇到的每一个人假设这个人在感染期遇到了k个人 ——>这k个人是该疾病传染的第一波基于疾病是随机传染的&#xff0c;所以第一波中有些人会感染疾病&#xff0c;有些人…

用python实现传染病模型传染病模型

用python实现传染病模型 1.SI模型1.1 代码实现1.2 模型的结果 2.SIS &#xff08;治愈后仍然还是易感者&#xff09;2.1 代码实现2.2模型的结果 3 SIR模型&#xff08;治愈后直接移除&#xff09;3.2代码实现3.2绘制图像&#xff1a; 4.SEIR 模型&#xff08;新增一个人群&…

基于SEIR传染病模型的新冠肺炎疫情预测

整理一下暑假参加的数学建模训练题&#xff1a;&#xff09; 仅供学习理解传染病模型 源代码仅供参考&#xff1a;MathematicalModeling/COVID-19 at main AOYLAOTANG/MathematicalModeling GitHub 目录 一、题目介绍 二、问题分析 2.1问题一&#xff1a; 2.2问题二&am…

传染病模型(1)——SI模型及matlab详解

前言 常见的传染病模型按照具体的传染病的特点可分为 SI、SIS、SIR、SIRS、SEIR 模型。其中“S”“E”“I”“R”的现实含义如下&#xff1a; S (Susceptible)&#xff0c;易感者&#xff0c;指缺乏免疫能力健康人&#xff0c;与感染者接触后容易受到感染&#xff1b; E (Ex…

Python:SEIR传染病模型

Hello&#xff0c;大家好&#xff01;好久没有更新了&#xff0c;今天给大家介绍一个非常经典的模型——SEIR传染病模型&#xff01; SEIR传染病模型 模型介绍S、E、I、R代表的含义模型建立变量解释建立微分方程转化迭代形式 Python实现总结获得源代码 模型介绍 传染病的基本…

经典的传染病模型简介 + SIS情况分析

传染病模型简介 SIS情况分析 简介各类经典传染病模型&#xff08;基础形式&#xff09;SIS模型假设符号说明微分方程组模型结论 经典传染病模型的缺陷 简介 研究传染病模型&#xff0c;对社会经济和维持秩序有重大意义&#xff0c;尤其在过去的2020年&#xff0c;新冠疫情爆发…

传染病模型

参考&#xff1a;https://www.zhihu.com/question/367466399?fromgroupmessage 假定人群分为4种&#xff0c;分别是&#xff1a; SUSCEPTIBLES:易感者&#xff0c;潜在的可感染人群。EXPOSED&#xff1a;潜伏者&#xff0c;已经被感染没有表现出来的人群。INFECTIVES&#xf…

微分方程传染病模型之指数模型-SI模型-SIS模型-SIR模型

传染病&#xff08;瘟疫&#xff09;经常在世界各地流行&#xff0c;如霍乱、天花、艾滋病、SARS、新型冠状病毒、H5N1病毒等&#xff0c;建立传染病的数学模型&#xff0c;分析其变化规律&#xff0c;防止其蔓延是一项艰巨的任务&#xff0c;这里就一般的传染规律讨论传染病的…

数学模型:传染病模型

传染病模型 需要考虑的问题基本方法模型1模型2&#xff08;SI模型&#xff09;模型3&#xff08;SIS模型&#xff09;模型4&#xff08;SIR模型&#xff09; 需要考虑的问题 描述传染病的传播过程分析受感染人数的变化规律预报传染病高潮到来的时刻预防传染病蔓延的手段 基本…

传染病模型知识储备

一、模型中的人群分类 S (Susceptible)&#xff0c;易感者&#xff0c;指缺乏免疫能力健康人&#xff0c;与感染者接触后容易受到感染&#xff1b; E (Exposed)&#xff0c;暴露者 &#xff0c;指接触过感染者但暂无传染性的人&#xff0c;可用于存在潜伏期的传染病&#xff…

传染病模型-SIR

一、模型背景 传染病模型指传染病的基本数学模型&#xff0c;主要研究传染病的传播速度、空间范围、传播途径、动力学机理等问题&#xff0c;以指导对传染病的有效地预防和控制。常见的传染病模型按照传染病类型分为 SI、SIR、SIRS、SEIR 模型&#xff0c;本文着重介绍其中的SI…

C语言用函数、递归的方法求n的阶乘

函数fac代码 当n<1时&#xff0c;结果为1 当n>1时&#xff0c;n只要乘前一个n的阶乘值就是n的阶乘&#xff0c;即&#xff1a;n*fac(n-1) int fac(int n) {if(n<1)return 1;elsereturn n*fac(n-1); } 主函数代码 int main() {int n0;int ret0;scanf("%d&quo…

通过C语言实现函数的递归 ---自己调用自己

Hellow&#xff0c;我是jack&#xff0c;今天给大家分享的是C语言实现函数的递归调用。 在使用递归调用时&#xff0c;我们应明白以下几点&#xff1a; 1.存在限制条件 限制条件不存在时&#xff0c;不在递归 2.递归越来越接近结尾 3.递归层次不能太深 注意这几点就是让我们在…

C++语言基础--递归函数

对于很多编程初学者来说&#xff0c;递归算法是学习语言的最大障碍之一。可能也有一大部分人知道递归&#xff0c;也能看的懂递归&#xff0c;但在实际做题过程中&#xff0c;却不知道怎么使用 递归的定义 1、很官方的说法 递归&#xff0c;在数学与计算机科学中&#xff0c;…

11.函数(C语言)+递归函数(超清晰图解递归)

函数 1.函数是什么&#xff1f;2.库函数1&#xff09;库函数的基本知识2&#xff09;初识几个库函数 3.自定义函数自定义函数的组成 4.函数参数1 )实际参数&#xff08;实参&#xff09;&#xff1a;2) 形式参数&#xff08;形参&#xff09;&#xff1a; 5.函数调用1) 传值调用…

C语言之函数递归

前言   从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&#xff1f;"从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&…

C语言——函数递归

文章目录 前言递归的概念递归的两个必要条件例题1.递归实现阶乘2.递归实现strlen函数3.计算一个正整数各位数字的和4.递归实现整数n的整数k次方5.递归实现斐波那契数6.递归实现字符串逆序7.汉诺塔8.青蛙跳台阶9.将一个十进制数以二进制的形式打印 前言 本文总结了几个递归基础例…