SIR及SEIR建模的简单示例

article/2025/9/26 10:40:21

目录

    • 概述
    • 1.一些定义
      • 1.1 一些名词
      • 1.2 一些符号
      • 1.3 一些定义
    • 2.方法论
      • 2.1 SIR
      • 2.2 SEIR
      • 2.3 代际传播
        • 2.3.1 传播矩阵
    • 3 模型实现
      • 3.1 参数设定
      • 3.2 SIR
        • (1)模型
        • (2)参数
        • (3)计算
        • (4)绘图
      • 3.3 SEIR
        • (1)模型
        • (2)参数
        • (3)计算
        • (4)绘图
      • 3.4 小结
    • 参考文献

概述

看了一些2019-nCoV相关的文章,摘录并总结了一些关于SIR和SEIR模型的定义。并通过代码进了简单模型的实现,使用R语言作为编程工具。

1.一些定义

1.1 一些名词

序号词汇解释
1Pneumonia肺炎
2Coronavirus冠状病毒
3Incubation潜伏
4Quarantined隔离
5Susceptible易感的,这里用于指易感人群,在CDC的公告中,所有人都属于易感人群。
6zoonotic动物传播的
7Reproductive再生,复制。这里指感染者再传播并产生新的感染者。
8novel新的
92019-nCoV2019新型冠状病毒

1.2 一些符号

序号符号含义
1 R 0 R_0 R0基础再传播人数
2 τ \tau τ传染概率,一名易感者和一名感染者接触时被感染的概率
3 c ˉ \bar{c} cˉ单位时间内和感染者接触的易感人员的平均比例值
4 d d d感染暴露时长
5 S S S易感人群
6 I I I感染人群
7 R R R移除人群,是指,被隔离或治愈而消除影响的感染人群
8E暴露人群, 处于潜伏期

1.3 一些定义

R 0 = τ ⋅ c ˉ ⋅ d R_0 = \tau \cdot \bar{c} \cdot d R0=τcˉd

用1小时表示1单位时长,通俗的理解:
再 传 播 人 数 = 传 染 率 ⋅ 接 触 易 感 人 数 的 平 均 值 ⋅ 感 染 暴 露 时 长 再传播人数=传染率\cdot 接触易感人数的平均值 \cdot 感染暴露时长 =
假定 τ = 0.2 , c ˉ = 5 , d = 4 \tau=0.2,\bar{c}=5,d=4 τ=0.2,cˉ=5,d=4,则 R 0 = 4 R_0=4 R0=4

2.方法论

2.1 SIR

SIR(Susceptible-Infected-Removed)模型,用于传染病的传播人数进行建模。

关于模型的一些定义和假设:

  1. N,封闭系统内的总人口。
  2. 传染率、排除率等为常量。
  3. 不考虑出生和自然死亡。
  4. 人群是均匀混合的。任何感染者可以以概率接触任何一名易感者,这里的概率可以用总体均值来替代。

通过模型的假设我们可以看到,SIR实际上是对传染病流行早期传播行为的建模。模型形式如下:
{ d s d t = − β s i d i d t = β s i − γ i d r d t = γ i \left \{ \begin{aligned} & \frac{ds}{dt} = -\beta s i \\ & \frac{di}{dt} = \beta s i -\gamma i \\ & \frac{dr}{dt} = \gamma i \end{aligned} \right. dtds=βsidtdi=βsiγidtdr=γi
其中 β = τ c ˉ \beta = \tau\bar{c} β=τcˉ表示有效接触率, v v v表示消除率, $\gamma 表 示 移 除 率 , 都 是 常 量 。 因 而 传 染 暴 露 时 长 实 际 上 是 表示移除率,都是常量。因而传染暴露时长实际上是 v 的 倒 数 , 有 的倒数,有 d=\gamma^{-1}$。

当传染病爆发时,感染者人数随着时间上升,因此有 d i / d t ≥ 0 di/dt\geq0 di/dt0,从而有:
β s i − γ i > β s i γ > i \beta s i-\gamma i\gt \\ \frac{\beta s i}{\gamma}>i βsiγi>γβsi>i
在一场疫情的爆发之初,每个人都可视为易感染群,因此这里 s ≈ 1 s\approx 1 s1,代入上式有:
β γ = τ c ˉ d = R 0 > 1 \frac{\beta}{\gamma}=\tau\bar{c}d=R_0>1 γβ=τcˉd=R0>1
因而当 R 0 > 1 R_0>1 R0>1时疫情是处于传染阶段的。

对上述微分方程组求解得到:
I = ( S 0 + I 0 ) − S + 1 R 0 ln ⁡ S S 0 I=(S_0+I_0)-S+\frac{1}{R_0}\ln\frac{S}{S_0} I=(S0+I0)S+R01lnS0S
其中 S 0 , I 0 S_0,I_0 S0,I0表示初值。当 S 0 < 1 R 0 S_0<\frac{1}{R_0} S0<R01时传染降低,为了达到这个目的可采取以下措施:

  1. 降低 S 0 S_0 S0,即减少易感者数量,在这里也就是戴口罩、不外出等。
  2. 提高 1 R 0 \frac{1}{R_0} R01,即降低$\beta $(接触率),在这里也就是减少人员流动。
  3. 提高 γ \gamma γ(移除率),提高隔离率或治愈率。

2.2 SEIR

SEIR(Susceptible-Exposed-Infected-Removed),类似于SIR,但是增加了对潜伏期的定义,因此更适用于具有一定潜伏期的传染病。状态之间的转化如下所示:
在这里插入图片描述

其中, λ \lambda λ表示易感人群的输入(人口增加), μ \mu μ表示死亡率, k k k表示从暴露人群到确诊感染者的比率, γ \gamma γ是感染者的移除率。模型由如下四个等式组成:
S ˙ = − β S I + λ − μ S E ˙ = β S I − ( μ + k ) E I ˙ = k E − ( γ + μ ) I R ˙ = γ I − μ R \begin{aligned} \dot{S} &=-\beta S I+\lambda-\mu S \\ \dot{E} &=\beta S I-(\mu+k) E \\ \dot{I} &=k E-(\gamma+\mu) I \\ \dot{R} &=\gamma I-\mu R \end{aligned} S˙E˙I˙R˙=βSI+λμS=βSI(μ+k)E=kE(γ+μ)I=γIμR

2.3 代际传播

2.3.1 传播矩阵

对于同一种传染病而言,每一个患者的感染途径可能是不同的,比如:蝙蝠传人、男人传女人、狗传人等。定义代际传播矩阵 G \mathbf{G} G,其中元素 g i , j g_{i,j} gi,j表示下一代中由一个 j j j类病患导致的 i i i类病患的数量,由此可知 G \mathbf{G} G是方阵。同时 R 0 R_0 R0对应 G G G的谱半径(绝对值最大的特征值)。从 G \mathbf{G} G的数学性质来看,它是非奇异的,同时具有一个正的特征值并且严格大于其它特征值,实际上这个特征值就是 R 0 R_0 R0

对于只有两种状态的传染病而言有:
G = [ a b c d ] \mathbf{G}=\left[ \begin{array}{ll}{a} & {b} \\ {c} & {d} \end{array}\right] G=[acbd]
其特征值为: λ ± = a + d 2 ± ( ( a + d ) / 2 ) 2 − ( a d − b c ) \lambda_{\pm}=\frac{a+d}{2}\pm\sqrt{((a+d)/2)^2-(ad-bc)} λ±=2a+d±((a+d)/2)2(adbc)

此外, G \mathbf{G} G也可以写成入下形式:
G = F V − 1 \mathbf{G}=FV^{-1} G=FV1
其中 F = [ ∂ F i ( x 0 ) ∂ x j ] F=\left[\frac{\partial F_i(x_0)}{\partial x_j}\right] F=[xjFi(x0)]表示新增感染者, V = [ ∂ V i ( x 0 ) ∂ x j ] V=\left[\frac{\partial V_i(x_0)}{\partial x_j}\right] V=[xjVi(x0)]表示感染者的区间传播。

3 模型实现

编码采用R语言,对于SIR系列的建模,R语言中有现成的软件包:SimInf。为了展示数据的迭代过程,这里并不打算直接采用。

3.1 参数设定

结合当前实际情况,有如下设定:

  • N,以武汉为中心的辐射人口:19 000 000。
  • μ \mu μ, 患病死亡率:0.02。
  • I 0 I_0 I0,期初患病人数:1。
  • β γ \frac{\beta}{\gamma} γβ, 2.68。

3.2 SIR

library(deSolve) 
library(ggplot2)

(1)模型

基于如下微分方程组构建模型
d s d t = − β s i d i d t = β s i − γ i d r d t = γ i \begin{aligned} & \frac{ds}{dt} = -\beta s i \\ & \frac{di}{dt} = \beta s i -\gamma i \\ & \frac{dr}{dt} = \gamma i \end{aligned} dtds=βsidtdi=βsiγidtdr=γi

sir <- function(time, state, pars) {with(as.list(c(state, pars)), {dS <- -beta * S * I/NdI <- beta * S * I/N - gamma * IdR <- gamma * Ireturn(list(c(dS, dI, dR)))})
}

(2)参数

N <- 1.9e8 # 总人口
I0 <- 1 # 初始感染者数量
RM0 <- 0 # 初始移除人员数量
S0 <- N - I0 - RM0 # 初始易感人群数量
init <- c(S = S0, I = I0, R = RM0) # 初始值
# 以下参数在模型假定下是常量
pars <- c(beta = 0.55, # 有效接触率gamma = 0.2, # 移除率N = N # 人口) 
# 迭代次数,以天计
times <- seq(0, 150, by = 1) 

(3)计算

res <- as.data.frame(ode(y = init, times = times, func = sir, parms = pars))

(4)绘图

ggplot(res) +geom_line(aes(x = time, y = S, col = '易感'))+geom_line(aes(x = time, y = I, col = '感染'))+geom_line(aes(x = time, y = R, col = '移除'))+theme_light(base_family = 'Kai') +scale_colour_manual("",values=c("易感" = "cornflowerblue", "感染" = "darkred", "移除" = "forestgreen")) +scale_y_continuous('')

在这里插入图片描述

3.3 SEIR

(1)模型

基于如下微分方程组构建模型
d s d t = − β S I N d e d t = β S I N − k E d I d t = k E − ( γ + μ ) I R d t = γ I \begin{aligned} \frac{ds}{dt} &= -\beta S \frac{I}{N} \\ \frac{de}{dt} &= \beta S \frac{I}{N}-k E \\ \frac{dI}{dt} &=k E-(\gamma+\mu) I \\ \frac{R}{dt} &=\gamma I \end{aligned} dtdsdtdedtdIdtR=βSNI=βSNIkE=kE(γ+μ)I=γI

seir<-function(time, state, pars){ with(as.list(c(state, pars)),{ dS <-- S * beta * I/N dE <- S * beta * I/N - E * k dI <- E * k - I * (mu + gamma) dR <- I * gammadN <- dS + dE + dI + dR list(c(dS,dE,dI,dR,dN)) }) 
} 

(2)参数

N <- 1.9E8 # 总人口
I0 <- 89 # 期初感染数
E0 <- 0 # 期初潜伏数
RM0 <- 0 # 期初移除数
S0 = N - I0 - RM0 # 期初易感人数
init<-c(S = S0, E = E0, I = I0, R = RM0, N = N)	
time <- seq(0, 150, 1) 
pars<-c( beta = 0.55,	#有效接触率k = 1,	#潜伏到感染的转化率 gamma = 0.2,	#RECOVERY mu=0.02	#感染期死亡率 
) 

(3)计算

res.seir<-as.data.frame(lsoda(y = init, times = time, func = seir, parms = pars)) 

(4)绘图

ggplot(res.seir) +geom_line(aes(x = time, y = S, col = '2 易感'))+geom_line(aes(x = time, y = E, col = '3 潜伏'))+geom_line(aes(x = time, y = I, col = '4 感染'))+geom_line(aes(x = time, y = R, col = '5 移除'))+geom_line(aes(x = time, y = N, col = '1 人口'))+theme_light(base_family = 'Kai') +scale_colour_manual("",values=c("2 易感" = "cornflowerblue", "3 潜伏" = "orange","4 感染" = "darkred", "5 移除" = "forestgreen", "1 人口" = "black")) +scale_y_continuous('')

在这里插入图片描述

3.4 小结

对比SIR和SEIR模型的结果,可以看到,相同条件下具有潜伏期的疾病其感染人数峰值的到来要晚于没有潜伏期的疾病,并且持续时间更长。

参考文献

  1. Joseph T Wu*, Kathy Leung*, Gabriel M Leung. Nowcasting and forecasting the potential domestic and
    international spread of the 2019-nCoV outbreak originating
    in Wuhan, China: a modelling study.Lancet,2020.
  2. Gerardo Chowell.Fitting dynamic models to epidemic outbreaks with quantified uncertainty: A primer for parameter uncertainty, identifiability, and forecasts.Infectious Disease Modelling,2017.
  3. James Holland Jones.Notes On R0.2007.

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

相关文章

SIR模型python实现

python新手&#xff0c;代码不规范之处敬请见谅&#xff0c;第一次发帖排版也不太懂&#xff0c;各位将就看。 参考&#xff1a; SIR模型和Python实现_阿丢是丢心心的博客-CSDN博客_sir模型 【保姆级教程】使用python实现SIR模型&#xff08;包含数据集的制作与导入及最终结…

SI,SIS,SIR,SEIRD模型

SI&#xff0c;SIS&#xff0c;SIR&#xff0c;SEIRD模型 因为个人工作需要系统地整理SI&#xff0c;SIR以及SEIR模型&#xff0c;故对三个模型进行原理介绍以及对比。文中关于SI&#xff0c;SIS&#xff0c;SIR的所有的截图都来自西工大肖华勇老师在慕课上的分享&#xff0c;…

【数学建模】传染病SIR模型

SIR模型 经典的SIR模型是一种发明于上个世纪早期的经典传染病模型&#xff0c;此模型能够较为粗略地展示出一种传染病的发病到结束的过程&#xff0c;其核心在于微分方程&#xff0c;其中三个主要量S是易感人群&#xff0c;I是感染人群&#xff0c;R是恢复人群 这三个量都是跟…

SIR模型简单了解(Susceptible Infected Recovered Model)

SIR模型定义 SIR模型是一种传播模型&#xff0c;是信息传播过程的抽象描述。 SIR模型是传染病模型中最经典的模型&#xff0c;其中S表示易感者&#xff0c;I表示感染者&#xff0c;R表示移除者。 S&#xff1a;Susceptible&#xff0c;易感者 I&#xff1a;Infective&#xf…

【保姆级教程】使用python实现SIR模型(包含数据集的制作与导入及最终结果的可视化)

目录 一、SIR模型介绍 二、Python实现SIR模型 1.制作自己的数据集的两种方法&#xff08;csv格式&#xff09; &#xff08;1&#xff09;excel转为csv格式 &#xff08;2&#xff09;通过python对csv格式文件进行内容修改 2.导入数据集 &#xff08;1&#xff09;具体代码如下…

SIR模型和Python实现

一、SIR模型介绍 SIR模型时传染病中最基础最核心的模型&#xff0c;研究的是某个封闭地区的疫情传播规律。 SIR模型的动力学关系如下图&#xff1a; 健康人数S的变化与 健康人数S和正感人数I的乘积&#xff08;代表健康人数和正感人数的接触&#xff09;成正比&#xff0c;其…

SIR传染病模型(微分方程系列1)

一&#xff1a;基本参数 SIR模型是常见的一种描述传染病传播的数学模型&#xff0c;其基本假设是将人群分为以下三类&#xff1a; S:(Susceptible):易感人群&#xff0c;指未得病者&#xff0c;但缺乏免疫能力&#xff0c;与感病者接触后容易受到感染。 I:(Infective):患病人…

【整站下载器】小飞兔整站下载V5.0

小飞兔整站下载是一款只需输入一个网址就能下载一个网站的软件&#xff0c;它可以从Internet的任何地方抓回你想要的任何文件&#xff0c;整站下载主要是用来快速搭建网站、深层分析网站、网站克隆等。

【小飞兔整站下载】整站下载器哪个好用_整站下载工具哪个好

小飞兔整站下载是一款可以下载整个网站内容的软件&#xff0c;你只要输入一个网址&#xff0c;软件能自动分析网站链接、图片、样式、文件等资源&#xff0c;并能将整个网站下载到本地&#xff0c;能在本地正常跳转、浏览。 官网&#xff1a;https://xft.fzxgj.top/ 直接上图…

快速获取一个网站的所有资源,图片,html,css,js等等

今天介绍一款软件,可以快速获取一个网站的所有资源,图片,html,css,js… 以获取某车官网为例 我来展示一下这个软件的功能. 1、输入网站地址 2、下载文件 到此,爬取网站就结束了,有些网站的资源使用的是国外的js,css,速度会有些差异,但效果都是一样的.爬取下来就能使用.放…

小飞升值记——(5)

目录 一&#xff1a;学习痕迹 二&#xff1a;学习结语 一&#xff1a;学习痕迹 二&#xff1a;学习结语 1.注意断句 2.注意refill的读音&#xff0c;重音在后面

根据url一键爬取前端页面资源文件,恐怖如斯-----小飞兔

前言 有一天你在网上发现一个很好看的前端页面,你想要弄下来在自己的项目上使用,于是你去查看源码,复制html代码和资源文件,过程非常的麻烦,而且很可能缺胳膊少腿,这里我给大家推荐一款可以一键爬取前端页面资源文件的工具给大家,希望对大家有所帮助. 下载 https://download.cs…

小飞兔整站下载如何设置特殊标签?

小飞兔整站下载如何设置特殊标签&#xff1f; 为什么提供自定义标签的功能&#xff1f;如何设置自定义标签&#xff1f; 为什么提供自定义标签的功能&#xff1f; 随着html5网站的快速发展&#xff0c;很多网站做了格式各样的特殊标签&#xff0c;而我们需要匹配特殊标签的资源…

c语言兔子繁殖问题pia,上海虹口幼升小转学报名,在喂养幼兔的时候我们要注意。...

上海虹口幼升小转学报名&#xff0c;在喂养幼兔的时候我们要注意&#xff0c;在喂养幼兔的时候我们要注意&#xff0c;不能直接用自来水为给幼兔喝&#xff0c;因为幼鸡初期的消化食物是很慢的&#xff0c;做好室内清洁卫生并对猫咪进行隔离幼猫在有猫癣的时候&#xff0c;这样…

最新版本 Stable Diffusion 开源 AI 绘画工具之汉化篇

✨ 目录 &#x1f388; 汉化预览&#x1f388; 下载插件方法一&#x1f388; 下载插件方法二&#x1f388; 下载插件方法三&#x1f388; 简单汉化&#x1f388; 双语汉化 &#x1f388; 汉化预览 在上一篇文章中&#xff0c;我们安装好了 Stable Diffusion 开源 AI 绘画工具但…

StyleGAN 调整面部表情,让虚拟人脸更生动

✨ 目录 🎈 人脸表情🎈 调整步骤🎈 调整结果🎈 人脸表情 通过上一篇文章 StyleGAN 生成的人脸:https://tinygeeker.blog.csdn.net/article/details/129667295人脸图片都是比较中规中矩的,如果能够给人脸增加一些表情的话,会让人脸显得更加的自然和逼真那么调整人脸的…

springMVC小bug webapp/.html访问不到

我们要访问 test.html 启动tomcat 404 web服务器中也有一个web。xml 父servlet&#xff1a;是给所有web.xml准备服务静态资源的 但是子类也是 一个/ 这个/会覆盖父xml 父类有jsp不会拦截&#xff0c;子类没有重写所有会访问.jsp 两个解决方法&#xff1a;方法1&#…

运用帝国CMS建站仿站的简单教程(初学者进)

帝国CMS是一款管理网站的软件系统&#xff0c;主要就是将网站生成模板&#xff08;核心操作为创建变量和模板并调用&#xff09;并通过该系统在网站上发布新信息&#xff0c;它具有许多的功能&#xff0c;细节方面也有很多&#xff0c;这里就不一一展示了&#xff0c;主要就是简…

计算机毕业设计制作模仿网站的期末作业通过神器——各种扒站方法(网站,软件)

官网链接&#xff1a;点我进入在线扒站 扒站完尽快下载&#xff0c;详情官网查看。 以下是一些需要下载的扒站工具 名字&#xff1a;teleport ultra 下载&#xff1a;Teleport 官网 名字&#xff1a;仿站小工具 小飞兔 下载&#xff1a;小飞兔官网 名字&#xff1a;Interne…

小飞兔整站下载V16.5-站点克隆工具

简介&#xff1a; 小飞兔网站克隆神器&#xff0c;一键复制克隆网站、小白必备&#xff01; 有了这个东西&#xff0c;看到自己喜欢的网站直接复制下了&#xff0c;再用dw修改内容&#xff0c;省事多了。 网盘下载地址&#xff1a; https://zijieyunpan.cn/AtqSxg3OdJe 图片…