数据库的质量保证和质量控制 (QA/QC) 指南

机器算法验证 数据集 荟萃分析 质量控制 数据库
2022-02-12 15:33:44

背景

我正在监督将原始文献中的数据输入数据库数据输入过程容易出错,特别是因为用户必须解释实验设计,从图形和表格中提取数据,并将结果转换为标准化单位。

数据通过 Web 界面输入 MySQL 数据库。迄今为止,已包含来自 > 20 个变量、> 100 个物种和 > 500 次引用的超过 10k 个数据点。我不仅需要检查变量数据的质量,还需要检查查找表中包含的数据,例如与每个数据点相关的物种、研究的位置等。

数据输入正在进行中,因此 QA/QC 需要间歇运行。这些数据尚未公开发布,但我们计划在未来几个月内发布。

目前,我的 QA/QC 涉及三个步骤:

  1. 第二个用户检查每个数据点。
  2. 目视检查直方图每个变量的异常值。
  3. 用户在获得虚假结果后报告有问题的数据。

问题

  1. 是否有可用于为该数据库开发强大的 QA/QC 程序的指南?
  2. 第一步是最耗时的;我能做些什么来提高效率吗?
2个回答

此响应侧重于第二个问题,但在此过程中将出现对第一个问题(QA/QC 程序指南)的部分答案。

到目前为止,您能做的最好的事情是在尝试输入时检查数据质量。用户检查和报告是劳动密集型的,因此应在流程的后期保留,尽可能晚。

这里有一些原则、指导方针和建议,它们源自丰富的经验(设计和创建的许多数据库与您的数据库相当并且比您的数据库大得多)。它们不是规则;您不必遵循它们即可成功和高效;但他们都在这里有很好的理由,你应该认真考虑偏离他们。

  1. 将数据输入与所有需要智力的活动分开不要同时要求数据输入操作员检查任何内容、计算任何内容等。将他们的工作限制在创建数据的计算机可读传真,仅此而已。特别是,该原则意味着数据输入表格应反映您最初获取数据的格式,而不是您计划存储数据的格式。稍后将一种格式转换为另一种格式相对容易,但在输入数据时尝试即时转换是一个容易出错的过程。

  2. 创建数据审计跟踪:每当对数据进行任何操作时,从数据输入阶段开始,记录并记录程序,以便轻松返回并检查出了什么问题(因为事情会出错)。考虑填写时间戳字段、数据输入操作员的标识符、原始数据的来源标识符(例如报告及其页码)等。存储成本低,但追踪错误的时间成本高。

  3. 自动化一切。 假设任何步骤都必须重做(根据墨菲定律,在最坏的时间),并相应地计划。现在不要试图通过手动执行几个“简单步骤”来节省时间。

  4. 特别是创建对数据输入的支持:为每个表(甚至电子表格也可以做得很好)创建一个前端,提供清晰、简单、统一的方式来获取数据。同时前端应该强制执行您的“业务规则:”也就是说,它应该执行尽可能多的简单有效性检查。(例如,pH 必须在 0 和 14 之间;计数必须是正数。)理想情况下,使用 DBMS 来执行关系完整性检查(例如,与测量相关的每个物种都确实存在于数据库中)。

  5. 不断地计算事物并检查计数是否完全一致。例如,如果一项研究要测量 10 个物种的属性,请确保(一旦数据输入完成)确实报告了 10 个物种。尽管检查计数很简单且信息量不大,但它非常适合检测重复和遗漏的数据。

  6. 如果数据有价值且重要,请考虑独立重复输入整个数据集这意味着每个项目将由两个不同的非交互人员在不同的时间输入。这是捕获拼写错误、丢失数据等的好方法。交叉检查可以完全自动化。这比 100% 的手动双重检查更快、更好地捕捉错误并且更有效。(数据条目“人”可以包括设备,例如带有 OCR 的扫描仪。)

  7. 使用 DBMS来存储和管理数据。电子表格非常适合支持数据输入,但要尽快将您的数据从电子表格或文本文件中取出并放入真实的数据库中。这可以防止各种隐蔽的错误,同时增加了对自动数据完整性检查的大量支持。如果必须,请使用您的统计软件进行数据存储和管理,但请认真考虑使用专用 DBMS:它会做得更好。

  8. 全部数据录入并自动核对后,画图:制作排序表、直方图、散点图等,全部查看。这些可以通过任何成熟的统计软件包轻松实现自动化。

  9. 不要要求人们做计算机可以做的重复性任务计算机在这些方面更快,更可靠。养成编写(和记录)小脚本和小程序的习惯,以完成任何无法立即完成的任务。这些将成为您审计跟踪的一部分,它们将使工作能够轻松重做。使用您喜欢的任何适合任务的平台。(多年来,根据可用的平台,我使用过各种各样的此类平台,并且都以它们的方式有效,从 C 和 Fortran 程序到 AWK 和 SED 脚本,用于 Excel 和 Word 的 VBA 脚本,以及自定义为关系数据库系统、GIS 和 R 和 Stata 等统计分析平台编写的程序。)

如果您遵循这些准则中的大部分,将数据导入数据库的工作中大约 50%-80% 将是数据库设计和编写支持脚本。通过这样的项目完成 90% 并完成不到 50% 的情况并不少见,但仍能按时完成:一旦一切都设置好并经过测试,数据输入和检查会非常高效。

DataOne提供了一组有用的数据管理最佳实践,可以按标签进行过滤。标有“质量”的最佳实践可在http://www.dataone.org/best-practices/quality找到,重申并扩展了 @whuber 提出的许多观点。以下是其中涵盖的主题列表(按字母顺序):

  • 沟通数据质量
  • 确认数据与其在元数据中的描述之间的匹配
  • 考虑您正在集成的数据的兼容性
  • 制定质量保证和质量控制计划
  • 仔细检查您输入的数据
  • 确保基本质量控制
  • 备份数据时确保完整性和可访问性
  • 识别异常值
  • 识别估计值
  • 提供版本信息以供使用和发现