APP下载

Python 数据分析在公共卫生领域的应用及前景

2022-12-28沈梦碧程祉元肖易飞高小杜慧江

卫生职业教育 2022年14期
关键词:公共卫生疫情

沈梦碧,程祉元,肖易飞,高小 ,杜慧江

(上海健康医学院医疗器械学院,上海 201318)

信息化数据时代已经到来,各行各业都充斥着数据分析的影子,公共卫生领域也不例外。2015 年国务院在《促进大数据发展行动纲要》中指出:坚持创新驱动发展,加快大数据部署,深化大数据应用,已成为稳增长、促改革、调结构、惠民生和推动政府治理能力现代化的内在需要和必然选择。新冠肺炎疫情发生后,我国相关专家意识到传统的卫生统计知识已经不能很好预防和解决突发性公共卫生事件的问题,基础的统计知识无法满足公共卫生中对大量数据分析的需求,让很多非常有价值的数据因为缺乏了解和分析而没有得到重视和利用。目前与数据分析有关的软件有很多,例如SAS,R,SPSS 等,但基于Python的数据分析近年来在公共卫生领域逐渐崭露头角并面临着前所未有的机遇和挑战。

1 Python 数据分析的特点

Python 是以C 语言为基础的一种程序语言,具有较强的面向对象的特点,消除了保护类型、抽象类和接口等面向对象的元素,Python 中没有分号、begin、end 等标记,仅保留31 个字符[1]。相对于R 和SAS 等语言而言,Python 语法更加简单,代码十分容易被读写,门槛更低。在处理大型数据的时候,繁杂的数据能被转化成可运算的数字形式,使最后的数据结果简单易懂,一目了然。Python 在数据分析和交互计算以及数据可视化等方面有着无与伦比的优势。最重要的是,Python 拥有numpy、matplotlib、scikit-learn、pandas、ipython 等一众优秀开源的第三方库,性价比远远高于收费昂贵的SAS。基于Python 的BeautifulSoup 库可以快速高效地爬取网站数据,pandas 工具能方便灵活地清洗分析数据,调用Python 的Matplotlib 工具包能便捷地把数据分析结果图形可视化,具有良好的跨平台交互特性[2]。尤其是pandas,在处理表格和异质型数据方面可以说有着独特的优势,已经成为各行业中重要的数据分析工具。

由于Python 所具有强大的接合性特点,因此它也被亲切地称为“胶水”语言。它可以与其他编程语言自然对接,使它处理起复杂的数据时更为强大,范围应用更加广泛[3]。因此仅Python数据分析一种技术就可以解决大部分的业务问题,这充分体现出Python 与各个业务之间的融合。如果仅仅只是统计工作,或者只是单独一人对数据进行分析,用R 或许会更加快捷。但如果需要各个领域一起合作,并且工作内容涉及统计以外,那么用Python 的效率远远高于R。此外,大量的数据意味着存在更多的缺失和异常值。Python 相对于其他语言在清洗噪声方面做得非常优秀,因为它有专门的函数和库对数据进行清洗,方便后续更深入地数据分析。医学工作者可以利用Python 中的fillna 函数补全缺失值,再使用pandas 库中DataFrame 的duplicated 方法查明重复的数据并删除,还可以用seaborn 绘制出数据的箱形图,从而鉴别出数据中差异较大的信息。公共卫生领域引入Python 数据分析并不是为了代替传统的卫生统计技术,相反,它是卫生统计的衍生和拓展。Python 数据分析的特点是可以将散落的样本整合成完整的大样本,因此流行病学中前瞻性研究的报告偏倚会明显减少,从而使得出的结果更准确。

2 Python 数据分析在公共卫生领域的应用

2.1 疾病的监测预防

大数据分析的核心就是预测。目前卫生保健工作者能确定的健康影响因素只有10%~15%,剩下85%~90%(包括健康行为、遗传、自然和社会经济环境因素等)尚未知晓[4]。一直以来,基本的卫生统计只能做到“就事论事”,对未来的疾病预防监控极为困难,但基于Python 的数据分析可以让高效率疾病预防的梦想逐渐实现。Davide Chicco 和Giuseppe Jurman 等两位科学家收集整理了299 名心力衰竭患者的医疗记录,这些患者数据来自2015 年4 月至12 月巴基斯坦费萨拉巴德心脏病研究所和费萨拉巴德联合医院。他们应用了多个Python 机器学习分类器来预测患者的生存率,并根据最重要的危险因素对特征进行排序。同时还利用传统的生物统计学测试进行了另一种特征排序分析,并将这些结果与机器学习算法提供的结果进行比较,最终发现根据血肌酐和射血分数这两项数据能够很好地预测心力衰竭患者的存活率。由此可见,Python 数据分析预测较为准确,并会逐渐普及到各种疾病监测预防中。

2.2 前瞻性队列研究

前瞻性队列研究实施时结局并未出现,需要预测和观察一段时间才能得到。因为前瞻性队列研究偏倚小,结果可信,所以受到众多医学工作人员的青睐,但费时费力费财等缺点大大影响了它的可实施性。时间序列分析是一种可以预测未来的方法,适用于依时间排列并预测后续结局的案例,其核心就是高效和预测,恰好弥补了前瞻性队列研究的短板,R 和SAS 都采用这种方法。但在使用时间序列分析方法这方面,Python 似乎更胜一筹。因为在时间序列分析中,Python 语言建模过程简单,图形直观,当处理的时间序列数据量较大时,Python 语言可利用其第三方库pandas 规避循环,极大地节省程序运行时间[5],而且Python 语言对时间类数据有着超乎想象的敏感,它可以使用dateuyil 包中的parser.parse 解析时间字符串或者利用pandas的to_datetime 处理时间清单。这些都是Python 对时间序列分析特有的优势。张佑健等[6]采用Python 数据分析中时间序列分析方法,对河南省人民医院MDRO 感染发生率进行建模,选择最优模型研究了2013—2017 年河南省人民医院多药耐药菌(MDRO)感染发生率的变化趋势,并预测2018 年医院MDRO感染发生率。最后得出MDRO 感染率具有一定的季节性和周期性,并且其变化规律可以使用时间序列分析“简单季节性”模型预测,为早期采取感染防控措施提供了科学依据。除此之外,张晓卉等[7]基于Python 语言的statsmodels 模块,以天津市2004 年1 月—2015 年12 月结核病月发病率数据作为训练集建立最优季节性差分自回归移动平均(SARIMA)模型,以2016 年1—12月数据对SARIMA 模型进行效果评价,并对2017 年1 月—2019 年12 月天津市结核病月发病率进行预测。最后结果显示,2004 年1 月—2015 年12 月天津市结核病月发病率总体呈下降趋势,2005—2008 年出现一个发病高峰,2009 年后大幅度下降,随后趋于平稳。2017 年1 月—2019 年12 月天津市结核病月发病率与往年相比平稳下降。

2.3 流行病学病因分析

能使人群发病概率增加的因素,就可认为是流行病学的病因,其为两大类,一类是充分病因,一类是组分病因。很多疾病都有着很多充分病因和组分病因。医学工作者想从中提取出有用的信息十分困难,此时就可利用Python 的爬虫和数据分析技术。可对医院病例数据库中的数据进行处理和分析,将所有发病因素纳入同一个列表之中,然后计算相同发病因素在列表中出现的次数,并探究它们之间的密切程度,了解哪一种病因是导致发病的最主要原因,为医学工作者提供参考。金勇[8]利用Python 语言中的Tensorflow 包,实现了乳腺钼靶图像加载并对位显示、乳腺图像放大显示、窗宽窗位调整、乳腺钙化灶自动检测等功能,更好地分析了乳腺癌产生的病因,解决了当下传统医学检测中存在检测结果假阳性多、检测速度慢等问题。

国外杂志Lancet 发表了一篇关于流行病学队列研究的数据分析论文,研究人员利用Python 数据分析中的深度学习算法,研究了从印度约20 个中心收集的包含313 318 次头部CT扫描的数据集及其临床报告,最后得出深度学习算法可以准确识别头部CT 扫描异常,并提醒医务人员对异常部分需要特别关注[9]。用这些算法自动进行头部CT 扫描的会诊过程也是可行的,可以提高放射科医生的诊断效率。

2.4 对突发性公共卫生事件的精准控制

在疫情数据采集方面,数据分析要远优于传统的医疗数据采集技术。它可以在Python 的各种数据分析包的帮助下,对获得的杂乱无章的数据进行数据聚合和分组操作,并利用pandas和seaborn 包绘出疫情传染分布图,更为准确地确定疫情的源头,并采取措施制约疫情传播的速度(如隔离感染者、封闭发源地等),从根本上缩小疫情传播范围。新型冠状病毒全球大流行中,数据分析异军突起,大量应用于对疫情的精准控制,发挥了重要的作用。2020 年1 月,国务院就疫情形势颁布《近期防控新型冠状病毒感染的肺炎工作方案》,其中指出要充分应用“大数据+ 网格化”等手段助力疫情防治工作;“大数据+ 网格化”主要是指将城市按社区、街道等划分为大小网格单元,实施网格片区化管理,利用大数据技术等按网格化片区进行信息收集和数据整合,建立网格化的数据库,并及时汇报给上级数据库[10]。正因为在突发公共卫生事件中加入了数据分析的干预,相关部门才能获得最及时的病例情报,第一时间掌控疫情走向。Python对突发公共卫生事件的精准控制体现在两个方面:第一,为一级预防减负。我国公民目前对公共卫生的了解并不透彻,甚至不能意识到突发性公共卫生事件的严重性。数据分析能利用Python 的爬虫技术及时统计各地异常患者数据,并预测异常患病是否会衍生为暴发性传染病,利用微信公众号或电视广播等通俗易懂的形式发布给该地区公民,从而提高公民对传染病的关注度,有效降低疫情暴发概率。第二,监测预警。全国各省防控机构根据此地区医疗水平和人口基数,提前制订适用于此地区的突发事件监测方案,然后收集数据,对监测数据进行多层索引和重塑,将整理好的异常数据及时上报,利用双向性队列研究分析探讨数据异常原因,制订高效经济的应对策略。

3 Python 数据分析所面临的挑战

Gartner 发布的2014 年新兴技术成熟度曲线显示,未来5~10 年大数据技术将会成熟应用于各个领域,公共卫生领域也不例外。然而应用越广泛,风险形势也就越严峻,目前,基于Python 的数据分析在公共卫生领域应用面临着如下挑战。

3.1 数据分析在我国并没有得到广泛普及和关注

我国数据分析的发展速度远不及发达国家。一方面,我国目前甚至没有一个完整系统的医学数据库;另一方面,传统的数据分析门槛过高,不利于学习掌握,而熟练掌握传统数据分析的高级专业人员又很少,更不用说基层的公共卫生工作人员。反观美国,早已建立NCDB、SEER、TCGA、Orphanet 等一系列医学数据库,这些数据库分类明确细致,数据多而广,成为美国公共卫生预防的权威来源。再者,如Kaplan Meier Plotter 数据库中所有的数据分析代码早已打包封装完成,可以直接登录使用,使用者只需单纯输入获得的数据,数据库便可以自动分析出数据的mRNA 表达谱芯片,基因表达和疾病预后的信息一目了然。这种专业而又简便的数据库正是我国目前所缺少的。

3.2 数据隐私保护问题

公共卫生领域的数据分析以公民日常健康状况为录入数据对象,必定会涉及人群的隐私信息,如疾病史、个人信息,甚至基因、蛋白数据等,一旦泄露,可能会对患者个体的日常生活造成不可预料的侵扰[11],因此开展此类录入是一项非常严谨的工作。数据分析工作者要坚守职业道德,力求可以在每一位调查的公民身上获得有科学价值的结果,并与被调查者签订保密协议,让被调查者了解数据录入的作用、目的以及可能的危险性,被调查者必须是自愿录入信息。另外,要尽最大可能让被调查者在此次数据分析中受益,如闫冠韫等运用互联网的信息交互技术和移动应用技术,通过探讨建立一体化信息系统、移动互联网、物联网、虚拟货币、人工智能5 种模式,满足糖尿病患者医疗服务的数据信息化、便捷化需求,有效预防和控制了糖尿病[12],还要尊重被调查者自身最基本的权益,尽可能不泄露被调查者的隐私。大数据意味着大责任、大伦理,任何单位或个人使用大规模健康大数据时均应严格申请审查并备案,在法律允许的范围内使用相关数据,并承担风险责任[13]。

3.3 数据分析人才缺乏

Python 数据分析技术在2014 年才开始在我国流行,我们对此领域的了解过于局限。中国人口众多、地域广阔、待解决的问题多样、复杂,急需进行问题的提炼和解决,培养人才队伍相当关键[14]。时至今日,熟知Python 数据分析的人才数目并不庞大,各大高校对于数据分析类人才培养的体系也不健全,同时精通Python 数据分析和公共卫生两门知识的人才更是少之又少。因为这些原因,我国预防医学数据分析的发展过于缓慢。卫生与教育主管部门应当深谋远虑、通力合作,共同培养数据分析的专业性人才。同时,医学教学中要充分利用大数据平台,优化教学资源,教学中尽可能多收集病案数据,强化数据挖掘方法的应用,切实提高专业人才的数据分析能力[15]。

4 展望

公共卫生数据分析具有广阔的发展空间,也是解决特定人群健康问题的重要手段之一。相比发达国家,我国在疾病诊断治疗领域的数据分析仍处于追赶阶段,但在公共卫生领域,从目前新冠肺炎疫情的防控实践来看,我国和发达国家处于同一起跑线。最终是否能将我国公共卫生领域的数据分析推动发展至世界先进水平,还需全社会多方努力。希望我们能抓住这次机会,使数据分析在疾病的监测预防、流行病学病因分析、前瞻性队列研究和对突发性公共卫生事件的精准控制等方面发挥出巨大作用。大力推广Python 数据分析,低投入高效率地推进数据分析在公共卫生的科研、教学、实践中的发展。

猜你喜欢

公共卫生疫情
广西医科大学公共卫生与预防医学一流学科建设成效
公共卫生管理在传染病预防工作中的作用分析
战疫情
哈医大公共卫生学院供暖系统整改方案
抗疫情 显担当
疫情中的我
疫情当前 警察不退
待疫情散去 春暖花开
疫情期在家带娃日常……
中国首个P4实验室:服务全球公共卫生安全