SIR模型与R模拟

news2024/11/27 23:55:41

SIR病毒模型R模拟

文章目录

  • SIR病毒模型R模拟
    • @[toc]
    • 1.SIR病毒模型
    • 2.R模拟

1.SIR病毒模型

SIR病毒模型的的三个字母分别为病毒传播过程中的三种状态,其中

  • S,表示易感染者,即没有被感染病毒的人群
  • I,表示已感染者,即被感染病毒的人群
  • R,表示感染后恢复者,即感染后恢复人群

设总人口为 N + 1 N+1 N+1,初始感染人群 I ( 1 ) = 1 I(1) = 1 I(1)=1,易感染人群 S ( 1 ) = N S(1)=N S(1)=N,恢复人群 R ( 0 ) = 0 R(0)=0 R(0)=0。在任意时刻 t t t每个感染者以概率 α \alpha α使易感染者染病,感染者以概率 β \beta β解除或恢复。在时刻 t t t,易感染者未被感染的概率为 ( 1 − α ) I ( t ) (1-\alpha)^{I(t)} (1α)I(t) 于是得到递归公式
{ S ( t ) + I ( t ) + R ( t ) = N + 1 S ( t + 1 ) ∼ b i n o m ( S ( t ) , ( 1 − α ) I ( t ) ) R ( t + 1 ) ∼ R ( t ) + b i n o m ( I ( t ) , β ) I ( t + 1 ) ∼ N + 1 − S ( t + 1 ) − R ( t + 1 ) S ( 1 ) = N ; R ( 0 ) = 0 ; I ( 1 ) = 1 \left\{\begin{array}{l} S(t)+I(t)+R(t)=N+1\\ S(t+1)\sim binom(S(t),(1-\alpha)^{I(t)})\\ R(t+1)\sim R(t)+binom(I(t),\beta)\\ I(t+1)\sim N+1-S(t+1)-R(t+1)\\ S(1)=N;R(0)=0;I(1)=1 \end{array}\right. S(t)+I(t)+R(t)=N+1S(t+1)binom(S(t),(1α)I(t))R(t+1)R(t)+binom(I(t),β)I(t+1)N+1S(t+1)R(t+1)S(1)=N;R(0)=0;I(1)=1


2.R模拟

下面是R模拟代码

#------------SIR病毒模型模拟-----------------
# SIR函数定义
SIR <- function(a,b,N,T){
  # SIR病毒扩散模型
  # 参数a为感染率
  # 参数b为移除率
  # N人口总数
  # t考察时间
  S <- rep(0,T+1) # 易感染着
  I <- rep(0,T+1) # 感染者
  R <- rep(0,T+1) # 移除者
  S[1] <- N
  I[1] <- 1
  R[1] <- 0
  for(i in 1:T){
    S[i+1] <- rbinom(1,S[i],(1-a)^I[i]) 
    R[i+1] <- R[i] + rbinom(1,I[i],b)
    I[i+1] <- N + 1 - R[i+1] - S[i+1]
  }
  return(matrix(c(S,I,R),ncol = 3))
}

# 比较静态模拟
T = 1000 # 考察时间1000(天)
a = 0.001 # 感染率
N = 100 # 人口总数
par(mfrow = c(3,3))
L <- c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9)/100
for(b in L){
  M <- SIR(a,b,N,T)
  time <- seq(1,nrow(M),1)
  plot(time,M[,2],ylab = "I",type = "b",
       main = paste("传染率a = 0.001;恢复率b=",b)) # 感染人群
}

输出结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-870srYxG-1684047706891)(null)]


-END-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring_jdbcTemplate基本使用

文章目录 一、导入spring-jdbc和spring-tx坐标二、创建数据库表和实体在applicationContext.xml中配置连接池和JdbcTemplate在test数据库中创建account表 三、创建JdbcTemplate对象四、执行数据库操作 一、导入spring-jdbc和spring-tx坐标 <dependency><groupId>o…

Vue.js快速入门

文章目录 一、Vue基础1.1 渐进式框架​1.2 第一个Vue程序1.3 el 挂载点1.4 data 数据对象 二、Vue 指令2.1 v-text 文本值2.2 v-html 标签元素2.3 v-on 绑定事件2.4 v-show 隐藏2.5 v-if 消除2.6 v-bind 属性值2.7 v-for 生成列表2.8 v-model 双向数据绑定 三、axios 网络请求库…

EXCEL数组公式的理解和技巧(未完成)

1 小心特例 frenquce 会划分为n1个区间 SUMPRODUCT(IF(FREQUENCY(B5:B18,B5:B18)>0,1,0)*IF(VALUE(MID(A5:A18,6,1))5,1,0)) 2 用0/ 和1/0 数组公式来解决问题 SUMPRODUCT(1/COUNTIF(B5:B18,B5:B18)) 这个只返回了B列里不重复的数据个数&#xff0c;确实是10个 SUMPRODU…

在 Windows 上安装 kind

一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让我们一起学习在 Windows 上安装 kind。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、 kind是什么 kind 是一个使用 Docker 容器“节点”运行 Kubernetes 集群的工具。使用 kind 工具搭建的 Kubernetes…

【Linux Network】应用层协议——HTTP

目录 1. 认识URL 2. urlencode和urldecode urlencode例子&#xff1a; urldecode例子&#xff1a; 3. HTTP协议格式 3.1 HTTP请求&#xff1a; 3.2 HTTP响应&#xff1a; 3.3 HTTP的方法&#xff1a; 3.4 GET方法和POST方法的区别 3.5 HTTP的状态码&#xff1a; 3.6 HTTP常见He…

Python学习20:温度转换 II(python123)

温度的刻画有两个不同体系&#xff1a;摄氏度&#xff08;Celsius&#xff09;和华氏度&#xff08;Fabrenheit&#xff09;。‪‪‪‪‪‪‫‪‪‪‪‪‪‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‫‪‪‪‪‪‪‫‪‪‪‪‪‫‪ 请编写程序将用户输入华氏度转换为摄氏度&#xff…

参会记录|春日研学 · 踏歌前行 —— MAS 实验室内部学术研讨会

前言&#xff1a;2023年5月12日&#xff08;周五&#xff09;晚&#xff0c;实验室在江苏苏州天街附近举行了一次内部研讨会&#xff0c;主题聚焦当今学术界研究前沿和实验室下一阶段发展规划。会议期间&#xff0c;首先是各位与会博士生畅所欲言&#xff0c;探讨当前学术前沿&…

数据结构学习记录——什么是图(抽象数据类型定义、常见术语、邻接矩阵表示法、邻接表表示法)

目录 什么是图 抽象数据类型定义 常见术语 无向图 有向图 网络 邻接点 度&#xff08;出度、入度&#xff09; 稀疏图 稠密图、完全图 边密度 邻接矩阵表示法 用二维数组存储 用一维数组存储 邻接矩阵的好处 邻接矩阵的坏处 邻接表表示法 指针数组-链表存储…

ES的可视化工具-Kibana的安装和使用

【前言】 Kibana 是为 Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana 来搜索&#xff0c;查看存储在 Elasticsearch 索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化&#xff0c;以图表的形式展现出来。 下面是Kibana的安装步骤&#xff0c;控…

Vue项目的搭建和启动

文章目录 一、安装配置 node.js1.1 下载安装1.2 配置环境变量1.3 修改模块下载位置1.4 设置淘宝镜像 二、创建启动 Vue三、开发环境 VSCode3.1 开发插件3.2 Vue 项目结构 提示&#xff1a;以下是本篇文章正文内容&#xff0c;前端系列学习将会持续更新 一、安装配置 node.js …

【重新定义matlab强大系列六】利用matlab进行一维滤波or二维滤波

&#x1f517; 运行环境&#xff1a;matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

NVM —— 你把我玩明白

前期回顾 纯前端 根据目录解析word,拆分不同段落_彩色之外的博客-CSDN博客纯前端 解析 wordhttps://blog.csdn.net/m0_57904695/article/details/130503211?spm1001.2014.3001.5501 &#x1f44d; 本文专栏&#xff1a;开发技巧 目录 &#x1f37a; 下载 及 配置镜像 …

如何设计测试用例以及常用的黑盒测试方法

目录 如何设计测试用例&#xff1f; 设计测试用例的万能公式 ①功能测试 (用户的基本功能需求&#xff09; ②性能测试 ③易用性&#xff08;考虑用户体验&#xff09;测试 ④兼容性测试 ⑤界面&#xff08;UI,外观&#xff09;测试 ⑥安全测试 常用黑盒测试方法 …

MySQL_4 常见函数汇总及演示

目录 一、统计函数 1.基本语法 : 2.代码演示 : 演示Ⅰ—— 演示Ⅱ—— 二、合计函数 1.基本语法 : 2.代码演示 : 三、平均函数 1.基本语法 : 2.代码演示 : 四、最值函数 1.基本语法 : 2.代码演示 : 五、字符串函数 1.常用字符串函数 : 2.代码演示 : 六、数学…

Linux基础学习---6、系统定时任务、软件包管理、虚拟机克隆

1、系统定时任务 1.1 crontab 服务管理 1、重新启动crond服务1.2 crontab 定时任务设置 1、基本语法crontab [选项] 2、选项说明选项功能-e编辑crontab定时任务-l查询crontab任务-r删除当前用户所有的crontab任务 3、参数说明 &#xff08;1&#xff09;进入crontab编辑页面…

SpringSecurity 快速入门

1. 认证授权概述 1.1 认证授权概念 1.1.1 认证 在互联网中&#xff0c;我们每天都会使用到各种各样的APP和网站&#xff0c;在使用过程中通常还会遇到需要注册登录的情况&#xff0c;输入你的用户名和密码才能正常使用&#xff0c;也就是说成为这个应用的合法身份才可以访问…

项目开发工具【EditorConfig,Prettier,ESLint,Git Husky,Commitizen,Commitlint】

项目开发工具【六款】 前言 六款插件让你项目更加的规范✨✨✨ EditorConfig&#xff1a;为不同编辑器上处理同一项目的多个开发人员维护一致的编码风格Prettier&#xff1a;一款强大的代码格式化工具&#xff0c;是当下前端最流行的代码格式化工具ESLint&#xff1a;查找潜在…

图像增强库albumentations(v1.3.0, 2023.5)中所有图像增强方法记录(class)

整体概要 变换类型具体类模糊/噪声AdvancedBlur*&#xff0c;Blur*&#xff0c;Downscale*&#xff0c;Defocus*&#xff0c;GlassBlur*&#xff0c;GaussianBlur*&#xff0c;GaussNoise*&#xff0c;ImageCompression*&#xff0c;ISONoise*&#xff0c;MultiplicativeNoise…

MySQL基础-SQL介绍

本文介绍MySQL中SQL通用语法&#xff0c;包括&#xff1a;DDL&#xff0c;DML&#xff0c;DQL&#xff0c;DCL 文章目录 SQL分类DDL&#xff08;数据定义语言&#xff09;数据库操作表操作 DML&#xff08;数据操作语言&#xff09;添加数据更新和删除数据 DQL基础查询条件查询…

Linux sed流编辑器

sed流编辑器 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个命令文本文件中。 sed 的工作流程主要包括读取…