查看原文
其他

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

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

本文作者:俞诗琪

文字编辑:朱巧利

技术总编:张计宝
近些天,迅速扩散的新型冠状病毒,像一层厚厚的乌云,时刻笼罩在我们生活中。这位以“潜伏期长、易感染”为特点的“头号待捕罪犯”,已成为全国各界、甚至全球的焦点。在我国雷厉风行的条例颁布、令行禁止之下,全国人民也拉起了警钟。人民日报等官方权威媒体也发表关于“防控新型冠状病毒”的文章,以普及科学的防范知识,提高大众自我保护意识。看到新闻电视上广泛流传关于新型冠状病毒“潜伏期一般为3-7天,最长不超过14天”、“武汉回乡人士自行居家隔离14天”的说法,杠精的小编捕捉到了一丝疑惑的气息。



本着质疑科学的严谨精神,小编不厌其烦地搜集网上关于确诊病例的信息,试图搜集到足够多的样本,作为估计病毒潜伏期的依据。由于全国样本量大且不易统计,经过对比分析,最终小编选择截止202026,河南省包括17个省辖市在内706例确诊病例作为分析样本。部分数据截图如下:



原文中没有写明的信息,表上一律为空值,所有变量含义整理如下:



由于患者回忆的偏差,或统计信息的不详、病毒潜伏未被发现等原因,得到的统计信息多少与事实有所偏离,因此我们以较高标准甄别信息的精确度,对于含糊不清、过于简略的信息加以摈弃,宁使其成为缺失值,从而在最大程度上保证数据的准确性。现下交代完毕,那么还等什么呢?赶紧搓搓小手,尝一尝新鲜出炉的“数字佳肴”吧!


一、导入数据和预处理


现在我们利用import excel命令导入上述表格内容:

clear allimport excel using 数据整理.xlsx, first case(lower) clear //以第一行作为变量名

结果如下:



为了方便统计患者的性别、年龄,我们将性别、年龄变量转换成数值型变量后,再给性别变量贴上标签

replace 性别 = "1" if 性别 == "男" //用数字1代替观察值"男",数字0代替观察值"女"replace 性别 = "0" if 性别 == "女"destring *,replace //字符串型变量转为数值型label define sex 1 "男" 0 "女" //定义一个标签sex,使数字1标签值为"男",数字0标签值为"女"label values 性别 sex //给变量性别贴上标签


然后根据“估计感染”、“估计发病”、“估计确诊”时间,生成两个新变量“估计潜伏期”和“估计诊断期”分别计算这些患者从感染到发病、从发病到确诊所需时间

gen 估计潜伏期 = 估计发病 - 估计感染gen 估计诊断期 = 估计确诊 - 估计发病


由于患者叙述、统计者信息采集过程存在偏差,数据中出现较为离谱的极值。虽不能否认其存在的合理性,但本着反映一般性的原则,为了减小极值对结果的影响,我们还需要进行适当的缩尾工作

winsor2 估计潜伏期 估计诊断期,cut(1,99) replace // 分别用第1百分位数、第99百分位数代替小于第1百分位数、大于第99百分位数的观察值


二、不同年龄组发病频率


完成了数据预处理,我们就可以对数据进行分析啦!首先,对变量性别、年龄、估计潜伏期、估计诊断期进行描述性分析

sum 性别 年龄 估计潜伏期 估计诊断期


从图中结果可看出,在剔除缺失值后,患者男女占比基本持平。样本年龄均值在44,最小的0岁(报道说出生3天),最大的88岁。我们初步预期的潜伏期均值在6.2,与宣传的3-7天潜伏高发期相吻合,病毒最长潜伏16天,具体结果仍需要通过进一步探讨。

对于不同年龄段,根据患者年龄实际情况,分为四段:0-17岁、18-45岁、46-69岁、>69岁,此处生成新变量年龄段表示各患者所属的年龄段

gen 年龄段 = "" //将年龄进行层次划分,生成字符串变量replace 年龄段="0-17" if 年龄>=0 & 年龄<=17 replace 年龄段="18-45" if 年龄>=18 & 年龄<=45 replace 年龄段="46-69" if 年龄>=46 & 年龄<=69replace 年龄段=">69" if 年龄>69 & 年龄!=.bysort 性别: tab 年龄段


得到按变量性别分类的频数分布表如下:



显然频数分布表不够直观,我们需要借助条形图来展示这些分类变量:

bysort 性别 年龄段: gen 分类频数 = _Ngraph bar 分类频数, over(性别) over(年龄段) title("图1 不同年龄组患者数量图") /// b1title("年龄段") ytitle("患者数(个)") asyvars ///blabel(bar, format(%2.0f)) graphregion(margin(vlarge))//按变量性别和年龄段分类绘制分类频数的条形图,设置标题、横坐标、纵坐标,变量性别变换成相应的y轴变量,条形上显示具体频数,调整大小



现在我们可以清楚看到,发病患者年龄集中在18-69岁,是青年和中年人群,然而老人和儿童作为易感人群,在图中没有表现出来,小编认为这与老人小孩接触外界较少有关。同时图上反映青年感染者中,男性较女性多,总的来说,感染该新型冠状病毒无显著性别差异


三、不同估计潜伏期发病频率

 

同样地,我们根据官方说法“3-7天高发期,最长不超过14天”,将潜伏期分为四个时间段:<3天、3-7天、8-14天、>14天,绘制分组的患者频数分布表(前文提过,这里不做过多展示),并借此画出条形图。程序类似上文:

gen 潜伏期 = ""replace 潜伏期="0-3" if 估计潜伏期<3 replace 潜伏期="3-7" if 估计潜伏期>=3 & 估计潜伏期<=7 replace 潜伏期="8-14" if 估计潜伏期>=8 & 估计潜伏期<=14 replace 潜伏期=">14" if 估计潜伏期>14 & 估计潜伏期!=.bysort 性别 : tab 潜伏期bysort 性别 潜伏期 :gen 分类频数1 = _Ngraph bar 分类频数1, over(性别) over(潜伏期) title("图2 不同估计潜伏期患者数量图") b1title("估计潜伏期(天)") ytitle("患者数(个)") asyvars ///blabel(bar, format(%2.0f)) graphregion(margin(vlarge))



再用一个饼图展示各时间段发病患者占比

graph pie 分类频数1, over(潜伏期) pie(4,explode) ///plabel(_all percent, gap(-5) size(*1.5) color(white) format("%7.2f")) ///title("图3 不同估计潜伏期发病率图") subtitle("单位:天") ///legend(rows(4) position(2) ring(0)) graphregion(margin(vlarge)) //按潜伏期分类绘制分类频数1的饼图,分离板块4,显示占比,设置标题、副标题



果然与官方预计吻合!图上显示,估计的潜伏期几乎集中在14天之内(患者数约占99.72%,仅有少数患者(约占0.28%)的估计潜伏期大于14天,因此我们在感叹的同时,也不能放松警惕!因为不排除隔离大于14天仍会发病的可能!官方说法3-7天”确实被证实是高发期(患者数约占62.65%),这里我们也提醒大家,对于刚从“重灾区”出来,尚未有感染症状的小伙伴,敬而远之是才对大家最好的关怀!


四、不同估计诊断期发病频率


在小编整理数据时,发现一个细思极恐的事实:有些患者自述接触过武汉归乡者,但对方未发病前提下,却传染给了患者。想想确实可怕,我们人来人往的学校、医院、小区里,有多少病毒被人体携带却藏匿得极好不发作,只等待悄无声息地扩散开来,让人无知觉地“中招”。所以小编在这里也估算了,患者从出现症状到确诊的时间,利用直方图简单描述:

hist 估计诊断期, bin(16) title(不同估计诊断期发病频率图) ytitle(患者占比(%)) ///xtitle(估计诊断期(天)) graphregion(margin(vlarge)) //绘制估计诊断期的直方图,分16个矩形,设置标题、横坐标、纵坐标,调整大小

 

可见,从患者出现症状,到被确诊为新型冠状病毒感染者,大多需要1-9时间,这期间多数患者尚未被隔离,仍将病毒继续传给不知情的家人、朋友、医护人员甚至陌生人。需要10-15天才被确诊的患者,也不在少数,她们多半出于健康、自我隔离意识的薄弱,成为病毒大范围扩散的“帮手”!

 

五、不同可能原因导致染病频率

 

最后我们来探讨下,患者中受到感染的原因大多有哪些,也好为我们防控疫情提供参考:

tab 原因 //根据变原因bysort 原因 :gen 分类频数2 = _Ngraph hbar 分类频数2, over(原因,sort(1) des) ///title("图5 不同可能原因导致染病数量图") ytitle(患者数(个)) ///blabel(bar, format(%2.0f)) graphregion(margin(vlarge)) //按reason分类绘制频数fr的横向条形图,按频数大小降序排列



可以理解,去武汉或者湖北其他地方工作,是首要被感染的因素。此外,和湖北返乡的家人、亲戚、朋友密切接触也成为最重要的因素之一。尤其要提醒大家的是,不少患者自述“感染前去过医院”,在医院原本去看“腰痛”、“腿痛”等等与感染病毒无关的疾病,却被牵连到病毒的漩涡中,实在冤枉。不过现在,新型冠状病毒已经引起大家足够重视,在公共场所也做好了足够防范工作,但我们还是要提高警惕意识,时刻保护好自己,就是对社会、大众最好的贡献!

道阻且长,行则将至!愿疫情早日结束,阳光下的每一个微笑不再被口罩遮挡!






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

Pandas基本数据类型介绍

NumPy数组基本介绍

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

携手战疫,我们在行动

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

过年观影指南(二)

过年观影指南(一)

egenmore隐藏功能——进制转换

相遇insobs,如暗室逢灯

数据可视化之地理坐标系

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

自科基金项目信息爬取

rename group批量修改变量名

小命令,大不同——insobs插入新值

新的一年,效率满满~(上)

关于我们



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

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

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

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