新冠数据整理和简单分析(三)—— 使用Anylogic进行仿真实验

新冠数据整理和简单分析(三)—— 使用Anylogic进行仿真实验

简单介绍

在上一篇文章中我试图使用Optuna的超参数拟合技术来求更复杂的SIR模型变种,但是遇到了数据无法观测的问题(潜伏期和无症状患者无法观测),因此在这篇文章中,我们换一个角度,使用系统动力学模型来仿真更复杂并且贴近现实的COVID-19传染情景,便于大家了解病毒的传播过程。

模型介绍

SIR

首先,先构建一个最简单的SIR模型。SIR模型假设总人口(随时间不变的常数)是由三种类型的人群组成的,分别是易感染者、感染者、移除者,其中移除者包括痊愈人群和死亡人群两类。我们先来看一下这个模型大概的结构。
SIR
在这个模型中我们要注意两个Flow过程,分别对应感染和移除。感染是从易感者进入感染者人群的过程。假设初始状态下感染者1人,易感者人数即为总人口-1人,在本例中是等于9999。而一个感染者一天接触10个人,并且感染概率是0.05的话,那么一天实际上一个感染者就可以感染半个人。但是需要注意的,如果随着感染人数增加,那么感染者每天接触的人群中也可能会出现感染者,而我们知道感染者之间无法进行互相传播二次染病,因此我们还要考虑感染者接触人群中易感者的人数,可由易感者/总人口求得。最后,我们就可以得到感染过程的表达式:
当前感染人数 = 每天接触人数 * 当前易感者人数 / 总人口 * 感染概率 * 当期感染者人数
接下来分析一下移除流的具体过程。移除流反映从感染者进入移除者的过程。为了简化问题,我们假设这个病毒没有致死性,那么的话病好只是一个时间的过程。假设该病疾病周期为7天,也就是说从得病到康复只需要7天的时间,那么的话,每天我们都恢复了“1/7的健康”。从这个角度讲,我们就可以将每天的移除流定义为:
当期移除人数 = 感染者 * 1 / 疾病周期
以上,我们便构建了整个动力学模型的流程,接下来看一下仿真结果。
SIR结果

SEAIR-C

这是一个更复杂的自定义模型。我将总人口进一步区分为易感者、潜伏者、有症状感染者、无症状感染者、康复和死亡,同时我还加入了政府管控力度的模拟。但是这个模型只供参考,其数据和参数设置没有任何现实意义。我们来看一下这个模型的构造。
SEAIR-C
在我的参数设置下(按照珍珠号给出的统计报告,无症状患者占总感染者的40%左右),仿真出来的结果大概是这样的:
SEAIR-C结果
这个图像模拟的是政府在初期不防控,在时刻45时达到防控最高峰的情况,防空力度的具体函数是一个随时间变化的weibull distribution。根据我的多次模拟结果显示,无症状患者比例越高,那么该病对生命的威胁就越小,但是,却会出现迟迟无法完全消除该病的情况(函数为长尾)。相反,如果有症状患者比例高,那么该病在爆发期所产生的死亡量就大,但是这些有症状患者更容易被发现,隔离和移除,所以往往这种情况下病情在相同管制力度下持续的时间更短。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章