数学思想——1.SEIR模型

目录:
1.SEIR模型简介
2.SEIR模型中的S\E\I\R分别表示什么?
3.为什么在“新冠”疫情模拟过程中选择SEIR模型作为基础模型?
4.使用该模型过程中的数据从何而来?
5.该“新冠”疫情模拟小游戏中使用该SEIR模型的流程
6.效果展示
7.部分代码展示

一、SEIR模型简介

在这里插入图片描述

如果所研究的传染病有一定的潜伏期,与病人接触过的健康人并不马上患病,而是成为病原体的携带者,归入 E 类。此时有:
在这里插入图片描述

仍有守恒关系 S(t) + E(t) + I(t) + R(t) = 常数,病死者可归入 R 类。潜伏期康复率 γ1 和患者康复率 γ2 一般不同。潜伏期发展为患者的速率为 α。与 SIR 模型相比,SEIR 模型进一步考虑了与患者接触过的人中仅一部分具有传染性的因素,使疾病的传播周期更长。疾病最终的未影响人数 S∞ 和影响人数 R∞ 可通过数值模拟得到。

二、SEIR模型中的S\E\I\R分别表示什么?

在这里插入图片描述
(图片来源:哔哩哔哩)

SEIR模型是传染病模型的一种,一般将传染病流行范围内的人群分为以下几类:
(1)S 类,易感者 (Susceptible),指未得病者,但缺乏免疫能力,与感染者接触后容易受到感染;
(2)E 类,暴露者 (Exposed),指接触过感染者,但暂无能力传染给其他人的人,对潜伏期长的传染病适用;
(3)I 类,感病者 (Infectious),指染上传染病的人,可以传播给 S 类成员,将其变为 E 类或 I 类成员;
(4)R 类,康复者 (Recovered),指被隔离或因病愈而具有免疫力的人。如免疫期有限,R 类成员可以重新变为 S 类。

三、为什么在“新冠”疫情模拟过程中选择SEIR模型作为基础模型?

(1)原因一:SEIR模型相较于其他的几个传染病模型,多了几项内容。结合本次疫情分析,我们可以知道,“新冠”疫情是由为期14天的潜伏期的,而且当感染者经过治愈或是自身免疫成为治愈者后,体内产生抗体,不会再成为易感人群被感染者感染。所以在模型中E项是必须存在的。SEIR模型符合新冠疫情的传染特征。

(2)原因二:同时根现有的一些资料显示,可知,很多专业的研究团队都在使用该模型研究疫情的发展情况。例如:钟南山院士团队在Journal of Thoracic Disease《胸部疾病杂志》发表了题为“Modified SEIR and AI prediction of the epidemics trend ofCOVID-19 in China under public
health interventions”(基于SEIR优化模型和AI对在公共卫生干预下的中国COVID-19发展趋势预测)的文章。

四、使用该模型过程中的数据从何而来?

通过上网搜索,我们小组找到了有关本次新冠疫情的数据(治愈率、死亡率)。以下内容引用自新京报网《关于新冠病毒的传播性,这五篇顶级论文都说了什么?》

(1)新冠病毒具有较低的致病性和中等传播性
  • 此次的新冠病毒,是过去20年中新出现的第三种能够跨物种感染人的冠状病毒。此前两种分别是2003年的SARS冠状病毒和2014年的中东呼吸综合征冠状病毒(MERS)。
  • 根据一篇发表在《Microbes and Infection》(《微生物与感染》)期刊上的论文《Pathogenicity and Transmissibility of 2019-nCoV—A Quick Overview and
    Comparison with Other Emerging Viruses》(《2019-nCoV的致病性和传播性——快速概述和与其他新兴病毒的比较》)进行的分析对比,我们可以知道,新冠病毒无论是从病毒率或是R0均没有SARS病毒强。
  • 但与2009年的甲型流感、2014年的中东呼吸综合症比,则有更强的感染性(即R0值更大)。这反映在感染的人数上,即是新冠肺炎的确诊病例更多。但整体来说,当前的新冠病毒似乎只是具有相对较低的致病性和中等传播性。
    图片来源
    (图片来源:新京报网)
(2)其他城市疫情相对武汉具有1-2周的滞后性
  • 根据另一篇于1月31日发表在《柳叶刀》上的论文《Nowcasting and forecasting the potential domestic and international spread of the 2019-nCoV outbreak originating in Wuhan, China: a modelling study》(《对源自中国武汉的2019-nCoV暴发的潜在国内和国际传播的预测和预测:一项模型研究》)认为,中国多个主要城市的疫情已经呈指数增长,但大概滞后于武汉暴发的大约1-2周。
    在这里插入图片描述
    (图片来源:新京报网)
五、该“新冠”疫情模拟小游戏中使用该SEIR模型的流程

在这里插入图片描述

六、效果展示
七、部分代码展示
    double tempx;//感染者的x坐标
    double tempz;//感染者的y坐标
    double otherx;//易感者的x坐标
    double otherz;//易感者的y坐标
    double radius = 100;//半径
    int tempnum=0;//易感者变为潜伏者的最多的人数
    int tempexnum = 0;//潜伏者将易感者变为潜伏者最多的人数
    int tempinnum = 0;//潜伏者变为感染者的人数
    int[] randnum = new int[1000];//生成的随机数的数组
    int tempdead = 0;//死亡的人数
    int[] randdead = new int[1000];//死亡的人的数组
    int tempcover = 0;//康复者的人数
    int[] randcover = new int[1000];//治愈者数组
    void changeSustoExp()
    {
        //---------1.实现感染者将易感者转换为潜伏者的过程(一个感染者可以将13.8个易感者转换为潜伏者)---------------
        tempnum = 0;
        for (int i = 0; i < inum; i++)
        {
            //找到每个感染者此时所在的位置的坐标(需要用到x,z)
            tempx=iPerson[i].GetComponent<Transform>().position.x;
            tempz=iPerson[i].GetComponent<Transform>().position.z;
            //找到所有的易感者,遍历判断是否在该感染者的所在方圆半径范围内
            for(int j=0;j< snum; j++)
            {
                otherx= sPerson[j].GetComponent<Transform>().position.x;
                otherz = sPerson[j].GetComponent<Transform>().position.z;
                //计算距离
                if ((tempx - otherx)* (tempx - otherx) + (tempz - otherz)* (tempz - otherz) <radius*radius)
                {
                    sPerson[j].GetComponent<MeshRenderer>().material.color = Color.yellow;
                    tempnum++;
                    if (tempnum > s_e) break;
                }
            }
        }
        //-----------------------2.潜伏着也具有传染性(一个潜伏者能够将3个易感者转换为潜伏着)----------------------------
        tempexnum = 0;
        //找到所有的潜伏者
        for(int i=0;i< exnum; i++)
        {
            //找到每个潜伏者所在的位置的坐标
            tempx = ePerson[i].GetComponent<Transform>().position.x;
            tempz = ePerson[i].GetComponent<Transform>().position.z;
            //找到所有的易感者,遍历判断是否在该潜伏者的所在方圆半径范围内
            for (int j = 0; j < snum; j++)
            {
                otherx = sPerson[j].GetComponent<Transform>().position.x;
                otherz = sPerson[j].GetComponent<Transform>().position.z;
                //计算距离
                if ((tempx - otherx) * (tempx - otherx) + (tempz - otherz) * (tempz - otherz) < radius/2 * radius/2)
                {
                    sPerson[j].GetComponent<MeshRenderer>().material.color = Color.yellow;
                    tempexnum++;
                    if (tempexnum > s_e_2) break;
                }
            }
        }
          //----------------------3.每达到一个14天(day%14),将一批潜伏着以%7的概率转换为感染者,其他的解除潜伏-------------------------
        if (day % 14 == 0)
        {
            tempinnum =(int)(exnum * e_i);
            //随机找到潜伏的人,生成下标的数组
            for(int j = 0; j < tempinnum; j++)
            {
                randnum[j]=(int)UnityEngine.Random.Range(0, exnum);
            }
            for (int j = 0;j < tempinnum; j++)
            {
                ePerson[randnum[j]].GetComponent<MeshRenderer>().material.color = Color.red;
            }
            //将随机找到的潜伏者转换为感染者
        }
        //----------------------4.每天以一定概率死掉一批感染者,产生死亡者,死亡者为黑色-------------------------
        tempdead = (int)(inum * i_d);
        for(int j = 0; j < tempdead; j++)
        {
            randdead[j]= (int)UnityEngine.Random.Range(0, inum);
        }
        //找到要死的感染者
        for (int i = 0; i < tempdead; i++)
        {
            iPerson[randdead[i]].GetComponent<MeshRenderer>().material.color = Color.black;
        }
         //----------------------5.如果已经建立好了医院,那么将会有一部分以一定的概率转换为治愈者----------------
        //------------------------如果没有建立好医院,那么有的人有可能自身免疫能够抵抗住-----------------------
        tempcover = (int)(inum * i_r);
        for(int j = 0; j < tempcover; j++)
        {
            randcover[j] = (int)UnityEngine.Random.Range(0, inum);
        }
        for(int i = 0; i < tempcover; i++)
        {
            iPerson[randcover[i]].GetComponent<MeshRenderer>().material.color = Color.cyan;
        }
        //如果建立好了医院的话,改变治愈率
        if (MenuController.hasHosipital)
        {
            i_r = 0.85f;
        }
        //---------------如果采取了一些措施,那么将会改变的是上面的那些比率,所以最后可以将这些设置为全局------------
        flag = false;
        }
  • 52
    点赞
  • 368
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
新冠肺炎传播和防控中的数学模型主要是基于传染病模型来进行建模的。下面是一个完整的建模过程: 1.确定变量及其含义。 在建立数学模型之前,首先需要确定变量及其含义。在新冠肺炎传播和防控中,常用的变量有: - S:易感者数量 - E:潜伏期感染者数量 - I:感染者数量 - R:康复者数量 - D:死亡者数量 2.确定模型类型。 根据疾病的传播方式和特点,选择适合的传染病模型类型。常用的模型有: - SIR模型:适用于传染病无潜伏期,感染后马上出现症状的情况。 - SEIR模型:适用于传染病有潜伏期,感染后一段时间才出现症状的情况。 - SEIRD模型:在SEIR模型的基础上增加死亡者数量变量,适用于需要考虑死亡人数的情况。 在新冠肺炎的传播和防控中,由于存在潜伏期,因此一般采用SEIR模型进行建模。 3.列出微分方程。 根据模型类型和变量的含义,列出微分方程组。以SEIR模型为例,其微分方程组为: dS/dt = -βSI dE/dt = βSI - αE dI/dt = αE - γI dR/dt = γI 其中,β表示感染率,α表示潜伏期转化率,γ表示康复率。 4.确定模型参数。 模型参数是指在微分方程组中出现的常数,包括感染率、潜伏期转化率、康复率等。这些参数需要根据具体的疾病和传播情况进行估计和确定。 5.模型求解和分析。 求解微分方程组,得到感染者、康复者和死亡者数量随时间变化的函数。通过对这些函数进行分析和比较,可以得出疾病传播速度、流行程度、防控措施的效果等结论。 6.模型验证和修正。 将模型预测结果与实际情况进行对比,验证模型的准确性。如果模型存在偏差,需要对模型进行修正和改进,以提高预测精度。 以上是一般的建模过程,具体情况需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值