原文链接: http://tecdat.cn/p=14593原文来源:拓端数据部落公众号SIR模型定义
SIR模型是一种传播模型,是对信息传播过程的抽象描述。
SIR模型是传染病模型中最典型的模型,其中s表示易感者,I表示感染者,r表示清除者。
S:Susceptible,敏感性高的人
(I ) I:Infective,感染者
r :移除,删除者
SIR模型的应用SIR模型应用于信息传递的研究。
传播过程大致如下。 最初,所有节点都处于易受感染状态。 然后,如果某些节点接触到信息,它们将处于感染状态,这些处于感染状态的节点将尝试感染其他处于易感染状态的节点,或者处于恢复状态。 一旦感染了一个节点,就会传达信息,对某事抱有态度。 恢复状态,即免疫,处于恢复状态的节点不再参与信息的传播。
SIR的微分方程
a为感染率,b恢复率
注意:
t在某个时刻,例如t=1,s(1)是第一天容易感觉到人的人数。
无论t为什么是时间,总人数都不会改变。 即n(t(=s ) t ) I ) t ) r ) t )。
人口总数始终维持n(t )=K的常数,不考虑人口出生、死亡、迁移等因素。
本节介绍使用r模拟网络扩散的示例。
首先,生成网络。
规则网
g=graph.tree(size,children=2); 打印(g ) )。
g=graph.star(size ); 打印(g ) )。
g=graph.full(size; 打印(g ) )。
g=graph.ring(size ); plot(g )在第二步中,随机选择一个或n个随机种子。
# initiatethediffusersseeds_num=1diffuser s=sample (v (g ),seeds _ num ); diffuser s # #1/50 vertex : # # [1] 43 infected=list () infected([1]=diffusers#步骤3,感染能力在此简单示例中,每个节点的感染能力为0.
## [1] 0显然,这容易扩展到更一般的情况。 例如,如果节点的平均感染能力为0.128,则可以写为: 如果节点的平均恢复能力为0.1,则可以写为
p=0.128coins=c(rep(1,p**1000 ),rep (0,rep ) 0,) (1-p ) (1000 ) ) ) ) sample ) coins,1,replace=TRUE,tre
eep=unlist (l apply (nearest _ neighbors [,2],toss ) ) new_infected=as.numeric ) as.character (nearest _ nest ) 1 )1][keep=1] ) diffusers=unique(c ) as.numeric(diffusers ),new_infected ) ) return ) diffusers ) } Sese 让我们先看看s曲线:
为了可视化这个扩散的过程,我们用红色标记被感染者。
#generateapalette#plot(g,layout=layout.old ) set.seed(1) #library ) animation ) # start the plotm=1
像Netlogo一样,它可以同时显示网络的扩散和增长曲线。
set.seed(1) starttheplotm=1p_cum=numeric(0) h_cum=numeric(0)0) i_cum=numeric(0)0) while ) mm 1 ) v(g ) $color='white'V(g ) g ) $ color [ v ] g ) %in%infected[[m]]='red'v ) g ) $ color [ v ] %
参考文献
1.R语言泊松Poisson回归模型分析实例
2.R语言数值模拟:泊松回归模型的模拟
3.r语言泊松回归分析
4.R语言对布丰投针(蒲丰投针)实验进行仿真和动态可视化
5 .用r语言仿真混合制排队随机服务排队系统
6.GARCH (1,1 )、MA及历史模拟法的ylddx比较
7 .用r语言模拟复杂金融产品的几何布朗运动
8.R语言数值模拟:泊松回归模型的模拟
9 .基于r语言的巨灾风险下再保险合约定价研究案例:广义线性模型与俏皮大地分布Pareto distributions