Skip to content

ChrisInBed/GraphSEIR

Repository files navigation

GraphSEIR

Analysis of COVID-19 spreading using the extended SEIR model.

描述 Description

该模型描述一个国家的流行病传播过程。模型主题是一个图,节点代表城市,边表示城市间的人口迁移,节点内部演化采用扩展SEIR模型。模型定义如下:

$$ S(\text{Susceptible, 易感})\to E(\text{Exposed, 潜伏})\to I(\text{Infectious, 感染})\to R(\text{Recovered, 康复}) $$

$$ \begin{aligned} \frac{{\rm d}S}{{\rm d}t}&=-r\beta\frac{IS}{N}-rh\frac{ES}{N}+S_{in}-S_{out}+S_{\nu}\\ \frac{{\rm d}E}{{\rm d}t}&=r\beta\frac{IS}{N}+rh\frac{ES}{N}-\theta E+E_{in}-E_{out}+E_{\nu}\\ \frac{{\rm d}I}{{\rm d}t}&=\theta E-\gamma I+I_{in}-I_{out}+I_{\nu}\\ \frac{{\rm d}R}{{\rm d}t}&=\gamma I+R_{in}-R_{out}+R_{\nu} \end{aligned} $$

参数解释如下:

$r$ -> 日均人际接触概率,一个人在一天中接触别人的数量; $\beta$ -> 显性接触感染概率,每次和感染者接触而转化为潜伏者的概率; $h$ -> 隐性接触感染概率,每次和潜伏者接触而转化为潜伏者的概率; $\theta$ -> 日均潜伏者发病概率,一个潜伏者在一天中发病而转化为感染者的概率; $\gamma$ -> 日均感染者痊愈概率,一个感染者在一天中痊愈而转化为康复者的概率; $N$ -> $N=S+E+I+R$,当前城市总人口; $X_{in},X_{out}$ -> $X$ 的输入与输出,某时刻全国的输入之和等于输出之和; $X_{\nu}$ -> t 时刻 $X$ 的扰动,外部注入。

该模型有以下特点:

  1. 相比于传统SEIR模型,此处我们使用模型增加了 $S\times E\to E$ 的过程,即潜伏期病毒携带者具有传染性;

  2. 各节点的演化参数是 $(S,E,I,R,t)$ 的函数,而并非固定,可用于描述政府政策的介入、图自身的传播饱和等;

  3. 节点的演化中包含时间相关的扰动项 $\nu:t\to \R$,用于描述某时刻的外生扰动,如超级传播者;

  4. 节点演化包含外部注入与输出:这一部分与节点间人口迁移相联系,外部注入与输出同样也是 $(S,E,I,R,t)$ 的函数;

  5. 采用格点地图,节点间定义距离 $r$,注入与输出同 $r^{-2}$ 、两节点人口乘积、 SEIR 人口比例成正比,即引力模型: $$ \text{Migration}_{ij}=K\frac{\text{Population}_i\text{Population}j}{\text{Distance}{ij}^2} $$

模型使用 RK4 数值算法求解,确保模拟准确性。

政策与扰动注入 Politics&Disturbance Injection

  1. 强制戴口罩、鼓励在家办公、公共场所戒严:降低 $r$ (日均人际接触概率);
  2. 精准隔离,跟踪初期感染者与密切接触者并将其隔离:降低 $\beta,h$
  3. 封城:目标城市与其他节点间的人口交换降至0;
  4. 核酸检测:目标城市与其他节点间交换的 $E,I$ 降至0;
  5. 超级传播者:某时刻城市增加>10单位的 $I$ 注入;

模型参数化 Parameterization

  1. SEIR 固定参数:$\theta$ (日均潜伏者发病概率),$\gamma$ (日均感染者痊愈概率),调查正常状态下的估计值

  2. SEIR 可变参数: $r$ (日均人际接触概率),$\beta$ (显性接触感染概率:每次 $S$$I$ 接触导致携带病毒的概率),$h$ (隐性接触感染概率:每次 $S$$E$ 接触导致携带病毒概率),调查正常状态/政策注入下的估计值

  3. 节点人口迁移:调查城市间人口迁移同城市人口与城市间距离的关系(SEIR各部分的迁移按比例计算,因此无需调查各部分的迁移)。但人口迁移中的各部分比例可能与城市比例不同,最好能调查一下武汉疫情爆发初期外逃人口中感染者的比例,用作模型参考

    我们小组未能从文献中找到引力模型中迁移系数的报道,而利用各地市之间的客流量、距离进行回归的工作量太大(数据难以查找),本模拟中采用的格点模型结构本身就与现实不同,结果是半定量的,因此引力模型参数精确度要求度不高。我们决定从石家庄和邢台的人口、距离数据对 $K$ 进行估计:

    石家庄市人口 1103.12 万人(2019年) 邢台市人口 739.52 万人(2019年) 石家庄到邢台公路距离 127 km(高德地图,市中心间距) 假设石家庄和邢台之间每天的人口交换占邢台人口的0.3%(实在实在找不着数据了……)

    计算得到 $K=0.04\ \text{万人}^{-1}\cdot{\rm km}^2$

输入输出 I/O

  • 输入:各城市SEIR各部初值 ($H\times W\times4$ 矩阵),模拟时间范围,模拟时间步长,采样时间步长
  • 输出:各城市SEIR各部采样时间下的人数 ($N\times H\times W\times4$ 矩阵)

数据分析报告 Data Report

A 基本宏观数据

  1. 全国范围内SEIR人口随时间变化曲线,I 曲线峰值,以及 S 降至 50% 用时
  2. 各城市SEIR人口随时间变化曲线,I 曲线峰值,以及 S 降至 50% 用时

B 格点地图感染动画

动画,描述各个节点感染情况随时间的变化

运行

运行环境

python 3.7.4
numpy 1.16.5
pandas 0.25.1
matplotlib 3.1.1

在运行命令 python working.py 后,将出现resultsreports两个文件夹,分别存储模型演化轨迹与图形、视频和表格文件。

test.py为示例模拟脚本,供有兴趣的研究者尝试。

About

Analysis of COVID-19 spreading using extended SEIR model

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages