关于Pima数据集研究共分为:
《关于Pima数据集研究(上)--EDA篇》
《关于Pima数据集研究(中)--DC&FE篇》
《关于Pima数据集研究(下)--Model篇》
一、概述
该数据集最初来自美国国立糖尿病与消化与肾脏疾病研究所。数据集的目的是基于数据集中包含的某些诊断指标,诊断性的预测患者是否患有糖尿病。从较大的数据库中选择这些实例受到一些限制。特别是,这里的所有患者均为皮马印第安人血统至少21岁的女性。
二、内容
数据集包含多个医学预测变量和一个目标变量,即结果。预测变量包括患者怀孕次数,BMI,胰岛素水平,年龄等。
数据集获取链接:https://www.kaggle.com/uciml/pima-indians-diabetes-database
三、研究方法
由于本人是python系,本课题的研究方法与方案均是基于python进行扩展,研究工具包括Anaconda、panda、numpy、sklearn等第三方成熟开源框架。
四、探索性数据分析(EDA)
首先我们先来看一下数据大概长什么样子,这样在后续研究中能够更有针对性。
接下来针对数据集重的每一个变量(特征)进行研究探索。
让我们先来看一下数据中的整体统计概览。共有9个变量,768条样本,整体没有缺失数据(研究到这里应该怀疑数据被填补过),没有重复数据。数据类型其中8个数值类型,1个布尔类型。
Pregnancies(怀孕次数),我们可以注意到这个特征值中存在0值,共有111条样本,占比在14.5%,系统提醒我们需要重点关注一下。结合实际生活场景与课题背景我们知道,数据集重的女性怀孕次数是可能存在0的情况,且数据集的背景中并没有强调数据来源具有特殊性(例如均有怀孕史),所以系统给出的怀孕次数的统计警告指标我们可以忽略。从数据缺失和极限值来看均不存在。最小值是0次,最大值是17次,均值大约4次。
这里使用传统箱型图推断离群值,首先计算下限值:Q1-1.5IQR=1-1.5x5<0,结合实际场景知道,怀孕次数不会小于0,因此下限为0。上限值:Q3+1.5IQR=6+1.5x5=13.5,由于次数一般为正整数,因此这里取13(14亦可)。根据计算得出结果>13次的数据均需要进行处理。
从目标(是否患有糖尿病)与怀孕关系数据来看。未患病和已患病与怀孕次数出现明显分布偏差。在怀孕次数在5~10次之间的患病人数明显高于未患病。
Glucose(葡萄糖含量),从统计指标来看,缺失值、极限值均不存在。0值有5条样本,占比0.7%。结合实际场景来看,人体内的葡萄糖含量不可能为0(此处应该有人为填补情况),最大值为199。由于美国的记录标准与我们不同,因此需要进行转化。一般空腹的全血血糖正常的都是在3.9-6.1毫摩尔/升之间,转换后为70.2-109.8,由于我们的数据集又相对比较特殊,需要考虑到有孕妇,而孕妇的餐后血糖一般为8.5mmol/L,转换后也就是153。
使用传统箱型图推断离群值,首先计算下限值:Q1-1.5IQR=99-1.5*41.25=37.125。从下面统计图看出,小于37的数据只有0,5条样本,进行近似修正即可。
上限值:Q3+1.5IQR=140.25+1.5*41.25=202.125,根据统计最大值199来看,并未有超出上限的数据,此处从统计角度暂不进行处理。
从图看出,餐后未患病人群的葡萄糖含量主要约在50~160之间,且主要集中在100左右。而患病者则约在100~200之间,且主要集中在130和160左右。此处发现患病者的餐后葡萄糖含量明显高于未患病者的30%~60%。此特征具有相对较强的差异性。
BloodPressure(血压):缺失数据和无限数据均没有,但是存在了35条样本的0值,占4.6%,结合实际来看,正常生命体征的人不会出现0血压的情况。因此这些数据需要进行处理。
由于范围值没办法通过实际环境进行确认,因此通过传统箱型图推断离群值,首先计算下限值:Q1-1.5IQR=62-1.5*18=35,上限值Q3+1.5*IQR=80+1.5*18=107。此处特殊说明,血压的下限值没办法进行判断,但是根据实际数据来看,数据中出现最大值122是可能存在的。因此此处的上限值不进行处理,而是将=0的值进行处理为35。
从上图看出,是否患病与血压的整体分布关系较为近似,无较大差异。但从图中能够看出,大部分患病者的血压会略高于大部分未患病者的血压。
SkinThickness(皮下脂肪厚度,单位mm),其中缺失值和无限制均不存在,但0值有227条,占整体样本的29.6%(此处缺失样本量相对较高,需要进行特殊处理),根据实际场景来看,正常生命体征的人类皮下脂肪厚度不会为0,因此此处的0均为异常值,猜测应该是人工进行填补。其中最小值为0,最大值为99,目前来看最大值不需要进行异常处理。
根据上图来看,存在较多皮下脂肪含量为0的数据,由于占比相对较多,会拉偏数据分布,因此简单粗暴将为0的数据提出后重新进行研究,如下图所示。
将为0的数据剔除后我们再来分析一下数据分布。此处发现为患病的皮下脂肪厚度主要集中在20~30之间,而患病者皮下脂肪主要在30~40之间,存在微量差异。且未患病者的皮下脂肪厚度相对较为分散,方差较大。而患病者的较为集中,方差较小。
Insulin(餐后2小时血清胰岛素含量),其中缺失值和无限制均不存在,但0值有374条,占整体样本的48.7%(此处0占整体数据几乎一半,需要进行特殊处理),根据实际场景来看,正常生命体征的人类皮下脂肪厚度不会为0,因此此处的0均为异常值,猜测应该是人工进行填补。其中最小值为0,最大值为846,由于样本数据缺失占比较大,此处若使用箱型图进行离群值判断会存在样本偏差导致不够准确,因此最大值暂不进行异常处理。
根据上图分析发现,两者均存在大量胰岛素含量为0的情况,因此先简单粗暴将为0剔除后重新分析,如下图所示。
从剔除异常数据后的分布图来看,未患病者餐后2小时的胰岛素含量主要分布约在100左右,且整体分布在此范围内。而患病者的胰岛素含量明显上升,主要分布约在100~220之间,且次集中在400~600之间。
BMI,其中缺失值和无限制均不存在,0值有11条,占比为1.4%,初步判断为人工填补结果。最小值为0,最大值为67.1.由于人体个异性差异,BMI值上限无法判断,假设有一个200KG,170cm的人,则计算出的BMI为103,高于67.1,因此最大值在正常范围。
由于数据存在0值的情况,上图以通过与之前介绍方法进行剔除后绘制,在此不再追述。通过上图分析发现,为患病者大部分的BMI值约在26,范围约为25~35之间。而患病者的BMI值主要约在33,范围约为30~38之间。相对于为患病人群的整体分布约上升13%,且从数据分布来看,患病者的BMI值整体分布要高于未患病者。
DiabetesPedigreeFunction(糖尿病谱系功能统计图 DPF),其中缺失值、0值和无限制均不存在。
接下来进行离群值分析,首先计算下限值:Q1-1.5IQR=0.24375-1.5*0.3825=-0.33,和实际结合,该指标不可能<0,因此下限取0。上限值Q3+1.5*IQR=0.62625+1.5*0.3825=1.2。由于实际无法判断上限,但95%为1.13285,因此此处采用统计结果上限1.2为阈值。
从上图来看,是否患病与DPF之间的数据分布差异较大。未患病人群的DPF主要集中在0.1~0.6之间,而患病人群的DPF则主要分布在0.3~0.7之间,且大部分患者的DPF值要略高于未患病者。
Age(年龄),其中缺失值、0值和无限制均不存在。且最小值为21,最大值为81,均在正常范围内,因此此特征不进行处理。
从上图分析来看,数据中未患病人群主要分布在22~36岁之间,而患病者主要分布在28~45岁之间,且患病者主要集中在35岁左右,未患病者主要集中子啊25岁左右。初步判断,是否患病与年龄存在相关关系。
OutCome(目标),终于来到我们的目标数据类。768中的类别变量(0或1)268为1,其他为0。变量占比约2:1,后续建模前需要进行样本均衡处理。
五、多重共线性检验
下面的相关矩阵使用皮尔森的相关系数来说明变量之间的关系。从下表中可以观察到显著的相关性。我们默认计算出来的|R值|>0.7才存在多重共线性,但此数据集中不存在,因此判断为不存在多重共线性的变量。
六、EDA总结
经过EDA发现,数据中存在部分问题,在此进行统计总结,以便于后续研究,结果如下表:
七、后续
EDA我们差不多到这里,接下来我们根据EDA结果进行各个特征的数据清洗(DC),可以关注后续的《关于Pima数据集研究(中)--DC&FE篇》。