基于Tableau Public对新冠状病毒肺炎的数据分析与地区疫情的可视化

v1.3


利用疫情期间家里蹲的时间玩了下Tableau Public,希望能帮助到有需要的人。

工具
Tableau Public 2019.1.0 (20191.19.0123.1906) 64 位 (非商用版本是免费的)
Download Link: 国内连接速度可能较慢,可以百度下载资源

Open Dataset
API Link: 用 utf-8 decode
引用自: 新型冠状病毒全国疫情接口Api by Cc琎(这是我在国内网站找到最详细的肺炎疫情api,感谢大佬! 链接有时会失效



处理open dataset

  1. 处理全国肺炎疫情数据
    虽然Tableau Public支持json格式文件,但是直接转换的话数据非常混乱,所以我们需要把调用的json文件保存为.xlsx用MS excel进行转换和清理。
    数据处理后导入TP:
    清理过的dataset
  2. 手动输入银川市疫情追踪数据
    疫情追踪的数据全部来自宁夏新闻网公众号,Link: 需要微信客户端打开
    处理后的dataset:
    处理后的open dataset

制作worksheet(工作表)

确诊病例预测
  1. 首先将日期从string转换为date,并且设置成维度(dimension),将其他attributes设置为度量(measure)。
    dimension&measure
  2. 选择图表类型
    第一个表展示的是从一月23日到2月3日全国确诊病患人数的变化,对于这种需要探究continous data(连续数据)随时间变化趋势的scenario一般采用折线图。
  3. 选择预测模型
    紧接着到了TP我个人认为最powerful的功能之一,它可以帮你根据你的样本容量等factors自动帮你从八个Exponential smoothing methods里选择最合适的数据预测模型,不用纠结数据过拟合或者欠拟合等问题,对不是DS出身的童鞋(比如我)简直是福音。TP选用的是简单指数平滑(simple exponential smoothing, SES)。

已使用指数平滑法计算所有预测。


         模型         |           质量指标              |      平滑系数 
 级别	 趋势	季节  |	RMSE  MAE   MASE 	MAPE   AIC | Alpha	Beta Gamma
 累加	 累加	 无     1,388 1,255 0.76    53.8%  169	 0.500 0.500 0.000
  1. 选择置信区间(预测区间)
    一般而言,置信水平越高,生成的区间越宽,预测的可信度就越高。因为采集到的数据只有半个月,我们的样本数相对而言很小,所以如果用很高的置信水平,预测区间会变得非常宽失去效果,所以我采用了90%的置信水平。
    90%预测区间
  2. 添加趋势线
    趋势线模型的选择是较为复杂的一步,首先不能用简单的线性回归,疫情感染不可能呈现正比例函数的趋势。接着如果按照纯理论分析,病毒的传播应该最符合指数模型,也就是几何级数增长模型,但是因为现实各种因素影响,实际曲线有极大可能不符合指数模型。所以我使用8阶多项式的模型以求达到R2的最大值。事实上也证明了我的推断,选择多项式时R2是0.997713,而指数模型为0.937001。
  3. 成图
    基于23日到5日这13天的数据生成的数据预测曲线
    截图TP Gallery
死亡率&治愈率 趋势分析

这里的死亡率与治愈率其实是不严谨的,因为死亡率是指因病死亡的个体占一定单位人口的比率,比如每十万人中因得艾滋病死亡的比率。更加确切的表述应当是病死率,即一定时间内因病死亡占患病人数的百分比。但是因为新型肺炎病毒对于现在的我们来说过于未知,官方并没有公布病程等信息,现在就暂且采用死亡/治愈和治愈/确诊来代表死亡率和治愈率。

  1. 选择图表类型
    这里比较理想的选择是双折线或者折线与柱状图组合。因为要加预测区间,用两种类型的图标相对而言要更直观一些,所以选择了后者。
  2. 创建计算字段
//死亡率
[死亡]/[治愈]
//治愈率
[治愈]/[确诊]

为了更加直观,最好将比率改成百分比

  1. 选择预测模型&区间
    预测模型SES, 置信区间同样是90%。
  2. 将所做的三张表放进仪表板(dashboard)里
    dashboard
    TP Gallery
银川市病例追踪
  1. 处理数据
    因为这部分没有public api或者open dataset,需要手动输入制作表格,我制作的excel表格如下图,用日期作为pk,经纬度需要用[百度拾取坐标系统,百度出来的误差太大,已舍弃]高德拾取系统进行获取,相比之下Google map实在好用太多。。表格
  2. data transformation and setup
    首先将日期从string变成date,这里需要注意的是TP并不能直接读取从百度地图抓取的坐标,所以第一步在数据处理的时候需要把经纬度拆分,然后分别将经纬度转换为地理角色(geographical role),然后再拉进地图里。
  3. 地图
    TP默认的地图信息量很少,即使在地图选项中开启了街道与高速公路选项,银川市的街道还是不能正确显示。庆幸的是TP支持从mapbox wms服务直接导入地图(这部分需要在MAPBOX官网注册账号然后获取自己customized的map style分享链接,这里不再赘述),更新地图后,街道位置信息变得更加直观。
    更新前地图
    更改style后
    随着样本的增多,也可以将date拖进页面(page)里,用来显示每天的病例追踪信息,如下图。
    日期区分
    TP Gallery: 银川病例追踪
全国疫情地图仪表板的制作【v1.1更新】

成图
仪表板

Link: 全国疫情地图

确诊,疑似与死亡每日新增变化量折线图
  1. 处理数据
    TP有内嵌的difference函数,直接勾选即可
  2. 因为自变量相同,可以将三个折线图放进一个表里,如图
    折线图
利用疑似与确诊病例求和来观测疫情拐点

根据中国工程院院士闻玉梅在新闻发布会上的描述,疑似感染数下降、发病数下降是拐点出现的标志。1 所以我们这里把疑似病例与确诊病例求和,然后将这一新的变量求对数(这里推荐一篇文章),取对数有两点原因:

  • 首先,在不影响原数据数据相关性的前提下,压缩了变量范围,使数据变化的趋势更加直观。
  • 接着,是为了减缓数据的整个值域中的在不同区间的差异带来的影响。在疫情初期和疫情爆发期相同的增量的差异敏感程度有很大不同,初期的100个增量与爆发期1000个增量的敏感度有可能是一致的。打个比方,同样是20块钱,加在电影票价上相较于涨在你想买的iphone上对你的决策的影响要大很多。
  1. 创建计算字段
//Name the measure - D+S
[疑似] + [确诊]
//Name the measure - ds对数
LN([D+S])
  1. 疑似与确诊求和的折线图可以直接plot出来,对数图表需要对和进行求对数再求差值。
  2. 成图
    可以看出,虽然疫情进入了爆发期,每天的增量较初期已经不能同日而语,但是疫情变化趋势是日渐平稳的,说明整体疫情暂时还是处于可控,可预测的范围内。当对数差异愈趋近于0时说明疫情拐点即将到来。
    在这里插入图片描述

更新日志

v1.0原稿
v1.1
  1. 利用mapbox更新地图信息与style
  2. 以城市名做区分,实现疫情严重程度的可视化
  3. 使用仪表板将不同的worksheet拼接到一起
v1.2
  1. 将不同worksheet拼接到dashboard里
  2. 新做了确诊,疑似和死亡difference的图表
  3. 新做了确诊+疑似的折线图(观测拐点)

  1. 中国工程院院士闻玉梅:一个月内疫情拐点或将到来 ↩︎

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值