沈夢碧,程祉元,肖易飛,高小 ,杜慧江
(上海健康醫(yī)學院醫(yī)療器械學院,上海 201318)
信息化數(shù)據(jù)時代已經(jīng)到來,各行各業(yè)都充斥著數(shù)據(jù)分析的影子,公共衛(wèi)生領(lǐng)域也不例外。2015 年國務(wù)院在《促進大數(shù)據(jù)發(fā)展行動綱要》中指出:堅持創(chuàng)新驅(qū)動發(fā)展,加快大數(shù)據(jù)部署,深化大數(shù)據(jù)應(yīng)用,已成為穩(wěn)增長、促改革、調(diào)結(jié)構(gòu)、惠民生和推動政府治理能力現(xiàn)代化的內(nèi)在需要和必然選擇。新冠肺炎疫情發(fā)生后,我國相關(guān)專家意識到傳統(tǒng)的衛(wèi)生統(tǒng)計知識已經(jīng)不能很好預(yù)防和解決突發(fā)性公共衛(wèi)生事件的問題,基礎(chǔ)的統(tǒng)計知識無法滿足公共衛(wèi)生中對大量數(shù)據(jù)分析的需求,讓很多非常有價值的數(shù)據(jù)因為缺乏了解和分析而沒有得到重視和利用。目前與數(shù)據(jù)分析有關(guān)的軟件有很多,例如SAS,R,SPSS 等,但基于Python的數(shù)據(jù)分析近年來在公共衛(wèi)生領(lǐng)域逐漸嶄露頭角并面臨著前所未有的機遇和挑戰(zhàn)。
Python 是以C 語言為基礎(chǔ)的一種程序語言,具有較強的面向?qū)ο蟮奶攸c,消除了保護類型、抽象類和接口等面向?qū)ο蟮脑?,Python 中沒有分號、begin、end 等標記,僅保留31 個字符[1]。相對于R 和SAS 等語言而言,Python 語法更加簡單,代碼十分容易被讀寫,門檻更低。在處理大型數(shù)據(jù)的時候,繁雜的數(shù)據(jù)能被轉(zhuǎn)化成可運算的數(shù)字形式,使最后的數(shù)據(jù)結(jié)果簡單易懂,一目了然。Python 在數(shù)據(jù)分析和交互計算以及數(shù)據(jù)可視化等方面有著無與倫比的優(yōu)勢。最重要的是,Python 擁有numpy、matplotlib、scikit-learn、pandas、ipython 等一眾優(yōu)秀開源的第三方庫,性價比遠遠高于收費昂貴的SAS?;赑ython 的BeautifulSoup 庫可以快速高效地爬取網(wǎng)站數(shù)據(jù),pandas 工具能方便靈活地清洗分析數(shù)據(jù),調(diào)用Python 的Matplotlib 工具包能便捷地把數(shù)據(jù)分析結(jié)果圖形可視化,具有良好的跨平臺交互特性[2]。尤其是pandas,在處理表格和異質(zhì)型數(shù)據(jù)方面可以說有著獨特的優(yōu)勢,已經(jīng)成為各行業(yè)中重要的數(shù)據(jù)分析工具。
由于Python 所具有強大的接合性特點,因此它也被親切地稱為“膠水”語言。它可以與其他編程語言自然對接,使它處理起復雜的數(shù)據(jù)時更為強大,范圍應(yīng)用更加廣泛[3]。因此僅Python數(shù)據(jù)分析一種技術(shù)就可以解決大部分的業(yè)務(wù)問題,這充分體現(xiàn)出Python 與各個業(yè)務(wù)之間的融合。如果僅僅只是統(tǒng)計工作,或者只是單獨一人對數(shù)據(jù)進行分析,用R 或許會更加快捷。但如果需要各個領(lǐng)域一起合作,并且工作內(nèi)容涉及統(tǒng)計以外,那么用Python 的效率遠遠高于R。此外,大量的數(shù)據(jù)意味著存在更多的缺失和異常值。Python 相對于其他語言在清洗噪聲方面做得非常優(yōu)秀,因為它有專門的函數(shù)和庫對數(shù)據(jù)進行清洗,方便后續(xù)更深入地數(shù)據(jù)分析。醫(yī)學工作者可以利用Python 中的fillna 函數(shù)補全缺失值,再使用pandas 庫中DataFrame 的duplicated 方法查明重復的數(shù)據(jù)并刪除,還可以用seaborn 繪制出數(shù)據(jù)的箱形圖,從而鑒別出數(shù)據(jù)中差異較大的信息。公共衛(wèi)生領(lǐng)域引入Python 數(shù)據(jù)分析并不是為了代替?zhèn)鹘y(tǒng)的衛(wèi)生統(tǒng)計技術(shù),相反,它是衛(wèi)生統(tǒng)計的衍生和拓展。Python 數(shù)據(jù)分析的特點是可以將散落的樣本整合成完整的大樣本,因此流行病學中前瞻性研究的報告偏倚會明顯減少,從而使得出的結(jié)果更準確。
大數(shù)據(jù)分析的核心就是預(yù)測。目前衛(wèi)生保健工作者能確定的健康影響因素只有10%~15%,剩下85%~90%(包括健康行為、遺傳、自然和社會經(jīng)濟環(huán)境因素等)尚未知曉[4]。一直以來,基本的衛(wèi)生統(tǒng)計只能做到“就事論事”,對未來的疾病預(yù)防監(jiān)控極為困難,但基于Python 的數(shù)據(jù)分析可以讓高效率疾病預(yù)防的夢想逐漸實現(xiàn)。Davide Chicco 和Giuseppe Jurman 等兩位科學家收集整理了299 名心力衰竭患者的醫(yī)療記錄,這些患者數(shù)據(jù)來自2015 年4 月至12 月巴基斯坦費薩拉巴德心臟病研究所和費薩拉巴德聯(lián)合醫(yī)院。他們應(yīng)用了多個Python 機器學習分類器來預(yù)測患者的生存率,并根據(jù)最重要的危險因素對特征進行排序。同時還利用傳統(tǒng)的生物統(tǒng)計學測試進行了另一種特征排序分析,并將這些結(jié)果與機器學習算法提供的結(jié)果進行比較,最終發(fā)現(xiàn)根據(jù)血肌酐和射血分數(shù)這兩項數(shù)據(jù)能夠很好地預(yù)測心力衰竭患者的存活率。由此可見,Python 數(shù)據(jù)分析預(yù)測較為準確,并會逐漸普及到各種疾病監(jiān)測預(yù)防中。
前瞻性隊列研究實施時結(jié)局并未出現(xiàn),需要預(yù)測和觀察一段時間才能得到。因為前瞻性隊列研究偏倚小,結(jié)果可信,所以受到眾多醫(yī)學工作人員的青睞,但費時費力費財?shù)热秉c大大影響了它的可實施性。時間序列分析是一種可以預(yù)測未來的方法,適用于依時間排列并預(yù)測后續(xù)結(jié)局的案例,其核心就是高效和預(yù)測,恰好彌補了前瞻性隊列研究的短板,R 和SAS 都采用這種方法。但在使用時間序列分析方法這方面,Python 似乎更勝一籌。因為在時間序列分析中,Python 語言建模過程簡單,圖形直觀,當處理的時間序列數(shù)據(jù)量較大時,Python 語言可利用其第三方庫pandas 規(guī)避循環(huán),極大地節(jié)省程序運行時間[5],而且Python 語言對時間類數(shù)據(jù)有著超乎想象的敏感,它可以使用dateuyil 包中的parser.parse 解析時間字符串或者利用pandas的to_datetime 處理時間清單。這些都是Python 對時間序列分析特有的優(yōu)勢。張佑健等[6]采用Python 數(shù)據(jù)分析中時間序列分析方法,對河南省人民醫(yī)院MDRO 感染發(fā)生率進行建模,選擇最優(yōu)模型研究了2013—2017 年河南省人民醫(yī)院多藥耐藥菌(MDRO)感染發(fā)生率的變化趨勢,并預(yù)測2018 年醫(yī)院MDRO感染發(fā)生率。最后得出MDRO 感染率具有一定的季節(jié)性和周期性,并且其變化規(guī)律可以使用時間序列分析“簡單季節(jié)性”模型預(yù)測,為早期采取感染防控措施提供了科學依據(jù)。除此之外,張曉卉等[7]基于Python 語言的statsmodels 模塊,以天津市2004 年1 月—2015 年12 月結(jié)核病月發(fā)病率數(shù)據(jù)作為訓練集建立最優(yōu)季節(jié)性差分自回歸移動平均(SARIMA)模型,以2016 年1—12月數(shù)據(jù)對SARIMA 模型進行效果評價,并對2017 年1 月—2019 年12 月天津市結(jié)核病月發(fā)病率進行預(yù)測。最后結(jié)果顯示,2004 年1 月—2015 年12 月天津市結(jié)核病月發(fā)病率總體呈下降趨勢,2005—2008 年出現(xiàn)一個發(fā)病高峰,2009 年后大幅度下降,隨后趨于平穩(wěn)。2017 年1 月—2019 年12 月天津市結(jié)核病月發(fā)病率與往年相比平穩(wěn)下降。
能使人群發(fā)病概率增加的因素,就可認為是流行病學的病因,其為兩大類,一類是充分病因,一類是組分病因。很多疾病都有著很多充分病因和組分病因。醫(yī)學工作者想從中提取出有用的信息十分困難,此時就可利用Python 的爬蟲和數(shù)據(jù)分析技術(shù)。可對醫(yī)院病例數(shù)據(jù)庫中的數(shù)據(jù)進行處理和分析,將所有發(fā)病因素納入同一個列表之中,然后計算相同發(fā)病因素在列表中出現(xiàn)的次數(shù),并探究它們之間的密切程度,了解哪一種病因是導致發(fā)病的最主要原因,為醫(yī)學工作者提供參考。金勇[8]利用Python 語言中的Tensorflow 包,實現(xiàn)了乳腺鉬靶圖像加載并對位顯示、乳腺圖像放大顯示、窗寬窗位調(diào)整、乳腺鈣化灶自動檢測等功能,更好地分析了乳腺癌產(chǎn)生的病因,解決了當下傳統(tǒng)醫(yī)學檢測中存在檢測結(jié)果假陽性多、檢測速度慢等問題。
國外雜志Lancet 發(fā)表了一篇關(guān)于流行病學隊列研究的數(shù)據(jù)分析論文,研究人員利用Python 數(shù)據(jù)分析中的深度學習算法,研究了從印度約20 個中心收集的包含313 318 次頭部CT掃描的數(shù)據(jù)集及其臨床報告,最后得出深度學習算法可以準確識別頭部CT 掃描異常,并提醒醫(yī)務(wù)人員對異常部分需要特別關(guān)注[9]。用這些算法自動進行頭部CT 掃描的會診過程也是可行的,可以提高放射科醫(yī)生的診斷效率。
在疫情數(shù)據(jù)采集方面,數(shù)據(jù)分析要遠優(yōu)于傳統(tǒng)的醫(yī)療數(shù)據(jù)采集技術(shù)。它可以在Python 的各種數(shù)據(jù)分析包的幫助下,對獲得的雜亂無章的數(shù)據(jù)進行數(shù)據(jù)聚合和分組操作,并利用pandas和seaborn 包繪出疫情傳染分布圖,更為準確地確定疫情的源頭,并采取措施制約疫情傳播的速度(如隔離感染者、封閉發(fā)源地等),從根本上縮小疫情傳播范圍。新型冠狀病毒全球大流行中,數(shù)據(jù)分析異軍突起,大量應(yīng)用于對疫情的精準控制,發(fā)揮了重要的作用。2020 年1 月,國務(wù)院就疫情形勢頒布《近期防控新型冠狀病毒感染的肺炎工作方案》,其中指出要充分應(yīng)用“大數(shù)據(jù)+ 網(wǎng)格化”等手段助力疫情防治工作;“大數(shù)據(jù)+ 網(wǎng)格化”主要是指將城市按社區(qū)、街道等劃分為大小網(wǎng)格單元,實施網(wǎng)格片區(qū)化管理,利用大數(shù)據(jù)技術(shù)等按網(wǎng)格化片區(qū)進行信息收集和數(shù)據(jù)整合,建立網(wǎng)格化的數(shù)據(jù)庫,并及時匯報給上級數(shù)據(jù)庫[10]。正因為在突發(fā)公共衛(wèi)生事件中加入了數(shù)據(jù)分析的干預(yù),相關(guān)部門才能獲得最及時的病例情報,第一時間掌控疫情走向。Python對突發(fā)公共衛(wèi)生事件的精準控制體現(xiàn)在兩個方面:第一,為一級預(yù)防減負。我國公民目前對公共衛(wèi)生的了解并不透徹,甚至不能意識到突發(fā)性公共衛(wèi)生事件的嚴重性。數(shù)據(jù)分析能利用Python 的爬蟲技術(shù)及時統(tǒng)計各地異?;颊邤?shù)據(jù),并預(yù)測異?;疾∈欠駮苌鸀楸┌l(fā)性傳染病,利用微信公眾號或電視廣播等通俗易懂的形式發(fā)布給該地區(qū)公民,從而提高公民對傳染病的關(guān)注度,有效降低疫情暴發(fā)概率。第二,監(jiān)測預(yù)警。全國各省防控機構(gòu)根據(jù)此地區(qū)醫(yī)療水平和人口基數(shù),提前制訂適用于此地區(qū)的突發(fā)事件監(jiān)測方案,然后收集數(shù)據(jù),對監(jiān)測數(shù)據(jù)進行多層索引和重塑,將整理好的異常數(shù)據(jù)及時上報,利用雙向性隊列研究分析探討數(shù)據(jù)異常原因,制訂高效經(jīng)濟的應(yīng)對策略。
Gartner 發(fā)布的2014 年新興技術(shù)成熟度曲線顯示,未來5~10 年大數(shù)據(jù)技術(shù)將會成熟應(yīng)用于各個領(lǐng)域,公共衛(wèi)生領(lǐng)域也不例外。然而應(yīng)用越廣泛,風險形勢也就越嚴峻,目前,基于Python 的數(shù)據(jù)分析在公共衛(wèi)生領(lǐng)域應(yīng)用面臨著如下挑戰(zhàn)。
我國數(shù)據(jù)分析的發(fā)展速度遠不及發(fā)達國家。一方面,我國目前甚至沒有一個完整系統(tǒng)的醫(yī)學數(shù)據(jù)庫;另一方面,傳統(tǒng)的數(shù)據(jù)分析門檻過高,不利于學習掌握,而熟練掌握傳統(tǒng)數(shù)據(jù)分析的高級專業(yè)人員又很少,更不用說基層的公共衛(wèi)生工作人員。反觀美國,早已建立NCDB、SEER、TCGA、Orphanet 等一系列醫(yī)學數(shù)據(jù)庫,這些數(shù)據(jù)庫分類明確細致,數(shù)據(jù)多而廣,成為美國公共衛(wèi)生預(yù)防的權(quán)威來源。再者,如Kaplan Meier Plotter 數(shù)據(jù)庫中所有的數(shù)據(jù)分析代碼早已打包封裝完成,可以直接登錄使用,使用者只需單純輸入獲得的數(shù)據(jù),數(shù)據(jù)庫便可以自動分析出數(shù)據(jù)的mRNA 表達譜芯片,基因表達和疾病預(yù)后的信息一目了然。這種專業(yè)而又簡便的數(shù)據(jù)庫正是我國目前所缺少的。
公共衛(wèi)生領(lǐng)域的數(shù)據(jù)分析以公民日常健康狀況為錄入數(shù)據(jù)對象,必定會涉及人群的隱私信息,如疾病史、個人信息,甚至基因、蛋白數(shù)據(jù)等,一旦泄露,可能會對患者個體的日常生活造成不可預(yù)料的侵擾[11],因此開展此類錄入是一項非常嚴謹?shù)墓ぷ?。?shù)據(jù)分析工作者要堅守職業(yè)道德,力求可以在每一位調(diào)查的公民身上獲得有科學價值的結(jié)果,并與被調(diào)查者簽訂保密協(xié)議,讓被調(diào)查者了解數(shù)據(jù)錄入的作用、目的以及可能的危險性,被調(diào)查者必須是自愿錄入信息。另外,要盡最大可能讓被調(diào)查者在此次數(shù)據(jù)分析中受益,如閆冠韞等運用互聯(lián)網(wǎng)的信息交互技術(shù)和移動應(yīng)用技術(shù),通過探討建立一體化信息系統(tǒng)、移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、虛擬貨幣、人工智能5 種模式,滿足糖尿病患者醫(yī)療服務(wù)的數(shù)據(jù)信息化、便捷化需求,有效預(yù)防和控制了糖尿病[12],還要尊重被調(diào)查者自身最基本的權(quán)益,盡可能不泄露被調(diào)查者的隱私。大數(shù)據(jù)意味著大責任、大倫理,任何單位或個人使用大規(guī)模健康大數(shù)據(jù)時均應(yīng)嚴格申請審查并備案,在法律允許的范圍內(nèi)使用相關(guān)數(shù)據(jù),并承擔風險責任[13]。
Python 數(shù)據(jù)分析技術(shù)在2014 年才開始在我國流行,我們對此領(lǐng)域的了解過于局限。中國人口眾多、地域廣闊、待解決的問題多樣、復雜,急需進行問題的提煉和解決,培養(yǎng)人才隊伍相當關(guān)鍵[14]。時至今日,熟知Python 數(shù)據(jù)分析的人才數(shù)目并不龐大,各大高校對于數(shù)據(jù)分析類人才培養(yǎng)的體系也不健全,同時精通Python 數(shù)據(jù)分析和公共衛(wèi)生兩門知識的人才更是少之又少。因為這些原因,我國預(yù)防醫(yī)學數(shù)據(jù)分析的發(fā)展過于緩慢。衛(wèi)生與教育主管部門應(yīng)當深謀遠慮、通力合作,共同培養(yǎng)數(shù)據(jù)分析的專業(yè)性人才。同時,醫(yī)學教學中要充分利用大數(shù)據(jù)平臺,優(yōu)化教學資源,教學中盡可能多收集病案數(shù)據(jù),強化數(shù)據(jù)挖掘方法的應(yīng)用,切實提高專業(yè)人才的數(shù)據(jù)分析能力[15]。
公共衛(wèi)生數(shù)據(jù)分析具有廣闊的發(fā)展空間,也是解決特定人群健康問題的重要手段之一。相比發(fā)達國家,我國在疾病診斷治療領(lǐng)域的數(shù)據(jù)分析仍處于追趕階段,但在公共衛(wèi)生領(lǐng)域,從目前新冠肺炎疫情的防控實踐來看,我國和發(fā)達國家處于同一起跑線。最終是否能將我國公共衛(wèi)生領(lǐng)域的數(shù)據(jù)分析推動發(fā)展至世界先進水平,還需全社會多方努力。希望我們能抓住這次機會,使數(shù)據(jù)分析在疾病的監(jiān)測預(yù)防、流行病學病因分析、前瞻性隊列研究和對突發(fā)性公共衛(wèi)生事件的精準控制等方面發(fā)揮出巨大作用。大力推廣Python 數(shù)據(jù)分析,低投入高效率地推進數(shù)據(jù)分析在公共衛(wèi)生的科研、教學、實踐中的發(fā)展。