使用 Stata 分析全球新冠疫情数据与制作动态图表

使用 Stata 分析全球新冠疫情数据与制作动态图表

之前推出了使用 Stata 的 cuse 命令直接调用世界和中国的新冠疫情数据的方法,今天就来介绍一下如何使用这个数据进行疫情分析啦!

本文的部分图和之前的教程《使用 Stata 分析世界疫情数据》 中的图一样,不过我对代码进行了改进,主要是提高了代码的自动性(以后每天只要运行这一段代码就能得到最新的疫情分析结果)。之所以如此,是因为我下面想推出一篇使用 Stata 自动创建疫情数据分析报告的教程,敬请期待。

安装 cuse

cuse 被我放在了 GitHub 上,经过我的测试,使用 4G 网络(手机开热点)时,读取数据的速度还是 OK 的。所以如果大家遇到网络过慢的问题,可以选择 4G 网络。

1
net install cuse.pkg, from("https://czxa.github.io/cuse") replace

调用世界疫情数据

1
2
cuse world-covid19.dta, c w s
*> (全球新冠疫情数据(数据来源:https://github.com/CSSEGISandData/COVID-19): 2020-04-15)

这个数据集有如下变量:

  • iso: 三位的 ISO 代码;
  • country: 中文国家名称;
  • country_en: 英文国家名称;
  • date: 日期;
  • confirmed: 累计确诊人数;
  • recovered: 累计治愈人数;
  • deaths: 累计死亡人数。

c w s 是三个选项:

  • clear: 可以简写为 c;
  • web: 可以简写为 w,表示从远端仓库调用数据集;
  • savetosystem: 可以简写为 s,使用该选项时会将该数据集保存到系统文件夹中,这样下次调用该数据的时候就不需要从远端仓库调用了,直接使用 sysuse 调用即可。

可视化分析

找到截止昨日确诊数量最多个 9 个国家进行分析

这里我使用了一个 global 变量存储这九个国家的名称方便在后面的代码中使用:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

从数据集中筛选出这 9 个国家的数据:

实际上上面的 global 变量就是为了这里的 inlist 函数使用的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

绘制这 9 个国家的现存确诊人数增长曲线图

这里我是使用循环和 local 变量生成绘图命令语句:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

也可以分面绘制,毕竟这是个面板数据:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

计算全球每天的总数

使用 collapse 可以快速地进行分组汇总计算:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

下面这幅图是我之前绘制过的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

当前确诊人数与每日新增确诊人数

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

死亡和治愈病例数量

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

病死率

病死率的计算需要非常谨慎,因为我们要考虑状态未决的观测值的问题。有两种情况:情况一,正在治疗的患者都不幸去世了;情况二:正在治疗的患者都非常幸运的存活了。

在情况一中,使用我们的数据集计算得到的病死率低于真实的病死率,因为:

$$\frac{病死人数}{治愈数 + 病死数} \leq \frac{病死人数 + 正在治疗的病例}{治愈数 + 病死数 + 正在治疗的病例}$$

在情况二中,使用我们的数据集计算得到的病死率高于真实的病死率,因为:

$$\frac{病死人数}{治愈数 + 病死数} \geq \frac{病死人数}{治愈数 + 病死数 + 正在治疗的病例}$$

所以估计病死率我们应该使用区间估计,区间上限对应的病死率是情况一的病死率,区间下限对应的病死率是情况二。还有一个病死率的测度是每日的病死率:

$$每日病死率 = \frac{当日病死人数}{当日病死人数 + 当日治愈人数}$$

计算:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

各国病死数量和确诊数量的关系

这里我是使用双对数轴:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

部分国家病死率变化

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

绘制世界地图

今天我给大家带来了一个新的世界地图数据,Mill 投影,高精度。

绘制最后一天的现存确诊人数:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

循环制作动态图表

先绘制最后一天的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

再循环绘制所有天的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

这样我们就得到了一个 img 文件夹,里面有 84 张图片,最后我们把他们合成 MP4 视频即可,可以使用我之前分享的 R 代码,其中 665.mp3 是我们要给这个视频添加的音频:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

结果:

好啦,就这些了,大家可以试着掌握里面的循环生成绘图语句的方法,绘制复杂图表的时候很有用!

知识星球附件链接:https://t.zsxq.com/q33bubq

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×