吴喜之/闫洁
【内容提要】
数据的质量直接影响数据分析的效率和分析结果的可靠性。数据质量包括数据结构质量和给定数据结构后的数据真实性、一致性和完整性。在着重考虑拿到数据之后,从单元格、记录、变量三个角度如何识别数据中潜在的质量问题,并以案例为支撑,介绍了各种可能出现的问题。
【关 键 词】数据质量/缺失值/异常值/无效记录/无效变量
引言
数据仓库专家Ralph Kimball说过:人们花了20多年的时间将数据放入数据库,如今是该将它们拿出来的时候了。可是如今在国内还是有很多数据在收集之后,被束之高阁,一直无人问津;有些人即使用软件对大数据集做了一些分析,但对分析过程中的各种风险考虑不足。统计分析的每一步都可能犯错误。而在分析一个数据最先可能犯的错误就是没有意识到数据中与生俱来的问题。数据是一切统计分析的出发点,如果数据不是现实世界的真实反映,那结论也没有意义。如果人们在事先没有对数据本身的质量进行认真的核查就直接利用软件进行各种计算的话,所产生的结论则必然受到数据质量的影响,有很多风险,甚至可能产生毫无意义的垃圾。由于数据质量关系着数据分析结果的可靠性,因此拿到数据后,首要的是检查数据质量。只有在对数据的问题进行各种适当处理后,才能够再做进一步的分析。
一、数据质量总述
一般认为,高质量的数据要求数据真实、完整、一致[1]。所谓真实是指数据反映真实情况,如在某公司的人力资源数据表中有一条记录“ID:30;年龄:29;收入:
从更实用的角度来看,数据质量分两个方面:一是数据结构对研究主题的代表性;二是在选定数据结构下数值的真实性和完整性。数据结构是指二维数据表中行和列的组织:一行表示一条记录,一个观测,一个研究对象,所有的行组成样本;一列表示一个变量,一个指标,一种信息,一个问题(在数据库中也常称为字段)。所有的列构成了问卷或信息集。数据结构的质量是指样本对研究对象的代表性和问卷对研究主题的代表性:获取数据的个体集合能够代表所研究对象(如研究主题是2006年第2季度客户行为,则选取2006年1~3月的数据是不合适的);获得的信息应反映研究主题的各个重要方面(如研究主题是不同人口学特征的客户行为差异,丢弃客户的人口学特征数据则是不合适的)。数据结构方面的数据质量主要是在设计阶段对抽样计划和问卷设计进行控制。在数据结构确定之后,收集或获取数据的过程也会出现质量问题,如数据是否真实?是否存在大量空缺或者异常值。在一个研究项目中(尤其是在商业企业基于CRM或ERP的研究项目小),往往基于系统现有数据,而很少重新收集相关数据。因而数据结构引起的数据质量问题经常是在设计阶段和结果评估阶段考察。而数值真实性完整性问题则是在数据分析阶段要考虑的,不但复杂而且繁琐。鉴于此,本文着重讨论后者。
在实际应用中主要从以下几个方面来考察数据质量:无效单元格,即无效取值;无效变量;无效记录。无效单元格是指对应个体在相应变量上的取值不是一个有效信息。它可能是由于拒答或不可获得等原因导致的缺失值(如某个体的“企业登记注册类型”是空白值),也可能是由于错填等原因引起的错误值或可疑异常值(如某个体的“注册日期”为“
二、无效单元格的识别
无效单元格的识别包括缺失值的识别和错误异常值的识别。
(一)缺失值的识别
缺失值的识别要简单一些。一般认为“空值”、“空格值”为缺失值。有些情况下,一些特殊值也为缺失值,在一些系统中,可能会直接将缺失数据用某个值代替写入数据库,如一个案例中有这样一个变量“是否农村工业”有“0、1、
(二)根据有效值范围识别错误、可疑异常值
缺失值仅从一个方面反映了数据完整性。单元格中的值即使不缺失,也不见得有意义,因为它可能并不代表真实情况,即在真实性方面存在问题。数据真实性的检查是一项困难工作。但是假数据中的一些明显错误值或者可疑异常值却是可以发现的。
对于分类型变量,可以通过条形图或数据汇总来发现该分类变量有多少个类别取值,然后人为判断哪些取值是非法取值,从而发现错误数据。如“内外资类别”变量(假设业务知识告诉分析者只有“内资”、“外资”、“合资”三个类别)的条形图显示有五家企业为“独资”,则这五家企业在“内外资类别”这个变量上是一个错误数据。在数据仓库中,对每个分类变量,往往有一张系统表专门定义其可以有哪些代码,各代码的物理名称等,笔者将这张表叫做该分类变量的字典表。所以在数据仓库为基础的数据分析中,可采用字典表作为标准,数据表中超出字典表范围的代码,即为错误数据。如在税务数据中有一个分类变量“纳税人状态代码”,对应的也有一张“纳税人状态代码”字典表,即可以“纳税人状态代码”字典表为依据,若某企业的“纳税人状态代码”为“
对于日期型变量,可以通过界定有效日期范围来发现异常值。有效日期范围的界定可以根据“数据库或数据仓库”所收集数据的时间范围来确定,或者根据“研究时间段”来界定。如在一个从1995年才开始收集数据的系统中,不可能包含
(三)根据变量间关系识别错误、可疑异常值
以上介绍的是通过变量自身的分布来发现错误值。除此之外,还可以通过变量之间的关系来发现可疑单元格。
首先,可以通过变量之间的确定性的逻辑关系来判断可疑值。如在地税纳税人登记管理数据表中纳税人的“批准时间”晚于其“申请时间”,如果违反了这一关系,则要么“批准时间”有误,要么“申请时间”有误,要么两个变量均有误。这可以就一条记录变量之间的关系来判断(如上例),也可以利用记录间关系来判断,如在企业各月产值数据中,一个企业一个月是一条记录,此时记录1(某企业2006年3月)的“本月累计产值”不小于记录2(该企业2006年2月)的“本月累计产值”。这种关系可以是大小比较,如“本月累计产值”要不小于“本月产值”;也可以是逻辑判断,如若“本月现价产值”不为零,则“本月不变价产值”也不应该为零等等;当然也可能是更复杂的关系,如“本月产值”占“本月累计产值”的比重与“同月产值”占“同月累计产值”的比重应该基本相似。
其次,可以通过数据间不确定的,但有较大可能的相关关系来判断可疑值[2]。此时要对这种相关性有一个合理假定,在不同假定下对可疑值的判断结果大不相同。下面以“企业产值”数据说明:在一个调查企业生产经营情况的案例中;收集了企业的各种产值数据(如本月/同月销售产值观价,本月/同月新产品产值等)和企业的各种属性数据(如行业代码、登记注册类型代码等)。其中,“本月新产品产值”和“本月销售产值现价”具有一定相关性,因而可以根据这种相关性来判断企业在这两个变量的取值是否存在可疑。但在不同假定下可疑值的判断结果是不一样的。(1)假定这两个变量呈线性相关,以“本月销售产值现价”为自变量,以“本月新产品产值”为结果变量,作线性回归,以Cook's距离诊断异常值,可以发现“1590、736、
表1本月新产品产值与本月销售产值现价非参数相关假定下异常值判断表
图1三个散点图
三、无效记录的识别
无效记录包括冗余记录、完全缺失记录、重要变量无效记录、可信度低的记录。
(一)冗余记录的识别
冗余记录的情况:一种是有些记录所代表的个体不是研究范围内的个体,此类问题一般可在数据抽取过程完成,在此不作介绍;另一类问题是指同一研究对象或者说同一事件在数据中记录超过一次,识别这种冗余数据首先要确定何为冗余?是ID标识变量相同?还是所有非ID变量取值相同?采用ID标识变量相同标准,则表2所示的两条记录是非冗余记录;而在非ID变量取值相同标准下,则要删除其中一条。第一种标准可以发现一份问卷重复录入时,ID标识录入正确但其它变量可能由于录入错误导致不一致的情况;第二种标准可以发现一份问卷录入后被复制,然后更改了ID变量的情况。最保守的方法是分别以两种标准发现可疑冗余记录,必要时进行人工排查。
表2冗余记录示例表
实际数据则可能更复杂一些,如表3所示手机用户13600000001对移动增值业务01的订购退订情况。该增值业务是包月业务,在本月申请开通或取消,下月生效,如果有多次开通和取消申请,则以当月最后一次申请为最终记录。在运营数据库中,客户每作一次申请就会有一条记录产生。由于误操作或者改变主意等原因,一个用户可能在一个月内对该项业务有多次相同或相反的申请,因而在数据库中形成多条无用记录。表3前三条数据即表示用户13600000001对移动增值业务01在2006年3月订购、退订再订购,在这样的业务背景下,表3中只有最后两条是有效的。
表3冗余记录示例表
【作者简介】吴喜之闫洁中国人民大学统计学院,中国人民大学应用统计研究中心,北京100872