最近有很多小密圈的朋友问我,到底数据分析是怎么做才能做到全面和深入呢?恰好,昨天也看到一个做电商的小朋友,在做电商分析的时候,所操作的基本上就是对各个数据指标建立分析图就完成了分析,然而这是极其不全面的,甚至是错误的分析。因此这篇文章就是简单以一个案例来说明数据分析和挖掘的基本流量和思路。
有大批患有同种疾病的不同病人,服用五种药物中的一种(Drug,分为drugA,drugB,drugC,drugX,drugY)之后取得了同样的效果。本案所用的数据,是随机挑选的部分病人服用药物前的基础临床检查数据,包括:
具体数据如下图:
现在需要利用这些数据挖掘发现以往药物处方适用的规律,给出不同临床特征病人更适合服用哪种药物的建议,为未来医生开具处方提供参考。
首先,来看看数据的基本特征,具体如下图。我们可以看到,这份数据有200个样本,其中Age,Na,K为数值型变量,下表还包括其对应的最小值、最大值、均值、标准差、偏态系数等基本的描述统计量,以及各个观测变量对应的直方图和柱形图。
上图数据显示,病人年龄最大值和最小值的差距比较大。同时,可以看到,病人age、BP、Cholesterol水平的分布比较均匀,总体差异并不大,但服用药物drugY的病人明显多于服用其他药物的人数。
接下来,观察服用不同药物的病人唾液中钠元素和钾元素的含量,这里使用的是分布散点图,指定Na为x轴,K为y轴,服用不同Durg的病人数据为颜色分类,具体如下图:
从上图可以看出,服用drugY的病人,其唾液中的K含量明显低于其他类病人,但Na含量有的比较低,有的比较高。可见,单纯K含量较低的病人选用drugY的效果比较理想。
接下来,观测服用不同药物病人唾液中的钠元素和钾元素浓度比值。为更准确地评价药物状况,单纯观测K含量是不全面的,应该观测Na与K浓度比值指标,进而准确反映病人肾上腺皮质的功能状态,具体如下图直方图分布所示:
上图显示,对于Na/K比值处在高水平的病人,服用drugY的药物是最为理想的选择。
接下来,在观测不同血压病人的药物选择,这里通过网状图来显示,具体如下图所示:
网状图通过线条的粗细反映病人的BP与选用Drug的情况,线条越粗表明效果越明显。可以看到,drugY与BP的三条连线,线条的粗细程度差别不大,表明drugY对病人的血压没有特殊限定,更具有普遍服用性,无论血压如何,都可以服用drugY;在不考虑选择drugY时,血压高的病人可以服用drugA或drugB,血压低的病人并应该在drugX和drugC中选择。
接下来需要全面分析决定药物选择的其他因素。前面的分析似乎给出了选择drug的依据,但没有考虑age、sex和cholesterol等因素,所以分析仍然是不全面的。同时,对应怎么样选择其他药物,也没有给出明确并且全面的标准。这里试图通过建立建立模型,从age、sex、BP、cholesterol、Na/K的综合角度选择不同药物的依据。
这里选择的是决策树C5.0模型,得到的分析结果如下图所示:
通过上图可以看出,Na/k的比值是选择药物时首要考虑的因素,其次是血压和胆固醇水平。当病人的Na/K值高于14.642时,应该选择服用drugY,无须考虑其他因素;当病人的Na/K值低于14.642时,对于高血压病人,更适合选择drugA;对于低血压病人和血压正常的病人,可以选择drugX。性别对选择药物没有影响。
通过对模型预测精度做评估,发现所建立的模型的正确预测度达到了99.5%,所与预测的效果是可以信任的。
到这里,基本就完成了数据分析和数据挖掘数据流建立和分析过程。