何 旭,錢夕元 ,阮 彤
華東理工大學(xué)理學(xué)院 上海 200237
無論在發(fā)達(dá)國家還是發(fā)展中國家,心血管疾病都是嚴(yán)重危害人類生命的常見疾病[1]。心血管疾病會(huì)和其他慢性病一同影響健康,因此,研究心血管疾病與各種慢性病之間的因果關(guān)系,將對(duì)疾病的防治有重大意義。但是,運(yùn)用傳統(tǒng)方法對(duì)于少則十幾種多達(dá)數(shù)十種變量一一檢驗(yàn)的計(jì)算量十分巨大,并且容易忽略條件獨(dú)立性,因此很難處理復(fù)雜變量的因果關(guān)系。
貝葉斯網(wǎng)絡(luò)是一種利用有向無環(huán)圖(directed acyclic graph,DAG)對(duì)變量全局概率分布進(jìn)行編碼的概率圖模型[2]:該方法將變量抽象成結(jié)點(diǎn),變量間的關(guān)系表現(xiàn)為結(jié)點(diǎn)間的?。辉跅l件獨(dú)立性和有向分隔基礎(chǔ)上,將變量的全局概率分布分解成子結(jié)點(diǎn)對(duì)應(yīng)變量在其父結(jié)點(diǎn)對(duì)應(yīng)變量集合條件下的局部概率分布的乘積。貝葉斯網(wǎng)絡(luò)學(xué)習(xí)可分為結(jié)構(gòu)學(xué)習(xí)與參數(shù)學(xué)習(xí)兩部分。結(jié)構(gòu)學(xué)習(xí)可以有效地構(gòu)建符合真實(shí)概率分布的DAG,參數(shù)學(xué)習(xí)利用得到的DAG計(jì)算局部的條件概率,具有結(jié)果直觀的優(yōu)點(diǎn)。故本研究應(yīng)用貝葉斯網(wǎng)絡(luò)研究了心血管疾病與其他慢性病之間的因果關(guān)系。
1.1研究對(duì)象收集上海中醫(yī)藥大學(xué)附屬曙光醫(yī)院2016年3月至2017年3月間2 752例心血管疾病患者的病歷數(shù)據(jù)(男1 382例,女1 370例),其中高血壓1 854(67.37%)例,糖尿病826(30.01%)例,腦梗死538(19.55%)例,冠心病1 089(39.57%)例,房顫844(30.67%)例,心律失常1 262(45.86%)例,肺部感染549(19.95%)例,慢性心功能不全1 320(47.97%)例,慢性支氣管炎472(17.15%)例,慢性腎功能不全219(7.96%)例,擴(kuò)張型心肌病67(2.43%)例,慢性阻塞性肺病64(2.33%)例,肥厚性心肌病9(0.33%)例。
1.2資料收集從病例中提取患者慢性病患病信息,同時(shí)將患者是否死亡和是否二次住院信息加入數(shù)據(jù)集。二次住院以患者有二次住院時(shí)間記錄為依據(jù)。對(duì)所有數(shù)據(jù)進(jìn)行因子化處理,即“是”和性別中的“男”用因子1表示,“否”和“女”用因子0表示。
1.3貝葉斯網(wǎng)絡(luò)學(xué)習(xí)選用R語言中的bnlearn包進(jìn)行貝葉斯網(wǎng)絡(luò)學(xué)習(xí),使用Rgraphviz包繪制貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)圖。
1.3.1 結(jié)構(gòu)學(xué)習(xí) 使用基于分?jǐn)?shù)-搜索的學(xué)習(xí)方法構(gòu)建貝葉斯網(wǎng)絡(luò)。基于分?jǐn)?shù)-搜索的方法以分?jǐn)?shù)函數(shù)得到的分?jǐn)?shù)衡量結(jié)構(gòu)的優(yōu)劣,利用優(yōu)化算法搜索最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)。分?jǐn)?shù)函數(shù)以極大似然(MLE)或最大后驗(yàn)(MAP)為規(guī)則構(gòu)建,有AIC、MDL、BIC、BDe等,本文使用BIC函數(shù)[3]:
其中X是觀察值的取值序列,G為構(gòu)造出的網(wǎng)絡(luò)結(jié)構(gòu),N是樣本量, |G|是G中參數(shù)的數(shù)量。BIC的前半部分為觀察值X對(duì)于結(jié)構(gòu)G的似然函數(shù),后半部分是對(duì)于網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜度的懲罰項(xiàng)。
優(yōu)化算法方面,傳統(tǒng)方法可以很好地與貝葉斯網(wǎng)絡(luò)相結(jié)合,如爬山算法、tabu算法、模擬退火等。本文使用爬山算法優(yōu)化(表1),同時(shí)為了增加模型的魯棒性,使用Bootstrap模型平均[4]方法(表2)。
表1 爬山算法
表2 Bootstrap模型平均
1.3.2 條件獨(dú)立性檢驗(yàn) 貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)中沒有直接相連的變量應(yīng)是條件獨(dú)立的,運(yùn)用bnlearn包中的arc.strength函數(shù)可以批量地對(duì)網(wǎng)絡(luò)結(jié)構(gòu)中的每條邊進(jìn)行條件獨(dú)立性檢驗(yàn)。假設(shè)有Xi→Xj這條有向邊,而{Xk}為Xj的父結(jié)點(diǎn)集,那么:
原假設(shè)H0:Xj⊥Xi|{Xk}
備擇假設(shè)H1:┐Xj⊥Xi|{Xk}
由于本文使用的數(shù)據(jù)為二項(xiàng)類型(0,1),故選用Pearsonχ2檢驗(yàn)。設(shè)i∈Xi,j∈Xj,k∈{Xk},則
1.4模型學(xué)習(xí)對(duì)于一些邏輯上錯(cuò)誤的結(jié)構(gòu)設(shè)置“黑名單”:首先,“死亡”結(jié)點(diǎn)不能是其他結(jié)點(diǎn)的父結(jié)點(diǎn)(因?yàn)樗劳霾豢赡苁嵌巫≡?、性別、患慢性病的原因);其次,“性別”結(jié)點(diǎn)不能是其他結(jié)點(diǎn)的子結(jié)點(diǎn)(因?yàn)樗劳?、二次住院或患慢性病不可能影響性別);然后,“二次住院”結(jié)點(diǎn)不能成為除了“死亡”之外其他結(jié)點(diǎn)的父結(jié)點(diǎn)(因?yàn)槎巫≡翰豢赡芤鹉撤N疾病或性別變化)。如果有準(zhǔn)確的專家知識(shí)指導(dǎo),可以將確定存在的關(guān)系加入“白名單”,確定不存在的關(guān)系加入“黑名單”。在程序中將這些關(guān)系轉(zhuǎn)化成關(guān)聯(lián)矩陣輸入。
繪制500次Bootstrap方法得到的所有弧的強(qiáng)度累計(jì)分布圖(圖1),依據(jù)弧強(qiáng)度大和分布密集選取閾值α。根據(jù)圖1,α取0.85。
圖1 Bootstrap模型平均方法弧強(qiáng)度累計(jì)分布圖
2.1結(jié)構(gòu)部分貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,其中用疾病名稱拼音首字母表示疾病變量名。慢性腎功能不全(mxsgnbq)和肥厚性心肌病(fhxxjb)為孤立結(jié)點(diǎn);性別(sex)對(duì)房顫(fc)有影響,而房顫(fc)對(duì)心率失常(xlsc)有影響;冠心病(gxb)同時(shí)影響到擴(kuò)張型心肌病(kzxxjb)、慢性阻塞性肺病(mxzsxfb)、腦梗死(ngs)和心律失常(xlsc);擴(kuò)張型心肌病(kzxxjb)影響慢性心功能不全(mxxgnbq)和高血壓(gxy),高血壓(gxy)繼而對(duì)糖尿病(tnb)、腦梗死(ngs)產(chǎn)生影響;腦梗死(ngs)對(duì)肺部感染(fbgr)有影響,而肺部感染(fbgr)對(duì)死亡(death)、二次入院(sechospital)和慢性支氣管炎(mxzqgy)產(chǎn)生影響。
我們可以從網(wǎng)絡(luò)結(jié)構(gòu)中注意到,肺部感染是死亡的直接原因,而冠心病和高血壓對(duì)腦梗死有直接影響,繼而對(duì)肺部感染產(chǎn)生了影響。結(jié)果提示,應(yīng)著重于冠心病、高血壓和腦梗死的預(yù)防、治療,以減少肺部感染,從而減少死亡。
圖2 疾病因果網(wǎng)絡(luò)圖
2.2參數(shù)部分通過參數(shù)學(xué)習(xí)得到條件概率分布(圖3),可以發(fā)現(xiàn)冠心病和高血壓會(huì)增加罹患腦梗死的概率,腦梗死的患者發(fā)生肺部感染的概率也更高,肺部感染患者死亡概率也較無肺部感染者高很多。冠心病、高血壓→腦梗死→肺部感染→死亡這一路徑的條件概率見表3。
圖3 條件概率分布圖
表3 冠心病、高血壓→腦梗死→肺部感染→死亡路徑的條件概率值
2.3條件獨(dú)立性檢驗(yàn)結(jié)果見表4。從表4可以發(fā)現(xiàn),所有邊的檢驗(yàn)值都遠(yuǎn)遠(yuǎn)小于0.05,說明貝葉斯網(wǎng)絡(luò)中相連的結(jié)點(diǎn)都是非條件獨(dú)立的。
貝葉斯網(wǎng)絡(luò)學(xué)習(xí)的優(yōu)點(diǎn)在于其考慮了當(dāng)變量數(shù)超過兩個(gè)時(shí),變量之間可能存在條件獨(dú)立性,若用傳統(tǒng)方法(諸如回歸等)或可能無法有效發(fā)掘所有因果關(guān)系,或可能存在指數(shù)級(jí)計(jì)算復(fù)雜度的問題。貝葉斯網(wǎng)絡(luò)利用結(jié)構(gòu)學(xué)習(xí)和參數(shù)學(xué)習(xí)的方法,可以有效構(gòu)建出直觀的因果關(guān)系網(wǎng)絡(luò)。進(jìn)一步,可以通過專家系統(tǒng)或文獻(xiàn)查詢,通過已有知識(shí)先將一些邊確定下來(并不一定需要定向),然后結(jié)合貝葉斯網(wǎng)絡(luò)學(xué)習(xí),將這些邊作為“白名單”輸入,這樣處理一是可以加快計(jì)算速度,二是可以防止貝葉斯網(wǎng)絡(luò)學(xué)習(xí)時(shí)結(jié)果丟失。
本研究使用貝葉斯網(wǎng)絡(luò),有效發(fā)掘出了多個(gè)心血管疾病與其他慢性病之間的因果關(guān)系,其中有些關(guān)系通過文獻(xiàn)可以得到驗(yàn)證。如文獻(xiàn)[5]指出女性罹患房顫的概率高于男性;本研究中性別指向房顫,女性罹患房顫的概率約為0.356 9,男性約為0.256 9。文獻(xiàn)[6]指出高血壓會(huì)引起糖尿病;本研究中高血壓指向糖尿病,患高血壓者罹患糖尿病的概率為0.352 2,未患者為0.192 7。本研究結(jié)果提示,主要影響心血管疾病患者死亡的路徑是冠心病、高血壓→腦梗死→肺部感染→死亡。其他疾病之間也存在一些因果關(guān)系,未經(jīng)專家系統(tǒng)認(rèn)可的因果關(guān)系(路徑)可為未來的研究方向提供指導(dǎo)。需要注意的是本研究提示的因果關(guān)系僅是從樣本數(shù)據(jù)學(xué)習(xí)得出,事實(shí)是否具有關(guān)聯(lián)性需要臨床驗(yàn)證;兩變量間的因果關(guān)系也并未確定是正向影響(促進(jìn))還是負(fù)向影響(抑制)。
由于本研究中使用的是觀察數(shù)據(jù),數(shù)據(jù)中會(huì)存在一定噪聲,對(duì)結(jié)果產(chǎn)生干擾。如果是在人為控制變量下進(jìn)行干擾實(shí)驗(yàn),我們還可以利用貝葉斯網(wǎng)絡(luò)檢測實(shí)驗(yàn)的有效性,這一點(diǎn)在生物學(xué)中已有應(yīng)用[7]。在醫(yī)學(xué)領(lǐng)域,一方面,可以將此方法廣泛應(yīng)用到臨床試驗(yàn)中。如文獻(xiàn)[8]通過貝葉斯網(wǎng)絡(luò)研究了中藥藥性、藥味與功效的關(guān)系?;蚴菍⒃囼?yàn)對(duì)象分為使用某種治療組和未使用組,對(duì)于兩個(gè)組的數(shù)據(jù)分別構(gòu)建貝葉斯網(wǎng)絡(luò),對(duì)比兩組的網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù),可以有效發(fā)掘該種治療的療效和作用過程;如文獻(xiàn)[9]利用貝葉斯網(wǎng)絡(luò)對(duì)心力衰竭病因和死亡之間的關(guān)系進(jìn)行了研究,文獻(xiàn)[10]利用貝葉斯網(wǎng)絡(luò)對(duì)藥物洗脫支架植入術(shù)后長期雙重抗血小板治療患者的死亡率進(jìn)行了meta分析。另一方面,由于貝葉斯網(wǎng)絡(luò)具有處理復(fù)雜數(shù)據(jù)的優(yōu)勢,并且沒有固定的輸入和輸出結(jié)點(diǎn),故可選擇任意結(jié)點(diǎn)(疾病)作為輸入,利用貝葉斯網(wǎng)絡(luò)的信度傳播算法預(yù)測其他疾病的發(fā)生概率,以此構(gòu)建智能醫(yī)療決策系統(tǒng),如文獻(xiàn)[11]。
值得指出的是,貝葉斯網(wǎng)絡(luò)也存在一些缺點(diǎn)。首先,有時(shí)刪去一個(gè)變量或者加入一個(gè)新變量,貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)會(huì)出現(xiàn)較大變化;其次,貝葉斯網(wǎng)絡(luò)要求網(wǎng)絡(luò)結(jié)構(gòu)必須是無環(huán)的,這可能會(huì)丟失一些疾病之間存在的“反饋”現(xiàn)象,即疾病之間的影響形成了一個(gè)環(huán),貝葉斯網(wǎng)絡(luò)會(huì)將環(huán)中相對(duì)弱的一邊刪除,但理論上應(yīng)該保留,這一點(diǎn)可以通過動(dòng)態(tài)貝葉斯網(wǎng)絡(luò)解決[12]。