盖茨基金会:如何使用Python拯救生命
每年全球都要花费数十亿美元来预防疾病,减少死亡,资助预防保健及治疗的各种研发项目,以及其他的健康方案。但资金毕竟是有限的,所以一些组织,比如全球卫生资金的主要捐助者比尔&梅林达·盖茨基金会(Billand Melinda Gates Foundation),需要考虑优先把钱花在那儿。华盛顿大学健康指标及评估研究所(Institute for Health Metrics and Evaluation,IHME)正在帮助解决这个问题,而且是用数据科学的方法。
IHME的主要项目之一,是全球疾病监测(Global Burden of Disease, GDB),这是一个“系统的科学举措,以量化因疾病、外伤及其他危险因素所致的可比较等级的健康损失”。这套系统能跟踪188个国家的300多种疾病和 50个风险因素,根据1990年至今的数据来建模。换而言之,GBD描绘的是囊括人致病或死亡所有可能的方式的全球图景。
例如,运行GBD的发达国家部分,会生成一个树状图,如下所示:
图中红色部分代表传染性疾病,像LRIs (下呼吸道感染,如肺炎等)、腹泻、艾滋病、肺结核和疟疾。绿色代表意外损伤,主要由道路交通事故、以及其他形式的暴力行为如战争和灾难所造成。最后,大块的蓝色部分表示非传染性疾病:缺血性心脏病、中风、癌症及许多其他疾病。
随后,GBD可以和“疾病控制优先顺序计划(Disease Control Priorities)”整合 - 该计划是评估世界各地的医疗费用、医疗的有效性和普及性的诸多项目的集合。这两个系统共同运作,为政策制定者服务,为需要优先配置资源的筹款项目提供依据。从本质上讲,它帮助类似盖茨基金的这类公益组织决定投资在哪里可以得到最佳效果,即,拯救最多的生命。
IHME需要处理大量数据。GBD的单次运行所产生的数据超过25 TB,一些更新的项目甚至超过1 PB。为了处理这样的数据量, IHME的计算机科学团队使用20,000核Sun Grid Engine集群,以及一个更新的基于Spark的1000核的集群。
“我们使用Python 来进行数据分析 ,因为它免费,且资源公开”,IHME科学计算部门副主任凯尔·福尔曼(KyleForeman),在2015年西雅图PyData会议上说, “我们是一个非营利机构,不想在购买软件上花费太多。而且我们正与世界各地的人们一同工作,Python的优势对该合作意义重大。 ”
Python具有可扩展性(对处理那些庞大的数据集至关重要),可进行快速原型设计,且易于使用。虽然IHME专门处理医疗卫生指标,但它的许多员工都是流行病学家和医生,而不是统计学家和计算机科学家。一些便利化程序,如Dashboard和iPython notebooks,对帮助这些电脑技术稍欠的合作者使用非常必要。
集合建模:让多数人满意
在提高一个国家健康水平的方法中,最重要的是确定死亡原因。毕竟,你想减少人们的死亡,而做到这一点的最好办法是要弄清楚什么让他们死亡。在估计死亡原因方面,IHME已经开发了一种称为CODEm(Causeof Death Ensemble,死亡原因集合模型)的统计模型。
“关于什么是最好的建模策略一直存在巨大的争论,”福尔曼说,“特别是因为我们有这样一个庞大的合作伙伴网络,我们使用一个集合策略来组合所有这些不同的方法,有选择地评估和挑选最好的,然后将它们组合成一个人人满意的集合。”
例如:为创建65岁俄罗斯人缺血性心脏病的模型,你可能会先采用线性回归,然后把不同的风险因素、周边国家和邻居的年龄组等相互作用的变量整合,再把残余信息采纳过来,然后通过高斯方法来回归(使用PyMC),以适应数据,并做出更好的预测。这些技术一起形成一个由几组相互作用的变量模型,然后和几千个别的模型交叉验证,生成集合模型,也就是在这个案例里所说的缺血性心脏病的整体模型。
另一个项目是关于疾病的建模,称为DisMod。 衡量某种疾病有许多不同的方法,比如你可以算一下有多少人得这个病,今年以来有多少人感染,一般的病期多长。 DisMod采用了流行病学数据,加上一些特定疾病的协变量,使用PyMC运行贝叶斯元回归(Bayesian meta-regression),以产生内部一致的数据集。
它是这样工作的:一个普通的疾病模型将一个人分类(共4类):易感,发病,因病而死,因并发症而死。然后,它使用了一系列微分方程来估计该患者从一类转换成另一类的各种概率(基于现有数据,协变量等等)。
展望未来
这些神奇的死亡和疾病模型的建立,使得 IHME 能够根据各种概率,预测全球健康的发展趋势,由此来展望未来。
通过追踪不同的条件和危险因素之间的相关性,跟踪所有单一疾病的全球疾病负担,并,IHME 可以预测生成该全球疾病系统(Global Burden of Disease)所跟踪的对每一疾病的可能发展情景。例如:在模拟血压和心脏病上升的时候,也看看是否钠(食盐)消费量也增加。同样,它也可以追踪一个国家的收入,同时看看烟草消费、死亡率和人口数的相关性。通过成千上万次地模拟运行这些相关性,将生成海量的数据,然后用基于 Python 的 统计模型来模拟。
这些大规模的模拟生成大量的数据资料( PB 级以上),所以他们需要以一种高性能、模块化的方式运行。要做到这一点,IHME 采用模块化的YAML来描述非闭合的流程图。每个数据集(GDP、死亡率等)被分配给一个节点,(通过使用 sympy 方程)这些节点之间的连线表示变量之间的相互影响(通过sympy表示)。
“这背后的想法,” Foreman 说,“是比尔·盖茨想知道他的钱花在了哪里,现在所做的一切,是为了拯救生活在2040年大多数人的生命。”
原文发布时间为:2015-11-20
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号
相关文章:
正则表达式复习笔记
注:可以在我的下载中下载完整word版 复习体系 简介 正则表达式是:符合一定规则的表达式。 作用:用于专门操作字符串。 特点:用一些特定的符号来表示一些代码操作。这样就简化书写。 所以学习正则表达式,就是在学习一些特殊符号…

规划文章的“显示效果”,还是太多犹豫。
现在的一篇文章可能有“带图片”(现称焦点),头条(可能要重新命名标题),有几种显示效果的情况怎么办?把头条和焦点规划到一起来?想不出一个比较好的解决方案。初步准备“一对多”。先…
Matlab与线性代数 -- 方阵的行列式
这段时间有同学给我后台留言,希望能够推送与Matlab相关的内容,本学期该微信号承担了数理系信息教研室线性代数课程内容推送和通知的任务,想来想去,就以此为契机,把Matlab和线性代数的内容结合起来吧,希望对…

《深入浅出iPhone/iPad开发(第2版)》——在Xcode中建立你的界面
本节书摘来自异步社区《深入浅出iPhone/iPad开发(第2版)》一书中的在Xcode中建立你的界面,作者 【美】Dan Pilone , Tracey Pilone,更多章节内容可以访问云栖社区“异步社区”公众号查看 在Xcode中建立你的界面深入浅出iPhone/iPa…
Struts2+spring+jdbc 以xml配置形式整合
今天做作业,练习一下Struts2springjdbc 以xml配置形式整合 整合步骤: 工程结构图: 重要配置文件 web.xml <?xml version"1.0" encoding"UTF-8"?> <web-app version"2.5" xmlns"http://java.…

我和你不了的故事
我和你不了的故事——代腾飞 2006年12月11日 于成都你无言告别而消失得无影无踪我的世界只留下了你昔日的背影从此你我相隔在不远不近的时空里然而我却失去了你所有的联系你带走的是我们在一起的欢歌笑语为我留下的却是思念的苦楚和美妙而难忘的回忆不知此时的你是否偶尔能把…
前后端分离的探索(四)
文桥,13级机械电子工程系,大四学生。在LSGO软件技术团队负责前端部分,本图文是介绍目前流行的前后端分离技术的第四篇(一共六篇),希望大家能够对这块有所了解。

《Adobe Fireworks CS5中文版经典教程》——导读
前言Adobe Fireworks CS5是一款专业级图像处理应用程序,融矢量和位图处理功能于一身。之所以采取独特的图像处理方法,是由于Fireworks旨在让用户能够创建和处理屏幕图形,以供Web或诸如移动应用程序和Adobe Flash等基于屏幕的工具使用。Firewo…

使用wsimport生成本地调用代码
使用wsimport生成本地调用的步骤 wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具. wsimport.exe位于JAVA_HOME\bin目录下. 常用参数为: -d<目录> - 将生成.class文件。默认参数。 -s<目录> - 将生成.java文件。 -p<生成的新包名> -将生成的…

单片机练习-RC-5红外遥控器程序及简单制造DIY PC遥控器
本程序采用的芯片为SAA3010, 参考资料有:1. 常用红外遥控接收头引脚图解2. 红外遥控编码资料3. RC-5红外遥控程序 4. GIRDER中文教程与电脑遥控器制作资料 5. Girder网站 (一个需要钱买的遥控)6. 再度出击,20元打造经典PC遥控器!7. SAA3010 DataSheet这次…

《iOS9开发快速入门》——导读
本节书摘来自异步社区《iOS9开发快速入门》一书中的目录,作者 刘丽霞 , 邱晓华,更多章节内容可以访问云栖社区“异步社区”公众号查看 目 录前 言 第1章 iOS 9开发概述 1.1 iOS 9新特性 1.2 构建开发环境—Xcode 7.0 1.3 编写第一个iOS 9应用 1.4 小…
C#语言与面向对象技术(4)
本图文主要掌握以下问题: 1. 为什么要引入属性的概念? 2. 属性的get与set方法是怎样定义的? 3. 什么是索引器? 4. 索引器是如何实现的?

使用wsdl2java命令生成webservice本地调用代码
使用wsdl2java命令生成webservice本地调用代码 如果没有设置环境变量,就要先进入cxf的bin目录 例子: wsdl2java -d . http://localhost:7890/hello?wsdl 它包含以下参数: -d参数,指定代码生成的目录。 -…

js表单验证大全
js验证表单大全1. 长度限制<script>function test() {if(document.a.b.value.length>50){alert("不能超过50个字符!");document.a.b.focus();return false;}}</script><form namea οnsubmit"return test()"><textarea…

《为iPad而设计:打造畅销App》——大胆创意
本节书摘来自异步社区《为iPad而设计:打造畅销App》一书中的大胆创意作者【英】Chris Stevens,更多章节内容可以访问云栖社区“异步社区”公众号查看 大胆创意为iPad而设计:打造畅销App其他的应用开发者都在做什么呢?或许应该在应…
Matlab与线性代数 -- 对数化间隔向量
这段时间有同学给我后台留言,希望能够推送与Matlab相关的内容,本学期该微信号承担了数理系信息教研室线性代数课程内容推送和通知的任务,想来想去,就以此为契机,把Matlab和线性代数的内容结合起来吧,希望对…

ContentProvider访问问题
问题解决一: 写了一个类,实现了ContentProvider,在清单文件中也注册了。 <provider android:name".provider.MyProvider" android:authorities"mytest" /> 但是访问的时候出现异常: j…

《C++面向对象高效编程(第2版)》——3.11 类名、成员函数名、参数类型和文档...
本节书摘来自异步社区出版社《C面向对象高效编程(第2版)》一书中的第3章,第3.11节,作者: 【美】Kayshav Dattatri,更多章节内容可以访问云栖社区“异步社区”公众号查看。 3.11 类名、成员函数名、参数类型…

一个GDIPlus的Bug -- OutofMemory异常
今天发现 framework2.0中的一个GDIPlus的Bug: 在Form的OnPaint事件里面写如下代码: private void Form1_Paint(object sender, PaintEventArgs e) { Pen p new Pen(Color.Red); p.Width 1; p.DashStyle DashStyl…
前后端分离的探索(五)
文桥,13级机械工程系,机械电子工程专业,大四学生。在LSGO软件技术团队负责前端部分,本图文是介绍目前流行的前后端分离技术的第五篇(一共六篇),希望大家能够对这块有所了解。

从一道面试题分析Thread.interrupt方法
阿里面试题: public class TestThread {public static void main(String[] args) {Thread t1 new Thread() {Overridepublic void run() {try {int i 0;while (i < 100000000) {// nothing}System.out.println("A1");} catch (Exception e) {System.…

对联广告,带关闭,可以移动
在网页中加入以下代码 两个图的,一个是关闭用到的,一个是广告图 <script languageJavaScript src"js/scroll.js"></script> js代码如下: suspendcode"<DIV idlovexin1 styleZ-INDEX: 10; LEFT: 6px; POSITION…

u一点·料:阿里巴巴1688ued体验设计践行之路. 导读
U一点料 阿里巴巴1688UED体验设计践行之路 阿里巴巴1688用户体验部著 前言 既赶路,也感受路 文 / 汪方进 用户体验设计师作为一个职能岗位,在国内互联网公司中存在已有十几年的时间了,早期的互联网公司设计师大都是无所不能的多面手ÿ…
Matlab与线性代数 -- 显示格式的设置
打磨一项技能最需要的就是耐心,我们知道做一件事情不会一蹴而就,需要长时间的积累。关于Matlab的打磨会持续很长的时间,每天学习一个知识点,一年下来就不得了。要有耐心,要有耐心,跟着小编每天花5分钟的时间…
java初始化顺序
java初始化顺序

值得收藏的经典网页代码(1)
1. 将彻底屏蔽鼠标右键,无右键菜单 <body οncοntextmenu"event.returnfalse"> 也可以用于网页中Table框架中:<table border οncοntextmenureturn(false)><td>no</table> 2.取消选取、防止复制 <body onselectstart"r…

五款漂亮的 GNOME 3.4 主题-PPA
国外著名开源网站WebUpd8已经把这五款漂亮的Gnome 3.4 的主题制作了PPA,可使用命令轻松实现安装。先来看看这几款主题的截图: adwaita-x-dark Adwaita X dark adwaita-x-light Adwaita X light evolve-gtk3 Evolve theme-ambiance-precise Ambiance-Prec…
Matlab与线性代数 -- 矩阵的加法与减法
打磨一项技能最需要的就是耐心,我们知道做一件事情不会一蹴而就,需要长时间的积累。关于Matlab的打磨会持续很长的时间,每天学习一个知识点,一年下来就不得了。要有耐心,要有耐心,跟着我们每天花5分钟的时间…

备考ocjp有感
看网上好多评论,说什么ocjp的证书很水,复习个一两天,背背题库就能过了。看了之后,有一些感想。 首先,有证书不代表什么,不能说你获得的什么证书,就一定有怎样的能力,有证书不代表什…

买了《精通spring 2.0》
刚才去书店选书,对比了好几本,最后选了这一本。听说第一版有些问题,不过感觉这一版本还可以。理论和实践都有所兼顾。书中的例子是spring自带的例子。转载于:https://www.cnblogs.com/chenge/archive/2007/06/06/774212.html