Python实现新型冠状病毒传播模型及预测代码实例


Posted in Python onFebruary 05, 2020

1.传染及发病过程

一个健康人感染病毒后进入潜伏期(时间长度为Q天),潜伏期之后进入发病期(时间长度为D天),发病期之后该患者有三个可能去向,分别是自愈、接收隔离、死亡。

2.模型假设

潜伏期Q=7天,根据报道潜伏期为2~14天,取中间值;发病期D=10天,根据文献报告,WHO认定SARS发病期为10天,假设武汉肺炎与此相同;潜伏期的患者不具有将病毒传染给他人的能力;发病期的患者具有将病毒传染给他人的能力;患者在发病期之后不再具有将病毒传染他人的能力;假设处于发病期的患者平均每天密切接触1人,致使该人患病的概率为γ最初只有一个人类感染者;病情自然发展,没有外部干扰。

3.模型公式

Python实现新型冠状病毒传播模型及预测代码实例

Python实现新型冠状病毒传播模型及预测代码实例:人类感染该病毒的天数

Python实现新型冠状病毒传播模型及预测代码实例: 第N天感染该病毒并且处于发病期的患者数量

Python实现新型冠状病毒传播模型及预测代码实例 : Q天前新被感染患者,当日进入发病期的数量

Python实现新型冠状病毒传播模型及预测代码实例: 当日发病期满,不再具有传染能力的患者数量

4.模型初始值

根据假设,最初只有一个人类感染者,所以:

Python实现新型冠状病毒传播模型及预测代码实例

5.实际疫情数据

人类感染病毒且发病的初始日期:根据财新网的报道,官方通报首例不明原因肺炎是在12月8日,考虑到确诊之前肯定已经尝试过各种治疗方案无效后认定为不明原因肺炎,所以有理由认为该名患者在12月8日已经处于发病期末端,根据假设发病期为10天,所以可以假设该名患者在11月29号发病,即N=1对应11月29日。

日新增发病数 Python实现新型冠状病毒传播模型及预测代码实例

近期疫情防控大事记:

Python实现新型冠状病毒传播模型及预测代码实例

从以上信息可以判断核酸检测试剂是在1月16日、17日大幅使用的,18日、19日确诊大量病例,因此1月20日之前的确诊病例数对模型参考意义不大。1月20日之后,可以认为新发病例,发病即检测。

截至1月20日24时,国家卫健委公告累计确诊病例291

截至1月21日24时,国家卫健委公告累计确诊病例440

截至1月22日24时,国家卫健委公告累计确诊病例571

截至1月23日24时,国家卫健委公告累计确诊病例830

截至1月24日24时,国家卫健委公告累计确诊病例1287

所以:

1月21日新增确诊病例:440-291=1491月22日新增确诊病例:571-440=1311月23日新增确诊病例:830-571=2591月24日新增确诊病例:1287-830=457

考虑到:

1月20日之后发病即检测确诊检测用时2日国外新增病例在个位数,且不能保证发病即检测等因素,暂不考虑新增病例应该递增,所以1月22日新增数据异常,舍去

使用上溯每日新增数据,同时考虑到确诊需要2天, 可以得到:

Python实现新型冠状病毒传播模型及预测代码实例, Python实现新型冠状病毒传播模型及预测代码实例, Python实现新型冠状病毒传播模型及预测代码实例

Python实现新型冠状病毒传播模型及预测代码实例 对应11月29日 )

6.拟合确定 Python实现新型冠状病毒传播模型及预测代码实例

根据近期每日新增数据、模型初始值及模型公式,用最小二乘拟合得到 Python实现新型冠状病毒传播模型及预测代码实例

Python实现新型冠状病毒传播模型及预测代码实例

7.预测

患者数量:根据上文确定的模型及参数,从11月29日(N=1)至1月27日(N=60)人群中累计处于发病期的人数如下图所示:

Python实现新型冠状病毒传播模型及预测代码实例

根据模型,近期人群中患者数量计算如下:

Python实现新型冠状病毒传播模型及预测代码实例

人群中感染了病毒并处于发病期的患者数量,注意Pn一般需要延期2日才能确诊

每日新增患者数量:

根据模型,近期人群中每日新增患者数量计算如下:

Python实现新型冠状病毒传播模型及预测代码实例

注意:图中是人群中新增发病患者数量,可与晚2日的政府发布新增数量进行对比。即22日新增患者数量可与24日政府发布的新增病例进行对比。截至目前模型计算22日新增为369人,政府公布的24日新增病例457人

根据以上模型预计未来几日的情况如下:

1月25日将新确诊432例,人群中发病患者为4068人;

1月26日将新确诊505例,人群中发病患者为4759人;

1月27日将新确诊590例,人群中发病患者为5568人;

1月28日将新确诊691例,人群中发病患者为6514人;

1月29日将新确诊809例,人群中发病患者为7621人。

由于1月20日之后采取的各种措施,将导致发病期D下降,感染概率 Python实现新型冠状病毒传播模型及预测代码实例 下降,1月29日之后日均增长势头会减弱。

8.模型代码

import numpy as np
import matplotlib.pyplot as plt
 
gamma = 0.55
Q = 7
D = 10
P = np.zeros(300, dtype=np.float)
Psum = np.zeros(300, dtype=np.float)
for i in range(Q):
  P[i] = 1
for j in range(300-Q):
  P[j+Q] = P[j+Q-1]+P[j]*gamma
  if j+Q-D-Q >= 0:
    P[j+Q] -= P[j+Q-D-Q]*gamma
  if j+Q == D:
    P[j+Q] -= 1
plt.xlabel("N")
plt.ylabel("PN")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.plot(range(1, 61), P[0:60])
plt.grid()
plt.show()

以上就是三水点靠木小编给大家整理的全部内容,如果大家有任何补充可以联系小编。

Python 相关文章推荐
Python中str.format()详解
Mar 12 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
Jun 28 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Python实现繁?转为简体的方法示例
Dec 18 Python
Python实现带下标索引的遍历操作示例
May 30 Python
python里dict变成list实例方法
Jun 26 Python
python如何读取bin文件并下发串口
Jul 05 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
python 生成器需注意的小问题
Sep 29 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 #Python
Python操作注册表详细步骤介绍
Feb 05 #Python
Python类继承和多态原理解析
Feb 05 #Python
Python模块 _winreg操作注册表
Feb 05 #Python
python3操作注册表的方法(Url protocol)
Feb 05 #Python
Python tkinter模版代码实例
Feb 05 #Python
Python Scrapy框架第一个入门程序示例
Feb 05 #Python
You might like
PHP开发负载均衡指南
2010/07/17 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
php的ajax简单实例
2014/02/27 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
use jscript Create a SQL Server database
2007/06/16 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
Python温度转换实例分析
2018/01/17 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
英国办公用品商店:Office Outlet
2018/04/04 全球购物
Linux的文件类型
2012/03/07 面试题
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
电气工程和自动化自荐信范文
2013/12/25 职场文书
学校春季防火方案
2014/06/08 职场文书
银行金融服务方案
2014/06/11 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
骨干教师考核评语
2014/12/31 职场文书
大二学年个人总结
2015/03/03 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript