本次我们就来研究不同防疫措施下对疫情传播的影响。我们使用的就是之前我们推导好的SEIR病毒模型,作为研究模型。
从模型中我们可以得到很有用的关键信息:
一:防疫最重要的时期研究:
防疫最重要的时期是我们防止病毒扩散的最有效的方法,那么什么时间段是防疫最重要的时期呢?我将用我们之前的病毒模型,假设第t天我们加强了防疫严格程度(隔离速率变快,传播率下降等等)。这里我们重要观察三个重要时间点,1:潜伏者变化速度最大的时刻,2:确诊者变化速率最大的时刻。3:确诊者数量最多的时刻。
1:
2:
3:
通过结果我们可以清晰的发现,疫情防疫在潜伏者速度最快的时候是最有效的,比原先的严重程度减少了接近3/4,而确诊数量最多的时候才加强防疫,结果仅仅比原来少了1/7。所以我们得到相应的结论,如果等到疫情感染人数很多的时候再防疫结果可能很不理想,所以防疫的最好的时刻应该是潜伏者变化最快的时刻(我们无法看到),总之防疫越早越好。就如同当时武汉疫情的时候仅仅出现7天就封城,让疫情没有大规模扩散。但本次上海很久后才封城,单单从本次模型的建立角度来说,会让疫情传播开来。假如上海能早点封城,说不定形式能好转不少。
最优时间段确定,为了继续探明最优的防控时间段,我直接使用变化率和时间的比例来确定此模拟下最优的防控时间段。
可以发现,最优的防疫时间段就是疫情爆发10天左右,和我们之前得到的潜伏者变化率最大基本吻合,所以我们对疫情的防控最好就是能早点就早点。
二:人口流动对疫情传播的影响:
我们使用之前模拟武汉疫情时候用的SEIR模型来进行计算。当我们不加干涉的情况下人口流量对疫情传播的影响如下:
1:人口流动0.01的情况下疫情传播:(30天内趋势)
最终趋势:
2:人口流动0.05:(30天内)
最终趋势:
不同人口流动下对疫情传播的影响因子。
我们可以发现对于不同人口流动的省份情况,虽然大趋势是一样的,但传播时间是不一样的,所以对于不同人口流动的城市出现拐点(变化率最大的点)的时间是不一样的,所以我们对于疫情传播于不同省份之间人口流动的不同,也需要采取不同时间的防疫措施。
最后,我针对一些细节的描述:
纵观本次我们SEIR模型的建立,其中最难的一点其实是模型建立后面的参数的估计,在此之前。我们使用了自己编写的参数预估方法,对模型的参数进行初步的预估,完成模型的建立后与实际情况进行了对比。在预测的时候我们不能直接拿上海的真实数据对模型直接进行拟合,这点是机器学习中的大忌,因为拿测试集的数据来训练模型本质上就是自欺欺人的一个过程。而现在我们的预测已经结束,此时我们需要更加精确的参数,为我们之后针对本次疫情进行分析提供更加符合现实的模型基础。 所以我们本次直接使用建立好的模型,用上海实际情况的数据来反推相关的重要的参数。
使用方法:黄金分割法
1:隔离速度f1
def compute(data):
number = 0
for i in range(57):
number = number + (data_wzz[i] - data[i]) ** 2
return number
a = 0
b = 0.1
g = a + 0.382*(b-a)
t = a + 0.618*(b-a)
for i in range(100):
s1 = SEIR(T, 24894300, 6, 1, 0, 0, 0, 0, 0.06, 10, 0.307, 1 / 15, 1 / 4, 1 / 14, g, 1 / 15, 0.0025)
s2 = SEIR(T, 24894300, 6, 1, 0, 0, 0, 0, 0.06, 10, 0.307, 1 / 15, 1 / 4, 1 / 14, t, 1 / 15, 0.0025)
s1.calc()
s2.calc()
data_p_wzz1 = s1.wzz()[:57]
data_p_wzz2 = s2.wzz()[:57]
if compute(data_p_wzz1) > compute(data_p_wzz2):
a = g
g = t
t = a + 0.618*(b-a)
else:
b = t
t = g
g = a + 0.382*(b-a)
print(a + 0.5*(b-a))
可得最优的隔离速度为0.326
2:就医率:
同上可以得出为0.05左右