基于2019-nCoV的SEIR模型的建立与改进

文章目录

    • 引言
    • SEIR建模思路
    • 实现
      • 程序
      • 结果
    • 第一次修正的SEIR模型
      • 修正思路
      • 第一次改进程序实现
    • 第二次修正
      • 思路
      • 实现
    • 小结

引言

 前面笔者尝试获取数据,并进行分析;在之前做的logistic模型得到能较好的预测结果。但是想要模拟全过程,logistic是做不到的,于是引入SEIR模型对其进行分析与预测。

SEIR建模思路

 这是一个带潜伏期的传染模型,和没有考虑潜伏期的SI、SIR的优势就显而易见了。具体的建模思路如下图:
基于2019-nCoV的SEIR模型的建立与改进_第1张图片
对上述的微分方程求解,不难得到其的差分方程。(字丑勿怪)
基于2019-nCoV的SEIR模型的建立与改进_第2张图片
参数的选取思路来之笔者的实时数据。

实现

程序

实现工具为matlab

%SEIR模型
clear;clc;
%参数设置
N=1400000000;%人口数
I=1;%传染者
R=0;%康复者
D=0;%死亡患者数量
E=0;%潜伏者
S=N-I;%易感染者
r=1;%接触病患的人数
a=0.125;%潜伏者患病概率
B=0.6;%感染概率
y=0.143;%康复概率
k=0.025373
T=20:1000;
for idx =1:length(T)-1
    S(idx+1)=S(idx)-r*B*I(idx)*S(idx)/N;%易感人数迭代
    E(idx+1)=E(idx)+r*B*S(idx)*I(idx)/N-a*E(idx)%潜伏者人数迭代
    I(idx+1)=I(idx)+a*E(idx)-(y+k)*I(idx);%患病人数迭代
    R(idx+1)=R(idx)+y*I(idx);%康复人数迭代 
    D(idx+1)=D(idx)+k*I(idx);%死亡患者人数迭代
end
plot(T,S,T,E,T,I,T,R,T,D);
grid on;
xlabel('日期');
ylabel('人数');
legend('易感者','潜伏者','传染者','康复者','死亡者');
title('SEIR模型');
plot(T,E,T,I,T,R,T,D);
grid on;
xlabel('日期');
ylabel('人数');
legend('潜伏者','传染者','康复者','死亡者');
title('情况');

结果

实现结果:
基于2019-nCoV的SEIR模型的建立与改进_第3张图片 结果虽然其将整个过程拟合出来,但是结果并不理想,染病人数的峰值达到了上百万,因此笔者将模型继续进行修正

第一次修正的SEIR模型

修正思路

 结合现实
1、12月30日发现第一例患者,1月23日开始采取相关措施,于是笔者在第25天时对应减少模型的病者的日接触人数,作为采取隔离措施的体现。
2、将潜伏者与患病者的转染易感者的概率与日接触人数分开为两个参数。基于2019-nCoV的SEIR模型的建立与改进_第4张图片
可以得到新的差分迭代式
基于2019-nCoV的SEIR模型的建立与改进_第5张图片

第一次改进程序实现

 实现程序参照上文修改,笔者不一一细述最后的实现结果:
基于2019-nCoV的SEIR模型的建立与改进_第6张图片
 根据图像不难看出,在第25天采取措施后疫情得到很好的的控制,在采取措施的大约10天后进入拐点,得到了控制。

第二次修正

思路

基于2019-nCoV的SEIR模型的建立与改进_第7张图片
 引入潜伏者者转阴率

实现

程序修改参照上文
基于2019-nCoV的SEIR模型的建立与改进_第8张图片
将结果细化
基于2019-nCoV的SEIR模型的建立与改进_第9张图片
 可以看到在12月发现首名发生后的第25天,采取隔离措施措施后,接触过患者的潜伏者明显下降,在之后的约半个月后疫情到达拐点,患病人数峰值约为6万,随后情况得到控制。

小结

 SEIR模型在趋势预测上是要优于logistic模型的,但是由于需要考虑的的参数较多,计算误差要大于logistic模型。也希望最后我们的控制结果,会比笔者的数学模型还要发展的好!结束的更早。这里向逆行者致以最崇高的敬意。

你可能感兴趣的:(数学建模,Matlab)