对急性肝功能衰竭数据进行预测
背景描述
肝硬化是指疤痕组织替代健康的肝组织。这会阻止肝脏正常工作。肝硬化是长期的(慢性肝病或急性肝衰竭)。在严重的情况下,肝脏受损严重,以至于停止工作。这称为肝衰竭。
根据病理组织学特征和病情发展速度,肝衰竭被分为四类:急性肝衰竭(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的发病几率。