SI模型下传染病模型的参数估计以及图像显示
针对于前半年的新冠肺炎疫情的数据,本UP(非数模向)自主在网上学习了几种通用的传染病模型,主要有:SI,SIS,SIR,SEIR四种模型,
其中,SI模型指的是易感者被感染,且不可治愈,较为典型的有艾滋病
SIS较为典型的范例是普通流感,因为感染者人群可能会有人重新恢复成易感人群
SIR指的是急性传染病,治愈后会再次被感染
SEIR指的是带潜伏期恶性传染病
S:潜在可感染者
E:已感染者
I:已确诊者
R:已痊愈者
假设总人口N不变,人口自然出生率与死亡率相同,不考虑因病死亡,新增人口为易感人群,
可列出如下图所示公式
因此可以对t求导,可得:
由于N=S+I,我们简化第二个式子
dI/dt=beta*(N-I)*I/N-nu*I,令I/N为y,立即可得出:
dy/dt=(beta-nu)y(1-beta/(beta-nu))*y
我们在令a=beta-nu,(1-beta/(beta-nu))=b
由此,我们可以通过微分方程求解:
我们可以手工计算ySol,即1/(b+((1/y0)-b)*(exp(1))^(-1*a*T));
之后我们导入数据,看一看自今年1月18日起,后近一个月内的实际确诊人数:
现在,我们再通过matlab拟合来计算参数a,b的取值,默认情况下是负无穷到正无穷,但是公式过于复杂的话,matlab的fit函数是拟合不出来的,因此我们需要调用“编辑器”曲线拟合工具栏
如上图,custom可以选择函数类型,是指数函数还是自定义函数等,左边是自变量,下方是定义的公式,我们进行输入,T是自变量,Y是因变量,如下图;
默认状况下,我们可以看到参数默认值,我们可以适当修改参数,通过右边函数图像自动调整(黑点是真实数据,蓝线是拟合函数曲线),确定我们想要的参数
我们可以执行fit()语句一行所在之处执行,可以清晰地看到两个参数的取值:
最终拟合的函数图像与真实数据对比如下图所示
虽然误差还是很大,但是“万事总是开头难”,相信以后会进一步解决这个问题
参考资料: