2020.2.5 更新:

code中S0, I0, R0均是比例,不是具体人数,请自行通过各个类别人数计算各类型人群比例。

原文:

传染病模型有四种状态:S(易感态)、I(感染态)、R(免疫态)、E(潜伏期)。

SIR模型是传染病模型中最经典的模型。SIR模型中,染病人群为传染的源头,他通过一定的几率把传染病传给易感人群,他自己也有一定的几率/可以被治愈并免疫,或者死亡;易感人群一旦被感染,就又成为了新的传染源。将人群划分为三类,易感染者(Susceptible)、已感染者(Infective)和已恢复者(Recovered )。

SIR模型有两个阶段:易感人群与感染人员接触时被传染,接触速率为 beta

感染人群以固定平均速率 gamma 恢复或死亡

SIR模型的建立基于以下三个假设:

⑴不考虑人口的出生、死亡、流动等种群动力因素。人口始终保持一个常数,即N(t)≡K。

⑵一个病人一旦与易感者接触就必然具有一定的传染力。假设 t 时刻单位时间内,一个病人能传染的易感者数目与此环境内易感者总数s(t)成正比,比例系数为β,从而在t时刻单位时间内被所有病人传染的人数为βs(t)i(t)。

⑶ t 时刻,单位时间内从染病者中移出的人数与病人数量成正比,比例系数为γ,单位时间内移出者的数量为γi(t)。

基于以上三个假设条件,感染机制如下所示:

在以上三个基本假设条件下,可知:当易感个体和感染个体充分混合时,感染个体的增长率为

,易感个体的下降率为

,恢复个体的增长率为

。易感者从患病到移出的过程可以用微分方程表示如下:

import scipy.integrate

import numpy as np

import matplotlib.pyplot as plt

# model

def SIR_model(y, t, beta, gamma):

S, I, R = y

dS_dt = -beta * S * I

dI_dt = beta * S * I - gamma * I

dR_dt = gamma * I

return ([dS_dt, dI_dt, dR_dt])

# initialization

S0 = 0.9 # ratio

I0 = 0.1 # ratio

R0 = 0.0 # ratio

beta = 0.35

gamma = 0.1

# time vector

t = np.linspace(0, 100, 10000)

# result

res = scipy.integrate.odeint(SIR_model, [S0, I0, R0], t, args=(beta, gamma))

res = np.array(res)

# plot

plt.figure(figsize=[6, 4])

plt.plot(t, res[:, 0], label='S(t)')

plt.plot(t, res[:, 1], label='I(t)')

plt.plot(t, res[:, 2], label='R(t)')

plt.legend()

plt.grid()

plt.xlabel('time')

plt.ylabel('proportions')

plt.title('SIR model simulation')

plt.show()

结果图:

更多有关传染病数学模型的讨论可参考:

参考资料:

sir模型 python_SIR传染病模型(附Python代码)相关推荐

  1. 三招提升数据不平衡模型的性能(附python代码)

    摘要: 本文的主要目标是处理数据不平衡问题.文中描述了用来克服数据不平衡问题的三种技术,分别是集成交叉验证.类别权重以及过大预测 . 对于深度学习而言,数据集非常重要,但在实际项目中,或多或少会碰见数 ...

  2. 主题模型 LDA 入门(附 Python 代码)

    一.主题模型 在文本挖掘领域,大量的数据都是非结构化的,很难从信息中直接获取相关和期望的信息,一种文本挖掘的方法:主题模型(Topic Model)能够识别在文档里的主题,并且挖掘语料里隐藏信息,并且 ...

  3. 数学建模python代码_主题模型 LDA 入门(附 Python 代码)

    一.主题模型 . m! g4 ~. ^3 |% A# f在文本挖掘领域,大量的数据都是非结构化的,很难从信息中直接获取相关和期望的信息,一种文本挖掘的方法:主题模型(Topic Model)能够识别在 ...

  4. 【经典案例】 | 多元线性回归模型预测房价(附Python代码与数据)

  5. 教程 | 理解和实现自然语言处理终极指南(附Python代码)

     教程 | 理解和实现自然语言处理终极指南(附Python代码) 时间 2017-02-16 14:41:39 机器之心 原文  http://www.jiqizhixin.com/article ...

  6. XGBoost参数调优完全指南(附Python代码)

    XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考.另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只 ...

  7. python随机森林变量重要性_推荐 :一文读懂随机森林的解释和实现(附python代码)...

    原标题:推荐 :一文读懂随机森林的解释和实现(附python代码) 作者:WilliamKoehrsen:翻译:和中华:校对:李润嘉 本文约6000字,建议阅读15分钟. 本文从单棵决策树讲起,然后逐 ...

  8. 机器学习系列(12)_XGBoost参数调优完全指南(附Python代码)

    机器学习系列(12)_XGBoost参数调优完全指南(附Python代码) 原文链接:http://blog.csdn.net/han_xiaoyang/article/details/5266539 ...

  9. python重点知识归纳_一文了解机器学习知识点及其算法(附python代码)

    一文了解机器学习知识点及其算法(附python代码) 来源:数据城堡 时间:2016-09-09 14:05:50 作者: 机器学习发展到现在,已经形成较为完善的知识体系,同时大量的数据科学家的研究成 ...

  10. 基于TextRank算法的文本摘要(附Python代码)

    基于TextRank算法的文本摘要(附Python代码): https://www.jiqizhixin.com/articles/2018-12-28-18

最新文章

  1. html地图自动适合窗口,【整理】用html和javascript实现类似百度地图的画布
  2. sklearn基于make_scorer函数构建自定义损失函数或者评估指标
  3. 小松卡特彼勒无人驾驶_运输量突破20亿吨,卡特彼勒无人驾驶矿卡迎里程碑时刻...
  4. ABAP开发环境安装
  5. 洛谷 - P1308 统计单词数(字符串+模拟)
  6. uni 修改数据页面不重新渲染
  7. CF1140G Double Tree
  8. VC6.0+ddk+DriverStudio3.2安装与配置
  9. ipad分屏功能怎么开启_win10录屏功能怎么开启
  10. 同济线性代数教材(第五版)-第1章 行列式
  11. CentOS7增加或修改SSH端口号
  12. tasklist、taskkill、taskmgr
  13. MySQL【触发器】
  14. 太原理工大学移动应用软件开发技术实验报告
  15. tf.constant学习
  16. python中partial的使用规则
  17. php 闭合标记,什么叫自闭合标签?自闭标签有什么用
  18. 第四周作业:利用matlab制作图像的二值模板并分别利用模板进行“与模板相与”、“与模板相或”、“与模板异或”操作
  19. 防火墙产品最大吞吐量性能测试:丢包概念
  20. Android微信界面

热门文章

  1. AT&T拟利用电力线网络提供无线宽带服务
  2. 影驰名人堂送的机器人_6999元纯白信仰!影驰GTX 1080 Ti HOF名人堂评测
  3. VB通用对话框commom dialog中关于filterindex的设置
  4. java调用系统对话框,[求助]Swing如何调用通用对话框
  5. Linux时间同步(NTP)
  6. oa服务器硬件配置,OA办公系统
  7. 数据结构与算法分析:算法分析
  8. 移动叔叔MTK6589一键ROOT工具v3.0+by+罗微
  9. Cisco思科交换机Vlan划分
  10. java strut2通配符_Struts2的通配符