對急性肝功能衰竭資料進行預測

背景描述

肝硬化是指疤痕組織替代健康的肝組織。這會阻止肝臟正常工作。肝硬化是長期的(慢性肝病或急性肝衰竭)。在嚴重的情況下,肝臟受損嚴重,以至於停止工作。這稱為肝衰竭。

根據病理組織學特徵和病情發展速度,肝衰竭被分為四類:急性肝衰竭(ALF)、亞急性肝衰竭(SALF)、慢加急性(亞急性)肝衰竭(ACLF)和慢性肝衰竭(CLF)。

目前在我國,引起肝衰竭的主要病因仍然是肝炎病毒(主要是乙型肝炎病毒,約佔80-85%),其次是藥物或肝毒性物質(如酒精、化學制劑等);而在歐美國家,藥物是引起急性、亞急性肝衰竭的主要原因,酒精則常導致慢性肝衰竭。另外妊娠急性脂肪肝、自身免疫性肝病、寄生蟲感染等也可導致肝衰竭的發生。

資料說明

資料來自Kesci。

自1990年以來,JPAC健康診斷和控制中心對印度成年人進行了全國範圍的調查。該中心利用訓練有素的人員,透過直接訪談、檢查和血液樣本收集了各種人口和健康資訊。資料集包括來自 2008-2009 年和 2014-2015 年調查中 8785 名 20 歲或以上成年人的選定資訊。

資料理解

理解每個欄位的含義,透過基於業務的觀察,對欄位進行分類,好處是大致能判定該欄位與最終做預測欄位存在什麼樣的關係。至於相關性的強弱,則需要進一步的計算。

專案目的

找到相關性比較大的變數,對急性肝衰竭ALF進行預測。

評價標準

雖然專案要求中並未給出具體評價標準。但ALF作為一個二分類變數,適合使用precisio_recall_curve和ROC曲線作為評價標準。且ROC曲線不受樣本不均衡的影響。

一、資料的預處理

資料缺失預覽

匯入資料後發現,眾多欄位存在缺失值。同樣都是疾病診斷結果指標的肝炎、慢性疲勞、高血壓、等缺失比較多。一般認為這些指標與ALF相關性值會比較大。不能一律刪除,不能不處理,也不能一概填充平均值或中位數。

幾個近似的,如高血壓、最高血壓、最低血壓;體重、升高、體重指數等存在差異比較大的缺失情況。比價必須結合實際情況對欄位進行特定處理。

首先必須刪除對本專案目的沒有太多作用的欄位。個人認為素質指標下的所有對本專案目的沒有太大作用。

缺失值的填充

1。填充經過線性迴歸後得出的值。 針對部分欄位的值之間存在著某種較強相關性。例如,體重和腰圍都有,但是沒有身高。如果用平均值或者中位數填入,可能不具有現實意義,和真實值相差太多。透過沒有缺失值的個案計算出方程,預測缺失值。

2,填充平均值或中位數。 例如體重、身高、腰圍中兩個及以上缺失,填充相同年齡相同性別的平均值。

3,透過二分類。 最低血壓、最高血壓可根據是否為高血壓選取高血壓段或正常血壓下的平均值,是否為高血壓則透過最高血壓和最低血壓有有無超出閾值進行分類得出。

血脂異常和膽固醇的缺失值,由於個案數量不多,約1%,直接刪除。

肝炎和家族肝炎、慢性疲勞缺失的可刪除。

沒有缺失值 且 捨去素質指標 的資料

匯入spss建立線性迴歸。

以體重、身高和腰圍為例。一般認為這三種存在著比較大的線性關係。

導致腰圍變化的原因中,體重和身高起到了82。5%的作用。體重和身高的變化導致腰圍的變化顯著性明顯,p<0。001;腰圍和體重正相關,和身高負相關。Durbin-watson值為1。983,變數之間互相獨立。VIF為1。264,遠小於5,多重共線性很小。殘差基本符合正態分佈。迴歸方程可建立:

腰圍=102。656+0。787*體重-0。407*身高

同理:

身高=174。4+0。663*體重-0。614*腰圍

體重= -118。947+0。582*身高+1。041*腰圍

填充身高、體重、腰圍、最高最低血壓、高血壓缺失值 篩選出最終用於分析的資料捨去素質指標項集部分生化功能指標 且 填充完缺失值 並 刪除肝炎、慢性疲勞缺失值的資料 二、資料探索分析

計算所有特徵與目標值ALF的相關係數。初步瞭解那些字對最終肝衰竭起到比較大的影響作用。

切分資料集,把ALF含有缺失值的劃分到最終預測集data_ALF_test。ALF含有缺失值的劃出15%做測試集。

由於ALF變數值為0或1,適用邏輯迴歸分析或KNN分析。

在不確定哪些特徵較為關鍵,設多個閾值,分別是0。01,0。05,0。06,0。1,0。15,0。2;

訓練模型 特徵選擇

雖然已經手動對特徵值進行了篩選,去除了一些素質指標。但保留的特徵,依然不是每個都和目標值有強相關。例如有些特徵值本身的方差很小,對其引入之後對結果影響不大。

使用邏輯迴歸,尋找最合適的閾值

使用邏輯迴歸分析,從以上值來看,閾值在0。15時,特徵選取 年齡、最高血壓、PVD、高血壓、糖尿病、肝炎、慢性疲勞 時,模型評分最高。

使用KNN分析,尋找最合適的閾值和K值

在相同的閾值下, 對K值進行修改,選取臨近1-30個目標,發現在閾值為0。05時,K值設定為11時,能達到最高的評分。錯誤率最低。

經過上一步的模型訓練,找到了最優的引數,接下去就是進行模型評估了。

模型評估KNN表現閾值選擇0。05,K值選擇11 閾值選擇0。05,K值選擇15

基於對於預測的目的的理解,醫療工作者更希望的是能在有限的診斷資料條件下,判定患者患病的可能性。也就是寧可錯殺,不能有漏網之魚。在更接近患病的可能的時候,對患者說明患病,讓其做更詳細的檢查為上上之選。

也就是模型精確度更高,召回率也更高。對比了下同樣閾值選擇0。05時,K值選擇15,精確度、召回率更高,模型也更穩健。

邏輯迴歸表現閾值選擇0。05

邏輯迴歸f1評分、精確率和召回率都不及KNN分析。

三、預測ALF值KNN分析更適合做本專案的預測。

最後將ALF缺失的data_ALF_test最終測試集標準化,然後篩選閾值為0。05時候的特徵。K值調為15。得出結果。

四、專案評價

ROC曲線

雖然我們已經知道了閾值大於0。05時,22個特徵會對ALF的結果產生影響。但是我們並不知道每個特徵作為影響因子,ALF變數對它們的敏感度如何。

原已告知的ALF值的 ROC曲線

從圖中我們可以看出,ALF對年齡、高血壓、最高血壓、肝炎、糖尿病、腰圍、PVD、飲酒、慢性疲勞敏感度較高,且這些診斷變數的診斷正確性在50%以上(或稱敏感度),並且p<0。05,具有統計性意義。

預測ALF結果的ROC曲線

預測ALF結果的結果變數對診斷變數的敏感性排名和和之前的相似,且本曲線中PVD更高,只是在診斷變數診斷結果的正確性上大了點。

總結:

在現有的資料中。人的年齡、高血壓、最高血壓、肝炎、糖尿病、腰圍、PVD、飲酒、慢性疲勞對ALF的最終確診起到了關鍵性的影響。每單獨項都有50%以上的影響力針對ALF。ALF對年齡敏感性最高,肝炎是第二大影響因子,高血壓和糖尿病影響力也相對較高。當年齡高於70。5歲,腰圍大於89,同時是高血壓、糖尿病、肝炎、PVD患者,平時愛喝酒,會大大增加患急性肝衰竭的可能性。

綜上所述,為了避免ALF的發生,避免肝炎病毒的侵襲,養成良好的生活習慣,少喝酒、避免慢性疲勞可減少ALF的發病機率。