COVID-2019 疫情病例的统计和分析

#首先声明,这篇论文不是我一个人写的,而是我们的数学作业。出于保护隐私的考虑,我就用首字母写他们的名字了。复制这篇文章累死我了,大家可以在这里(onedrive)下载pdf

共同作者:fzh,lzy,whq,wjk,xcx,yjh,zml(按照姓氏首字母排列)

一、 摘要

我们在网上获取较为权威的数据之后通过编写程序整理数据并画图。接下来我 们具体分析美国的疫情数据和对比不同国家(美国、英国、意大利)之间的数 据获得了一系列的结论。美国疫情分析我们从总计、不同阶段的统计数据比 较、新增和确诊病例的关系、死亡率和治愈率、周期性、预测这些方面入手。 而不同国家之间的比较我们分析了疫情趋势并推测了美国疫情开始的实际时 间。最终我们得到一些结论。

二、收集数据 来源

我们从开源社区 github 上找到了有关数据项目,从中获取数据进行分析。 Wuhan-2019-nCoV Github。下文中出现的数据若无做特殊说明都来自于这 个开源项目。

数据权威性

“本项目记录了

2019-12-01 日至今,每日精确到国家、省、市的确诊、疑似、治愈、死亡人数。

2019-12-01 至 2020-01-02 数据来自 asycns 提供的实验室确诊数据(实验室论文原文)。

2020-01-02 至 2020-01-10 数据无变化。
2020-01-10 至 2020-02-06 数据来自国家、各省、武汉市卫健委疫情通告。

2020-02-07 后数据从今日头条接口采集,每小时 57 分自动更新。

国家、省级历史数据会根据卫健委数据更新,市级历史数据与卫健委数据有差异(略小于)”

——github Wuhan-2019-nCoV 项目介绍

截止时间数据世界截止到公布这项作业的 5 月 18 日,不再更新。下文中出现的数据若无做特殊说明都截止至 5 月 18 日。

三、整理数据和描述数据

我们使用 Python 语言进行编写程序以整理数据。并运用 python3 matplotlib 绘图库绘制折线统计图。
本报告中所有图表都是我们自己进行制作的。 实例如下(美国的死亡病例、确诊病例和治愈病例总数):

红色空心圆点-确诊病例,蓝色 x-死亡病例,粉红色圆点和绿线-治愈病例。

四、分析数据

美国疫情分析

我们筛选出美国的疫情数据,使用第一天新增确诊病例 = 第二天确诊总病例 – 第一天确诊总病例的方法算出新增确诊病例数量。 类似的还有新增死亡病例。将这两个数据综合绘制在一幅折线统计图中如下:

总计

对数据进行处理后的总计新增数据

新增确诊病例、死亡病例和治愈病例以及他们的处理

为了减小数据的波动,便于观察疫情数据,这里我们将每个数据前后总共七天 的数值的平均值计算了出来,并作为每一天的一个较为综合稳定的数值以形成 图像。主要是因为我们在给疫情状况分段时发现数据因为过于波动缺乏直观 性,又发现数据每七天呈现一个周期,所以想出了这个方法。

不同阶段的统计数据比较

确诊

死亡

治愈

可以看到,这些阶段的平均数和方差都具有较大差别,这也是我们分类的主要 依据。

新增死亡和确诊病例的关系

按上文提到的新增确诊和死亡数据阶段在途中画出 3 段。

可以看到,死亡数据的变化相对确诊病例是有延后的。这是因为对于一个确诊 的新冠病人,需要一段时间病情才会转好或是恶化。而观察相邻红线和绿线的 关系不难看出者延后大约是 2 周左右。

死亡率和治愈率

由于在确诊人数中病例并不确定会在未来死亡或是被治愈,所以我们没有将:

死亡率=累计死亡/累计确诊 *100% 作为计算死亡率的公式。

死亡率

我们采用的死亡率计算公式为:
死亡率 = 累计死亡 / (累计死亡+累计治愈) * 100%

美国疫情死亡率=90978/(90978+346389)=20.8%, 对比世界疫情死亡率=333022/(333022+1942499)=14.6%, 相比之下,中国疫情死亡率=4645/(4645+79738)=5.5%已经是很低了。

治愈率

类似地,我们采用的治愈率计算公式为:
治愈率 = 累计治愈 / (累计死亡+累计治愈) * 100%

但由于我们已经算出了死亡率,也可以采用这个公式:

治愈率 = 100% – 死亡率

可知:
美国治愈率 = 79.2%
世界治愈率 = 85.4%
中国治愈率 = 94.5%

可见中国治愈率较全球平均数高,而美国治愈率较全球的低。 (这与有些机构的死亡率有较大差别,原因是计算方法不同。世界疫情数据和 中国疫情数据来源于丁香医生。)

周期性

通过观察图标,我们发现在前几周疫情数据“七上八下”地波动之后,最后 3- 4 周疫情数据出现了每周的季节性周期。放大观察,图象如下:

我们发现,每 7 天(一周)新增数据就会达到这一周的低点,并会在第二天反 弹。其中新增病例这种周期性最为明显,死亡病例也有明显的周期性。

我们认为数据的变化和星期几有关。观察数据得出美国确诊和死亡病例新增数 量会在一周中的周六开始下降,在周日下降到最低点,在周一反弹。 我们猜测这个数据的变化并不是新冠病毒本身引起的,而是它之外的因素导致 的。比如,美国的医护人员可能在周末休息,导致检验总量减少,进而导致新

增确诊数量的减少。这让我们想到我国医护人员的奉献精神之伟大。

预测

由于我们分析美国疫情已经进入了周期波动地下降阶段,我们使用每周的平均 数的走向来预测以后的美国新增确诊病例数,进而得到总数。

倒数第四周

[ 27108, 32195, 24053, 37615, 42319, 31868, 27020]

平均数:31,739.71
中位数:31868
方差:35,639,723.92

倒数第三周

[ 24231, 24270, 29322, 33536, 34784, 29313, 28477]

平均数:29,133.29
中位数:29,313
方差:14,213,862.78

倒数第二周

[22174, 25824, 25365, 28695, 30445, 25247, 20344]

平均数:25,442.0
中位数:25,365
方差:10,353,046.29

最近一周

[18340, 22865, 22227, 27527, 26163, 22379, 18220]

平均数:22,531.57
中位数:22,379
方差:10,646,816.53

计算机程序拟合一次函数为 y = -313.2x + 3.5*10^4。(x 为第几周) 那么可以推测这一周的每日平均新增确诊病例是 y = –
3132*5 + 3.5*10^419340 = 19340 人,总计新增 19340*7 = 135,380 人。 截止这一周结束累计确诊人数应该有 1527664+135380 = 1,663,044人。5 月 23 日的实际累计确诊人数为 1,600,937(丁香医生数据)。 下一周的每日平均新增病例为 y = -3132*6 + 3.5*10^419340 = 16,208,总 计新增 16208*7=113,456 人。截止下一周结束应有累计确诊病例 1663044+113456 = 1,776,500人。

不同国家之间的比较 疫情趋势

新增确诊病例折线统计图

绿色曲线-意大利,蓝色曲线-美国,橙色曲线-英国。

累计确诊病例折线统计图:

橙色点-意大利,红色圆点-美国,绿色 x-英国。

通过观察我们可以发现意大利较美国、英国疫情开始得较早,而新增确诊的峰 值出现的也较早,而也较早在 4 月就进入新增确诊的周期波动下降期。在 3 月 25 日和 5 月 10 日左右美国和英国的累计确诊病例超过意大利。 我们可以推测,意大利已经基本控制住了疫情,而英国即将控制住疫情。但是 美国的增势仍没有放缓(虽然新增确诊病例的增加数量已经为负)。 这些差别极有可能是因为各国政府对待疫情的策略不同导致的。意大利政府在 发现国内疫情爆发后积极采取行动,而英国的爆发和早期采取“群体免疫”策 略是密切相关的。美国政府虽然在中国疫情爆发之后立刻关闭了与中国的通 道,但是并没有对当时疫情就有爆发迹象的欧洲国家入境进行管控。美国政府 消极应对,并没有加强检测、隔离等手段,也没有对其有足够重视,这导致了 后来美国的疫情大爆发。

关于美国疫情开始时间的推测

意大利大概在发现少数病例后一周是新增就开始大幅增长,也就是在三月四号 左右。英国的增长大致相同,在三月份开始,英国确诊病例迅速从个位数攀升 至数百,后期的增速差不多是 60 例每天。而美国的疫情数据就不同,开始只 有少数病例之后爆炸式增长。在一直保有少数病例的情况下,而且民众没有做 任何保护措施,疫情竟然一直到三月下旬才开始大规模爆发。所以我们猜测美 国的疫情其实比数据显示的更早爆发。在 3 月 8 日美国的确诊病例为 600 例左 右,也就是意大利和英国疫情开始爆发之前一周的确诊病例数据。所以美国疫 情至少在三月中旬之前就已经大规模爆发了。而且我们都知道美国一开始是没 有检测的,没有重视,所以在美国大规模检测之前,数据都不算是很准确的。 由此推测,美国疫情大规模爆发应该在三月上旬或者二月底就已经开始了。但 是结果肯定是不那么准确的。

五、结论

通过分析数据可以看出,每个国家的疫情发展状况各不相同。 以详细研究的美国为例,可以总结出美国疫情发展后期新增和死亡病例均以每 周为一个周期的状态平稳增长,并有下降趋势。观察新增与死亡周期间隔,可 以得出一个确诊的新冠病人,需要 2 周病情才会转好或是恶化。从累计数据

看,美国平稳增长的病例还没有到达峰值,疫情形势仍然严峻。 另外,美国疫情开始的时间不一定是像表面的数据显示的一样,很可能美国疫 情大规模爆发应该在三月上旬或者二月底就已经开始了。 类似的,有一些国家,如意大利和英国,通过研究可以发现它们已经基本控制 住疫情,新增病例很低。 而中国作为最先与病毒进行斗争的国家,早已控制住疫情并且有序开展复工复 产,这是因为中国作为一个社会主义国家,可以由国家调配各地资源,集中力 量办大事,更快速有效地控制疫情,这体现了社会主义制度的优越性。

六、感谢

马老师
github 上的项目作者 Canghailan

七、部分源代码

1.数据的计算

# coding: utf-8
#平均数
def average(num):

add =0
for i in num:

add += i
average = add/len(num) return average

#中位数
def middle(num):

num.sort()
if len(num) % 2 == 0:

middle = (num[int(len(num)/2)] + num[int(len(num)/2 + 1)])/2 else:

middle = num[int((len(num) – 1)/2)] return middle

#方差
def variance(num):

variance = 0 for i in num:

variance += (average(num) – i)**2 variance /= len(num)
return variance

if __name__ == “__main__”: num = eval(imput())

print(‘平均数:’ + str(average(num))) print(‘中位数:’ + str(middle(num))) print(‘方差:’ + str(variance(num)))

2.拟合函数

# coding: utf-8
# 拟合函数
import matplotlib.pyplot as plt import numpy as np

x = np.arange(1,29,1)
y = np.array([27108, 32195, 24053, 37615, 42319, 31868, 27020, 24231,

24270, 29322, 33536, 34784, 29313, 28477, 22174, 25824, 25365, 28695, 30445, 25247, 20344, 18340, 22865, 22227, 27527, 26163, 22379, 18220])

z2 = np.polyfit(x,y,1)
#拟合函数的次把 1 改为 n,即为 n 次函数 p2= np.poly1d(z2) #在屏幕上打印拟合多项式

yvals2 = p2(x)
#也可以使用 yvals=np.polyval(z1,x)

plot1 = plt.plot(x,y,’*r’,label=’original values’)
plot2 = plt.plot(x,yvals2,’b’,label=’fitting linear function’)

plt.xlabel(‘xaxis’) plt.ylabel(‘yaxis’)

plt.legend(loc=4) print(p2)

#指定 legend 的位置,读者可以自己 help 它的用法

plt.title(‘Average dayly increase’) plt.show()

END

关于 “COVID-2019 疫情病例的统计和分析” 的 1 个意见

发表评论

电子邮件地址不会被公开。 必填项已用*标注