1SIR模型

susceptible(易受感染的但没有被感染的)

infected(感染的)

recovered(恢复并免疫了的)

1.1  状态定义

第t天:

状态为S的人数 x(t)
状态为I的人数 y(t)
状态为R的人数 z(t)
总人数 N

1.2 SIR方程

这是一种形式的SIR,实际上还有很多种。

1.2.1 SIR方程解释

假设每天每个S状态的人(易受感染的但没有被感染的人)和其他m个人有关联

在第t天, 总体感染人的比例为

——>对于每一个S状态的人的这m个有关联的人里面,有 个人是感染了的

而第t天一共有x(t)个状态是S的人

——>在第t天,所有状态为S的人的x(t) × m个有关联的人里面,有个人是感染了的(这个数量不一定等于状态为I的人的数量,甚至可能比状态为I的人的数量多。因为一个感染的人可能和多个状态为S的人有关联)

假设每一个“有关联”的感染者使被关联的S状态的人被感染的概率是p

——>在第t天,新增感染者的数量为

我们令mp=β,β称之为感染接触率

那么对于S状态的人我们就有:

同时,我们令恢复率为r(也即是每天有r比例的感染者康复)

那么对于I和R状态的人我们又有:

1.3 用python实现SIR

1.3.1 导入库

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

1.3.2 数据定义

N=1000                    #总人口
I0=1                      #一开始的感染人口
R0=0                      #一开始的治愈(免疫)人口
S0=N-I0-R0                #一开始的易感染人口
beta=0.2                  #感染接触率β
gamma=0.1                 #恢复率
t=np.linspace(0,159,160)  #设置时间片段为160天

1.3.3 SIR模型定义

def sir(y,t,N,beta,gamma):S,I,R=ydS_dt=-beta*S*I/NdI_dt=beta*S*I/N-gamma*IdR_dt=gamma*Ireturn(dS_dt,dI_dt,dR_dt)
#SIR常微分方程

1.3.4 进行SIR的常微分方程计算

y0=(S0,I0,R0)
#初始化参数ret=odeint(sir,y0,t,args=(N,beta,gamma))
ret.shape
#(160, 3)S=ret[:,0]
I=ret[:,1]
R=ret[:,2]

1.3.5 结果可视化

plt.rcParams['font.sans-serif']=['SimHei']
#用来正常显示中文plt.rcParams['axes.unicode_minus']=False
#用来正常显示负号plt.plot(t,S,color='b',label='易感人群')
plt.plot(t,I,color='r',label='感染人群')
plt.plot(t,R,color='g',label='康复/免疫人abs')plt.xlabel('天数,单位:天')
plt.ylabel('人数,单位:人')
#设置横纵轴标题plt.legend()
#显示标签
plt.show()

2 SEIR

1、S 类,易感者 (Susceptible),指未得病者,但缺乏免疫能力,与感染者接触后容易受到感染;

2、E 类,暴露者 (Exposed),指接触过感染者,但暂无能力传染给其他人的人,对潜伏期长的传染病适用;

3、I 类,感病者 (Infectious),指染上传染病的人,可以传播给 S 类成员,将其变为 E 类或 I 类成员;

4、R 类,康复者 (Recovered),指被隔离或因病愈而具有免疫力的人。如免疫期有限,R 类成员可以重新变为 S 类。

生物计算:SIR模型笔记相关推荐

  1. 2020-03-22阅读笔记-考虑遗忘机制的企业隐性知识传播SIR模型研究

    本文系阅读上海工程技术大学杨湘浩等人发表在***中国管理科学*期刊上<考虑遗忘机制的企业隐性知识传播SIR模型研究>**所做的笔记,由于本人水品有限,如理解存在偏差,还请批评指正. 1.文 ...

  2. vecm模型怎么写系数_经典传染病的SIR模型(基于MATLAB)

    经典的SIR模型是一种发明于上个世纪早期的经典传染病模型,此模型能够较为粗略地展示出一种传染病的发病到结束的过程,其核心在于微分方程,本次我们利用matlab来对此方程进行 其中三个主要量 S是易感人 ...

  3. 【论文阅读】SIR模型下网络中多信息源检测 2014-IEEE

    多地方传染,多地方泄露. 三种算法: (1)树状网络,已知信息源数量,识别信息源. (2)一般网络的启发式算法,已知源数量,识别信息源. (3)信息源数量未知,估计源数目. (一)(聚类和定位) &q ...

  4. 结点重要性与SIR模型基础代码

    SIR模型 # simulate the information diffusion under SI model import networkx as nx import numpy as np i ...

  5. 《改进SIR 模型在社交网络信息传播中的应用》仿真实现

    摘要 基于<改进SIR 模型在社交网络信息传播中的应用>一文中提出的改进SIR模型,使用Matlab进行了仿真实现.另外,基于原文的模型,依据实际话题热度进行了其它仿真和分析. 背景 信息 ...

  6. 传播动力学--SIR模型及其应用

    王道谊 2020年3月 1.   传播动力学 "道生一,一生二,二生三,三生万物."  ---<道德经> 所谓"不积跬步无以至千里",任何变化都是由 ...

  7. python拟合sir模型_SI,SIS,SIR模型的正确实现(python)

    我已经创建了上述模型的一些非常基本的实现.但是,尽管图表看起来看起来很正确,但这些数字并不等于常数.这是因为每个隔室中易感染/感染/恢复的人的总和应该总计为N(这是人的总数),但是由于某些原因,它加起 ...

  8. python代码实现, SIR 模型进行信息传播模拟

    SIR模型是一种常用的信息传播模型,它用来模拟传染病(如冠状病毒)的流行情况.SIR模型包括三种状态: S(Susceptible):易感者,还没有患上传染病的人. I(Infected):感染者,已 ...

  9. matlab画图中该如何标注途中的某一点,以SIR模型为例

    matlab画图中如何标出图中的某一点,以SIR模型为例: 首先需要一个单独的.m文件: %写上三个微分方程 function y=SIRModel(t,x,beta,gamma,N) y=[-bet ...

最新文章

  1. 稳健地估计单应性矩阵,需要几个特征点?
  2. 提前“剧透”能提高自监督学习性能吗?华为诺亚实验室说:不一定!
  3. sublime text使用正则表达式批量给KV加
  4. IntelliJ IDEA快捷键学习
  5. nginx.conf配置格式
  6. MyBatis扫描mapper
  7. 【js练习】鼠标按下和松开事件
  8. java我的世界教学视频,快来看鸭~
  9. 第三章:EB配置DIO输出(s32k144)
  10. python人工智能方向怎么学_如何学习人工智能
  11. 从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合
  12. 桌面上的街舞之基础篇(09-04-29)
  13. spring中 shiro logout 配置方式
  14. 2022年湖南省证券从业资格(证券投资基金)练习题及答案
  15. 【Linux杂篇】Windows远程登陆Linux、Linux静态IP配置
  16. Python 1-02 基础语法
  17. Oracle索引梳理系列(九)- 浅谈聚簇因子对索引使用的影响及优化方法
  18. 实战python网络爬虫脚本之家_python爬虫实战,批量下载网站视频
  19. 如何将虚幻导出的三角面模型转换为四边面
  20. C语言(输入输出函数getchar,putchar、gets、puts,scanf,printf的功能以及用法)

热门文章

  1. CentOS-6.5安装配置Tengine
  2. 15 sql base line 工作机制
  3. 几个复制表结构和表数据的方法
  4. 【MongoDB学习笔记7】深入MongoDB的删除(remove/drop)操作
  5. EMOS SPF开启收不到信 及WEB收件箱不显示邮件列表等问题解决处理记录
  6. 帮助创建未来的 .NET 客户端开发
  7. linux网络配置、测试及故障诊断方法和工具三
  8. Matlab最短路学习
  9. mongodb 导出到sqlserver_迁移sqlserver数据到MongoDb的方法
  10. 创智播客微服务_传智播客2018JavaEE IDEA版本