当前位置: 首页 > article >正文

从Logistic曲线到疫情预测:用Python和SciPy复现SI传染病模型(附代码)

从Logistic曲线到疫情预测用Python和SciPy复现SI传染病模型附代码最近在整理疫情数据时我发现一个有趣的现象很多地区的感染人数增长曲线都呈现出典型的S型特征。这让我想起了经典的SI传染病模型它用简单的微分方程就能描述这种增长模式。今天我们就抛开复杂的数学推导直接用Python代码来实现这个模型看看如何用它来预测疫情发展趋势。1. 理解SI模型的核心思想SI模型是传染病建模中最基础的模型之一它把人群分为两类易感者(Susceptible)可能被感染的健康人群感染者(Infective)已经患病并具有传染性的人群模型的核心假设包括总人口数量恒定不考虑出生、死亡和迁移感染者无法被治愈或获得免疫每个感染者每天接触λ个其他人其中健康者会被感染注意虽然这些假设在现实中并不完全成立但简化后的模型仍能提供有价值的预测参考。根据这些假设我们可以建立微分方程来描述感染比例i(t)的变化di/dt λ * i(t) * (1 - i(t))这个方程的解就是著名的Logistic函数i(t) 1 / (1 (1/i0 - 1) * e^(-λt))其中i0是初始感染比例。这个函数呈现出典型的S型增长特征与很多实际疫情数据高度吻合。2. 搭建Python计算环境在开始编码前我们需要准备以下工具# 必需库安装如果尚未安装 # pip install numpy scipy matplotlib主要使用的库及其作用NumPy提供高效的数值计算支持SciPy用于求解微分方程Matplotlib数据可视化建议使用Jupyter Notebook进行交互式开发可以实时查看计算结果和图表。3. 数值求解SI模型微分方程虽然SI模型有解析解但为了后续更复杂模型的扩展我们先学习用数值方法求解。SciPy的odeint函数非常适合这类常微分方程问题。import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt def si_model(i, t, lambda_): 定义SI模型的微分方程 return lambda_ * i * (1 - i) # 参数设置 lambda_ 0.3 # 日接触率 i0 0.01 # 初始感染比例 t np.linspace(0, 50, 100) # 时间范围0到50天 # 求解微分方程 solution odeint(si_model, i0, t, args(lambda_,)) i solution[:, 0]这段代码的核心是si_model函数它定义了微分方程的右侧。odeint会自动处理时间步进和数值积分返回每个时间点的感染比例。4. 可视化结果与分析让我们将数值解与理论解进行对比并分析关键特征# 计算理论解Logistic函数 theory_i 1 / (1 (1/i0 - 1) * np.exp(-lambda_ * t)) # 绘制结果 plt.figure(figsize(10, 6)) plt.plot(t, i, b-, linewidth2, label数值解) plt.plot(t, theory_i, r--, linewidth2, label理论解) plt.xlabel(时间(天)) plt.ylabel(感染比例) plt.title(SI模型感染曲线 (λ0.3)) plt.legend() plt.grid(True) # 标记关键点 peak_t np.log(1/i0 - 1)/lambda_ plt.axvline(peak_t, colorgray, linestyle:) plt.text(peak_t1, 0.2, f高峰期 t{peak_t:.1f}天, rotation90) plt.show()图表会显示两条几乎重合的曲线验证了我们数值解的正确性。关键观察点包括感染高峰期当感染比例达到50%时新增感染速度最快饱和期随着易感人群减少新增感染逐渐放缓最终状态所有人都被感染i→15. 参数λ对疫情发展的影响日接触率λ是模型中最关键的参数它反映了防控措施的严格程度。让我们比较不同λ值下的曲线变化lambda_values [0.1, 0.3, 0.5, 0.8] plt.figure(figsize(10, 6)) for lambda_ in lambda_values: solution odeint(si_model, i0, t, args(lambda_,)) plt.plot(t, solution[:, 0], labelfλ{lambda_}) plt.xlabel(时间(天)) plt.ylabel(感染比例) plt.title(不同日接触率下的感染曲线) plt.legend() plt.grid(True) plt.show()从图中可以直观看出λ值高峰期到来时间曲线陡峭程度现实对应措施0.1较晚平缓严格封锁0.3中等适中部分限制0.5较早较陡轻度防控0.8很早非常陡无防控措施这个分析告诉我们即使简单的SI模型也能为防控策略提供量化参考。通过社交距离等措施降低λ值可以有效延缓疫情高峰的到来。6. 模型局限性讨论虽然SI模型简单实用但在实际应用中需要注意以下限制无法考虑康复和免疫更适合描述无法治愈的传染病忽略潜伏期从暴露到具有传染性的过程未被建模同质混合假设现实中接触网络往往是非均匀的忽略人口动态变化出生、死亡和迁移未被考虑对于更复杂的情况可以考虑以下扩展方向SIR模型加入康复者群体SEIR模型增加潜伏期人群网络模型考虑接触网络结构7. 实战应用预测疫情发展让我们用一个实际案例演示如何使用SI模型进行预测。假设某地区初始感染率为1%通过早期数据估计λ≈0.25# 预测未来60天发展 lambda_ 0.25 i0 0.01 t_pred np.linspace(0, 60, 100) solution odeint(si_model, i0, t_pred, args(lambda_,)) i_pred solution[:, 0] # 计算关键指标 peak_t np.log(1/i0 - 1)/lambda_ peak_i 0.5 max_rate lambda_ * peak_i * (1 - peak_i) print(f预测结果 - 疫情高峰将在{peak_t:.1f}天后到来 - 最大日新增感染比例{max_rate:.2%})这个简单预测可以给决策者提供以下参考预计疫情高峰到来的时间点医疗资源需求的峰值时间不同防控措施可能带来的影响在实际项目中还需要结合更多数据定期更新λ的估计值以提高预测准确性。

相关文章:

从Logistic曲线到疫情预测:用Python和SciPy复现SI传染病模型(附代码)

从Logistic曲线到疫情预测:用Python和SciPy复现SI传染病模型(附代码) 最近在整理疫情数据时,我发现一个有趣的现象:很多地区的感染人数增长曲线都呈现出典型的S型特征。这让我想起了经典的SI传染病模型,它用…...

用AirSim和Habitat手把手教你搭建第一个无人机VLN仿真环境(避坑指南)

从零搭建无人机视觉语言导航仿真环境:AirSim与Habitat实战指南 第一次接触无人机视觉语言导航(VLN)时,我被这个交叉领域深深吸引——它完美融合了计算机视觉、自然语言处理和机器人控制三大技术方向。但当我真正开始动手实践时&am…...

学生评教|高校评教|基于SpringBoot+vue高校学生评教系统 (源码+数据库+文档)

高校学生评教系统 目录 基于SpringBootvue高校学生评教系统 一、前言 二、系统设计 三、系统功能设计 1学生功能模块 2管理员功能模块 3老师功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&a…...

2026届学术党必备的六大AI写作方案横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek DeepSeek身为先进的大语言模型,能够为学术论文写作给予系统性辅助。研究者理应首…...

2025届毕业生推荐的五大降AI率方案解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能写作工具,是借助自然语言处理以及深度学习技术制造的智能辅助系统&#…...

2025届毕业生推荐的六大AI学术工具推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 智能写作工具DeepSeek,于论文写作里有着显著辅助价值,用户能够输入研…...

无效加班多,工资一般的软件开发公司有必要留在公司吗?你的代码可以重构,但你的人生不能重来。及时止损才是最理性的选择。

你的代码可以重构,但你的人生不能重来。在一家既给不了钱、又给不了成长、还在消耗你健康的公司,及时止损才是最理性的选择。 无效加班多,工资一般的软件开发公司有必要留在公司吗? 面对“无效加班多”且“工资一般”的现状&#…...

OpenClaw 龙虾消耗的 token 跟 Java 开发中调用接口用到的 token 是一个概念吗

OpenClaw 龙虾消耗的 token 跟 Java 开发中调用接口用到的 token 是一个概念吗 不是同一个概念。虽然它们都叫 “token”,但在 Java 开发和人工智能这两个领域中,它们是完全不同的两个东西。 简单来说,Java 开发中的 Token 是身份凭证&#x…...

四场景下的两阶段鲁棒优化模型构建与实施——列与约束生成算法及其数据处理机制探究

两阶段鲁棒优化模型 多场景 采用matlab编程两阶段鲁棒优化程序,考虑四个场景,模型采用列与约束生成(CCG)算法进行求解,场景分布的概率置信区间由 1-范数和∞-范数约束,程序含拉丁超立方抽样kmeans数据处理程…...

基于双向反激变换器的SOC估算与主动均衡策略仿真研究——复现硕士论文并拓展六节电池模型与均衡策略分析

基于双向反激变换器的SOC估算与主动均衡仿真 可以 [1]复现硕士论文:《锂离子电池SOC估算与主动均衡策略研究_王昊》 [2]六节电池模型:使用Simmulink搭建了六节电池主动均衡仿真 [3]均衡策略:选择了电压、SOC及其分阶段使用作为主动均衡变量&a…...

【技术干货】Qwen 3.6 Plus 实战:用百万上下文打造“代理式”AI 编码工作流

摘要 本文从工程视角拆解 Qwen 3.6 Plus:百万 token 上下文、面向“代理式编码”的能力,以及闭源旗舰开源工具的组合策略。结合实际项目需求,给出如何通过 OpenAI 兼容 API接入该类模型,并构建仓库级代码助手的完整 Python 示例和…...

第25课:让 Qt 从 GPIO 子系统一路进阶到平台驱动与设备树控制

本节路线图 为什么这一课要把三种GP → 先从GPIO子系统开始: → 再进一步:平台驱动让LE 小猫提醒 这节有分区、烧录或删除类操作,先确认盘符和路径,再按回车。 猫头鹰提示 编译前先对齐目标架构和工具链名字,别让主机程序和板卡程序搞混。 上一课我们已经把 Qt 和字符驱动…...

C语言完美演绎7-1

/* 范例&#xff1a;7-1 */#include<stdio.h>void main(){int MyArray1[]{1,2,3,4,5}; /* 同MyArray[5]{1,2,3,4,5}; */int MyArray2[5]{1,2,3}; /* 元素值少于五个时&#xff0c;数组的初始化会把不足的数组元素以0取代 */for(int i0;i<5;i)printf("MyArray…...

JavaScript高频八股

一、原型和原型链1、概念&#xff1a;每个对象都有一个隐藏的属性 __proto__&#xff08;原型&#xff09;&#xff0c;指向它创建时的构造函数的 prototype&#xff08;原型对象&#xff09;。当访问对象的一个属性或方法时&#xff0c;如果对象本身没有&#xff0c;就会去它的…...

c.语言完美演绎6-22

/* 范例&#xff1a;6-22 */ #include<stdio.h>#include<conio.h>int main(){char a;printf("你要进入本系统吗?是请按y&#xff0c;否请按任意键>");scanf("%c",&a);while(ay){int swn ;printf("(1)--nn乘法\n(2)--计算总数\n(3…...

基于Copula函数的多风场出力相关性分析场景生成与聚类削减方法(MATLAB实现)

考虑多风场出力相关性的可再生能源场景生成/风电场景生成&#xff0c;并通过聚类算法场景削减成几个场景&#xff0c;每个场景都有确定的出现概率。 完美复现《考虑多风电场出力 Copula 相关关系的场景生成方法》 Copula 函数(连接函数)描述空间相邻风电场间的相关性&#xff0…...

微前端状态管理的真相:Module Federation + 跨应用通信实战

本周大前端要闻Compose Multiplatform v1.11.10-alpha01&#xff1a;进一步完善跨平台 UI 状态同步能力&#xff0c;ViewModel 共享机制改进KotlinConf’26 演讲阵容公布&#xff1a;多场 Session 聚焦 Kotlin 多平台架构与状态管理&#xff0c;值得关注Retrofit 3.0.0 正式发布…...

09_微服务划分与团队人数之阿里实践与行业案例

微服务划分与团队人数之阿里实践与行业案例 体系内容 拆分维度:业务能力维度、通用能力维度、非功能维度 组织原则:康威定律、领域自治、平台沉淀、核心/非核心差异化治理 Spring Cloud Alibaba 视角:Nacos、Sentinel、RocketMQ、Seata、Dubbo 在企业场景中的组合打法 行业…...

08_微服务划分与团队人数之监控治理与跨团队协作

微服务划分与团队人数之监控治理与跨团队协作 体系内容 可观测性三支柱:指标、日志、链路追踪 治理要素:SLO、Dashboard、告警分级、容量视图、契约审计 Spring Cloud Alibaba 关联:Nacos、Sentinel、Gateway、RocketMQ、Dubbo 与观测平台协同 跨团队机制:接口契约、消息契…...

07_微服务划分与团队人数之渐进式拆分与团队演进

微服务划分与团队人数之渐进式拆分与团队演进 体系内容 演进方法:单体优先、边界识别、服务化拆分、平台能力沉淀 组织演进:小团队、部落-小队、平台团队、架构治理机制 Spring Cloud Alibaba 路线:Nacos、Gateway、Sentinel、RocketMQ、Seata 逐步引入 决策重点:什么时候…...

房屋租赁管理系统开发教程:基于SSM框架实战全记录

房屋租赁管理系统 java项目ssm框架开发,全套视频教程Verio 房屋租赁系统“我的收藏”功能深度解析——从用户点击到数据落地的全流程设计一、业务定位在房屋租赁平台中&#xff0c;“收藏”是连接「浏览」与「决策」的关键节点。Verio 把收藏做成一个轻量级、可复用的“微服务”…...

分布式微电网能源交易算法matlab源代码, 代码按照高水平文章复现,保证正确 孤岛微电网之间...

分布式微电网能源交易算法matlab源代码&#xff0c; 代码按照高水平文章复现&#xff0c;保证正确 孤岛微电网之间的能源交易问题&#xff0c;提出了一种分布式算法。 这个问题由几个通过任意拓扑交换能量流的岛屿微网格组成。 提出了一种基于次梯度的开销最小化算法&#xff0…...

【2026年最新600套毕设项目分享】springboot智能民宿预定与游玩系统(14340)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

【2026年最新600套毕设项目分享】springboot校园二手交易系统(14339)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

【2026年最新600套毕设项目分享】springboot河南特色美食分享系统(14338)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

【2026年最新600套毕设项目分享】基于Java的游泳馆管理系统(14337)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

【2026年最新600套毕设项目分享】springboot仁和机构的体检预约系统(14336)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

03_Neo4j知识体系之5.x与2026.x新特性和版本演进

03_Neo4j知识体系之5.x与2026.x新特性和版本演进 体系 版本演进层&#xff1a;Neo4j 5.x LTS、2025/2026 日历化版本、Cypher 5 与 Cypher 25、Autonomous Clustering、Ops Manager、Vector Indexes、AI 能力关联能力&#xff1a;与升级迁移路径、集群扩容、Fabric 联邦查询、差…...

02_Neo4j知识体系之Cypher核心语法与CRUD实战

02_Neo4j知识体系之Cypher查询语言深度解析 体系 查询语言层&#xff1a;Cypher核心语法、CRUD操作、高级查询、路径模式、聚合分析、条件过滤、Quantified Path Patterns&#xff08;QPP&#xff09;关联能力&#xff1a;与属性图模型、索引设计、执行计划分析、图应用建模和…...

在Ubuntu 22.04上搞定SRILM 1.7.3:从下载到`make test`成功的保姆级记录

在Ubuntu 22.04上搞定SRILM 1.7.3&#xff1a;从下载到make test成功的保姆级记录 如果你正在Ubuntu 22.04上折腾SRILM 1.7.3&#xff0c;大概率已经发现那些老掉牙的教程根本不管用。别担心&#xff0c;这篇实战记录会带你避开所有新系统环境下的坑——从依赖项安装到Makefile…...