它有助于了解如何记录数据。
让我分享一个故事。很久以前,许多数据集仅以衰落的硬拷贝形式存储。在那段黑暗的日子里,我与一家组织(谱系和规模很大;你们中的许多人可能都拥有股票)签约,以在其一家制造工厂中将大约10 ^ 5条环境监测数据记录进行计算机处理。要做到这一点,我个人标记的实验室报告的架子(显示在数据),创建数据录入表格,并与一个临时机构签约识字工人将数据键入表格。(是的,您必须为能阅读的人支付额外的费用。)由于数据的价值和敏感性,我一次与两名工作人员(通常每天都在变化)并行进行此过程。花了几个星期。我编写了用于比较两组条目的软件,以系统地识别和纠正出现的所有错误。
男孩在那里有错误!有什么问题吗?描述和测量误差的一种好方法是在基本记录的级别上,在这种情况下,它是对在给定监测点上获得的特定样品的单个分析结果(通常是某种化学物质的浓度)的描述。给定的日期。在比较两个数据集时,我发现:
遗漏错误:一个数据集将包含一条记录,另一个数据集将不包含。通常发生这种情况是因为(a)在页面底部忽略了一行或两行,或者(b)跳过了整个页面。
明显的遗漏错误实际上是数据输入错误。记录由监视点名称,日期和“分析物”(通常是化学名称)标识。如果其中任何一个有印刷错误,它将不会与与之相关的其他记录匹配。实际上,正确的记录消失了,并且出现了错误的记录。
假复制。相同的结果可以出现在多个来源中,可以多次转录,如果没有,它们似乎是真正的重复测量。重复项很容易检测,但是要确定重复项是否错误取决于是否知道重复项是否应该出现在数据集中。有时候你就是不知道。
弗兰克(Frank)数据输入错误。“好”的那些容易更改,因为它们会改变基准的类型:例如,将字母“ O”用作数字“ 0”,可以将数字转换为非数字。其他良好的错误会大大改变该值,因此可以通过统计测试轻松检测到。(在一种情况下,“ 1,000,010 mg / Kg”的前一位数字被截断,保留为10的值。当您谈论农药浓度时,这是一个巨大的变化!)很难发现错误,因为它们会发生变化将一个值放入一个适合(类似于)其余数据的值,例如为“ 50”键入“ 80”。(OCR软件始终会发生这种错误。)
换位。可以输入正确的值,但与错误的记录键相关联。这很隐蔽,因为数据集的全局统计特征可能保持不变,但是在组之间可能会产生虚假差异。可能只有像两次进入这样的机制才能够检测到这些错误。
一旦知道了这些错误并知道了它们的发生原理,便可以编写脚本来拖曳数据集以了解是否可能出现此类错误,并标记它们以引起进一步关注。您不能总是对其进行解析,但是至少可以包括“评论”或“质量标志”字段,以在以后的分析过程中始终伴随数据。
从那时起,我开始关注数据质量问题,并且有更多的机会对大型统计数据集进行全面检查。没有一个是完美的。他们都从质量检查中受益。多年来,我为此制定的一些原则包括
尽可能在数据输入和数据转录过程中创建冗余:校验和,总计,重复输入:支持自动内部一致性检查的所有内容。
如果可能,创建并利用另一个描述数据外观的数据库:即计算机可读的元数据。 例如,在药物实验中,您可能事先知道每个患者都会被看三次。这使您可以创建一个数据库,其中包含所有正确的记录及其标识符,并带有等待填充的值。使用给定的数据填充它们,然后检查重复,遗漏和意外数据。
无论您计划如何格式化数据集以进行分析,请始终对数据进行规范化(具体而言,至少使它们成为第四范式)。这迫使您为要建模的每个概念上不同的实体创建表。(在环境情况下,这将包括监视位置,样品,化学药品(特性,典型范围等),这些样品的测试(测试通常涵盖一组化学药品)以及这些测试的各个结果的表。这样,您可以对数据质量和一致性进行许多有效的检查,并确定许多潜在的丢失,重复或不一致的值。
这项工作(需要良好的数据处理技能,但很简单)非常有效。如果您想分析大型或复杂的数据集,并且对关系数据库及其理论不了解,请尽快将其添加到要学习的事物列表中。它会在您的整个职业生涯中派息。
尽可能执行所有“愚蠢”的检查。这些是对明显事物的自动验证,例如日期落入其预期期限,患者(或化学药品或其他任何东西)的计数始终正确加总,数值始终合理(例如,pH必须在0到14之间,并且可能在这是领域专业知识可以提供最大帮助的地方:统计学家可以无所畏惧地问专家的愚蠢问题,并利用答案来检查数据。
当然,还可以说更多的东西-该主题值得一本书-但这足以激发思想。