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