生物计算:SIR模型笔记

Posted 刘文巾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生物计算:SIR模型笔记相关的知识,希望对你有一定的参考价值。

1SIR模型

susceptible(易受感染的但没有被感染的)

infected(感染的)

recovered(恢复并免疫了的)

1.1  状态定义

第t天:

状态为S的人数x(t)
状态为I的人数y(t)
状态为R的人数z(t)
总人数N

1.2 SIR方程

这是一种形式的SIR,实际上还有很多种。

1.2.1 SIR方程解释

假设每天每个S状态的人(易受感染的但没有被感染的人)和其他m个人有关联

在第t天, 总体感染人的比例为\\frac{y(t)}{N}

——>对于每一个S状态的人的这m个有关联的人里面,有m \\times \\frac{y(t)}{N} 个人是感染了的

而第t天一共有x(t)个状态是S的人

——>在第t天,所有状态为S的人的x(t) × m个有关联的人里面,有(x(t) \\times m) \\times \\frac{y(t)}{N}个人是感染了的(这个数量不一定等于状态为I的人的数量,甚至可能比状态为I的人的数量多。因为一个感染的人可能和多个状态为S的人有关联)

假设每一个“有关联”的感染者使被关联的S状态的人被感染的概率是p

——>在第t天,新增感染者的数量为p \\times [(x(t) \\times m) \\times \\frac{y(t)}{N}]

我们令mp=β,β称之为感染接触率

那么对于S状态的人我们就有:

\\frac{dx(t))}{dt}=- \\frac{\\beta}{N}x(t)y(t)

同时,我们令恢复率为r(也即是每天有r比例的感染者康复)

那么对于I和R状态的人我们又有:

\\frac{dy(t)}{dt}=\\frac{\\beta}{N}x(t)y(t)-\\gamma y(t)

\\frac{dz(t)}{dt}=\\gamma y(t)

1.3 用python实现SIR

1.3.1 导入库

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

1.3.2 数据定义

N=1000                    #总人口
I0=1                      #一开始的感染人口
R0=0                      #一开始的治愈(免疫)人口
S0=N-I0-R0                #一开始的易感染人口
beta=0.2                  #感染接触率β
gamma=0.1                 #恢复率
t=np.linspace(0,159,160)  #设置时间片段为160天

1.3.3 SIR模型定义

def sir(y,t,N,beta,gamma):
    S,I,R=y
    dS_dt=-beta*S*I/N
    dI_dt=beta*S*I/N-gamma*I
    dR_dt=gamma*I
    return(dS_dt,dI_dt,dR_dt)
#SIR常微分方程

1.3.4 进行SIR的常微分方程计算

y0=(S0,I0,R0)
#初始化参数

ret=odeint(sir,y0,t,args=(N,beta,gamma))
ret.shape
#(160, 3)

S=ret[:,0]
I=ret[:,1]
R=ret[:,2]

1.3.5 结果可视化

plt.rcParams['font.sans-serif']=['SimHei']
#用来正常显示中文

plt.rcParams['axes.unicode_minus']=False
#用来正常显示负号

plt.plot(t,S,color='b',label='易感人群')
plt.plot(t,I,color='r',label='感染人群')
plt.plot(t,R,color='g',label='康复/免疫人abs')

plt.xlabel('天数,单位:天')
plt.ylabel('人数,单位:人')
#设置横纵轴标题

plt.legend()
#显示标签
plt.show()

以上是关于生物计算:SIR模型笔记的主要内容,如果未能解决你的问题,请参考以下文章

AI科学语言大模型火了,数学生物计算机样样行,编代码写综述也不在话下

三种计算神经生物模型

基于最小二乘拟合 SIR 模型

SI模型、SIS模型、SIR模型三者的联系与区别是啥?

Python小白的数学建模课-B4. 新冠疫情 SIR模型

SIS模型与SIR模型的区别与应用?