查看原文
其他

卫健委的“糊涂账”

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:张馨月

文字编辑:朱巧利

技术总编:张计宝
一段时间以来,我们每天密切关注着新闻、微信、微博,为每一点进展雀跃,为每一份善良感动,为增加的数字揪心,为一些人的不作为愤怒。疫情的爆发至今已20余天,全国人民试着苦中作乐,努力回到工作与生活的正轨,我们相信街市会重新熙熙攘攘,武汉会变回原来的繁华模样。但在此之前,有些事情不应被忘记。我们可以不计代价的挽回这场灾难,但不能不记为此付出的代价;我们需要思索未来如何走出去,但不能忘记究竟为何会走到这步田地?
在武汉卫健委的官方网站上(http://wjw.wuhan.gov.cn/front/web/list3rd/yes/802),能够搜集到123日以来全国及湖北省的新冠肺炎疫情通报;结合1231日以来的公示情况,可以整理得到疫情爆发以来的各项数据详细数据已经放在爬虫俱乐部云端:https://stata-club-1257787903.cos.ap-chengdu.myqcloud.com/%E6%96%B0%E5%86%A0%E8%82%BA%E7%82%8E%E7%96%AB%E6%83%85%E6%95%B0%E6%8D%AE.zip)。如图所示,1231日的确诊人数为27人,而到今天,这一数字已上升至五位数。因此,我们有必要算算卫健委的这笔“糊涂账”。以123日武汉封城为节点,我们将分析在此前后卫健委的通报情况。



123日之前:可防可控,数据真空



20191231日疫情在全网引起关注至122日,武汉卫健委对疫情信息的披露并不完全。我们无法从已公开的数据中了解到这些天内疑似病例的状况,同时,在11日、12日、16日至110内,相关单位未对疫情的发展状况做出任何公布。


从累计确诊的趋势图上可以看到,15日的确诊数量为59例,而到11日,这一数字竟然下降41例,且在之后的五天内维持不变。卫健委在对于是否人传人的回答上一直十分严谨,在15日与115日均声明“未发现明显的人传人证据”。作为非专业人士,我们无法判断这样的推断是否过于谨慎,亦无法判断连续多天不变的确诊人数是否科学,但可以明确的是,在这些天内百步亭的万家宴在如火如荼地准备,8名“造谣者”被警方传唤,武汉市及湖北省的两会顺利召开,香港与新加坡已采取了警备措施。


 

123日至今:瘟疫攻城,携手战疫

 


自封城以来,卫健委每日发布的数据相对较为完整,对新增数量、累计数量、跟踪数量等信息有明确的报道。但这之中也不乏存在一些问题,具体如下:


1.缺乏时间趋势分析

在每日发布的通报情况中,卫健委仅仅列示了前一日的疫情状况,而从未对数据的突增突减做出任何解释。

我们选择了几项指标画出时间趋势,或许能带来更多的思考。

从中可以得到一些积极的信息:

比如,从130日起,与新增死亡人数相比,新增治愈出院人数显著增加。

 


比如,自23日以来,湖北省外的新增确诊数量呈现出连续下降的趋势。



但是,有些数字我们不容忽视:超过十五万的尚在观察密切接触者,上千名的每日新增确诊与疑似病例,依旧在上升的死亡人数。隐藏在数字当中的,是那位按下“能,明白”的医生,是为了求助学会发微博的70岁老教师,是在高速路上流离失所的司机,是半夜在公交车上颠簸的蹒跚老人。正如方方所说,“时代的一粒灰,落在个人头上,就是一座山。”从患者的绝望与无助到群众的焦虑与愤怒,增加或下降的数字背后,是身处以及关注这场疫情的每一个人的苦涩。
 


2.缺乏面板分析

关于各个省市的疫情发展状况,我们从卫健委发布的通报中获得的信息寥寥如下。除了对各省新增死亡的具体报道,其他信息仅仅对湖北省的情况进行了说明。想要了解疫情在全国或本省的现状,只能通过地方平台或其他媒体平台获得了解。



而对于湖北本省而言,虽然公布了各市的数据,仍然不足以说明势态发展如何。

在疫情最初蔓延的一段时间内,全国的注意力都集中在武汉市上,而忽略了武汉周边的城市。以新增确诊病例为例孝感市、黄冈市疫情最初爆发增速便达到数十例、数百例。与荆州、荆门等市相比,潜江市与武汉的距离更近,但疫情一直得到了良好的控制。疫情的肆虐,是否应当全部归咎于病毒的传染性?



3.数据足够准确吗?



通过分析湖北省与全国的死亡率,可以发现二者在近几天内才趋于一致。在最初的一段时间内,这一差距甚至达到2%。这也意味着,疫情爆发的初期湖北省所公布的确诊数量并未覆盖到所有的新冠肺炎患者。如果说这笔“糊涂账”最开始是武汉政府不愿算清,事情发展至今天,他们是否还有能力算清?希望在接下来的一段时间内,湖北省可以真的如相关部门所说,做到“疑似患者清零”。
 
在对数据进行分析的同时,我们还有许多疑问。比如为何湖北省在124日才启动一级响应,在211日才实行小区封闭管理?雷神山及其他定点医院的床位使用情况如何?全球寄往武汉的口罩都去了哪儿?此刻的疑问,不是为了质疑与批判,而是希望当所有人可以再次呼吸到新鲜自由的空气之时,“唯上不唯实”的局面得以改观,透明的汇报机制与问责机制得以建立,每一个善良又勇敢的逆行者能够平安凯旋,理性与良知、尊重与敬畏能在所有人心中扎根。
 



绘图程序如下:

use total_data,clear*全国累计确诊scatter 累计确诊 date , mfcolor(blue%40) mlcolor(black) msize(*0.3) ylabel(0(10000)70000,angle(0)) xlabel(#10) /// mlabel("累计确诊") mlabsize(*0.4) mlabposition(12) mlabcolor(red) connect(l) /// ytitle("累计确诊", placement(north)) xtitle("日期",placement(right)) subtitle("全国累计确诊人数",position(6) box bcolor(white))
*疫情初期全国累计确诊人数 scatter 累计确诊 date if id<16, mfcolor(blue%40) mlcolor(black) msize(*0.5) ylabel(0(50)600,angle(0)) xlabel(#10) /// mlabel("累计确诊") mlabsize(*0.7) mlabposition(12) mlabcolor(red) connect(l) /// ytitle("累计确诊", placement(north)) xtitle("日期",placement(right)) subtitle("疫情初期全国累计确诊人数",position(6) box bcolor(white))
*新增出院与新增死亡人数对比 twoway (scatter 新增出院 date if id>15 , mfcolor(blue%40) mlcolor(black) msize(*0.3) ylabel(0(200)1400,angle(0)) xlabel(#10) /// legend(label(1 新增出院) label(2 新增死亡) region(lpattern(blank) fcolor(none)) pos(10) cols(1) ring(0) order(2 1) size(*0.8)) /// mlabel("新增出院") mlabsize(*0.5) mlabposition(12) mlabcolor(red) connect(l)) /// (scatter 新增死亡 date if id>15 , mfcolor(blue%40) mlcolor(black) msize(*0.3) ylabel(0(200)1400,angle(0)) xlabel(#10) /// mlabel("新增死亡") mlabsize(*0.5) mlabposition(12) mlabcolor(red) connect(l) /// xtitle("日期",placement(right)) subtitle("新增出院与新增死亡人数对比",position(6) box bcolor(white)) )
*近期湖北省外各省新增人数scatter 各省新增 date if id>26, mfcolor(blue%40) mlcolor(black) msize(*0.3) ylabel(0(100)1000,angle(0)) xlabel(#7) /// mlabel("各省新增") mlabsize(*0.5) mlabposition(12) mlabcolor(red) connect(l) /// xtitle("日期",placement(right)) subtitle("近期湖北省外各省新增人数",position(6) box bcolor(white)) *尚在观察接触者scatter 尚在观察接触者 date if _n>15, mfcolor(blue%40) mlcolor(blue) msize(*0.3) ylabel(10000(20000)190000,angle(0)) xlabel(#10) /// mlabel("尚在观察接触者") mlabsize(*0.5) mlabposition(12) mlabcolor(blue) connect(l) xtitle("日期",placement(right))
*新增确诊与新增疑似患者twoway (scatter 新增确诊 date if _n>15 , mfcolor(blue%40) mlcolor(black) msize(*0.3) ylabel(0(2000)15000,angle(0)) xlabel(#10) /// mlabel("新增确诊") mlabsize(*0.5) mlabposition(6) mlabcolor(red) connect(l)) /// (scatter 新增疑似 date if _n>15, mfcolor(blue%40) mlcolor(blue) msize(*0.3) ylabel(0(2000)15000,angle(0)) xlabel(#10) /// mlabel("新增疑似") mlabsize(*0.5) mlabposition(12) mlabcolor(blue) connect(l)) *新增死亡与累计死亡人数twoway (scatter 新增死亡 date if id>15 , yaxis(2) mfcolor(blue%40) mlcolor(black) msize(*0.3) xlabel(#10) ytitle(新增死亡.axis(2)) /// mlabel("新增死亡") mlabsize(*0.5) mlabposition(12) mlabcolor(red) connect(l)) /// (scatter 累计死亡 date if id>15 , mfcolor(blue%40) mlcolor(blue) msize(*0.3) ylabel(0(200)1600,angle(0)) xlabel(#10) ytitle(累计死亡) /// mlabel("累计死亡") mlabsize(*0.5) mlabposition(6) mlabcolor(blue) connect(l))
*全国死亡率与湖北死亡率对比twoway (scatter 死亡率 date if id>15 , mfcolor(blue%40) mlcolor(black) msize(*0.3) ylabel(0(0.01)0.1,angle(0)) xlabel(#10) /// legend(label(1 死亡率) label(2 湖北死亡率) region(lpattern(blank) fcolor(none)) pos(2) cols(1) ring(0) order(2 1) size(*0.8)) /// mlabel("死亡率") mlabsize(*0.5) mlabposition(6) mlabcolor(red) connect(l)) /// (scatter 湖北死亡率 date if id>15 , mfcolor(blue%40) mlcolor(black) msize(*0.3) ylabel(0(0.01)0.1,angle(0)) xlabel(#10) /// mlabel("湖北死亡率") mlabsize(*0.5) mlabposition(12) mlabcolor(red) connect(l) xtitle("日期",placement(right)) subtitle("全国死亡率与湖北死亡率对比",position(6) box bcolor(white)) )
*疫情爆发20天内湖北省新增人数use hubei_2_11,clearmkmat 武汉 鄂州 天门 十堰 荆门 潜江 孝感 随州 黄石 宜昌 恩施州 黄冈 襄阳 荆州 仙桃 咸宁 if _n<21 ,matrix(C)mat C1=C'heatplot C1,values(format(%6.0f) mlabsize(*0.5)) color(hcl,diverging intensity(0.5)) xlabel(none) cut(0(10)1000) ramp(right space(15) subtitle("") label(@min "low" @max "high")) note("疫情爆发20天内湖北省新增人数",position(6) )





对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐

Pandas中数据的排序与切片

DataFrame数组常用方法

巧用局部宏扩展函数dir

过了14天潜伏期真的没事了?

Pandas基本数据类型介绍

NumPy数组基本介绍

“个性化”sortobs命令,教你实现排序自由

携手战疫,我们在行动

恭贺新春,平安顺遂|各省疫情关注度地图

过年观影指南(二)

过年观影指南(一)

egenmore隐藏功能——进制转换

相遇insobs,如暗室逢灯

数据可视化之地理坐标系

SFI:Stata与Python的数据交互手册(一)
Stata模拟构建朋友圈
一个粉丝的疑惑—— local和scalar
新的一年,效率满满~(下)

关于我们



微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata和python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com
投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存