Diretrizes de garantia e controle de qualidade (QA / QC) para um banco de dados

18

fundo

Estou supervisionando a entrada de dados da literatura primária em um banco de dados . O processo de entrada de dados é propenso a erros, principalmente porque os usuários devem interpretar o design experimental, extrair dados de gráficos e tabelas e transformar resultados em unidades padronizadas.

Os dados são inseridos em um banco de dados MySQL através de uma interface web. Mais de 10 mil pontos de dados de> 20 variáveis,> 100 espécies e> 500 citações foram incluídos até o momento. Preciso executar verificações da qualidade não apenas dos dados variáveis, mas também dos dados contidos nas tabelas de pesquisa, como as espécies associadas a cada ponto de dados, a localização do estudo etc.

A entrada de dados está em andamento, portanto, o controle de qualidade / controle de qualidade precisará ser executado de forma intermitente. Os dados ainda não foram divulgados publicamente, mas planejamos divulgá-los nos próximos meses.

Atualmente, meu controle de qualidade / controle de qualidade envolve três etapas:

  1. um segundo usuário verifica cada ponto de dados.
  2. inspecione visualmente o histograma de cada variável em busca de outliers.
  3. os usuários relatam dados questionáveis ​​após a obtenção de resultados falsos.

Questões

  1. Existem diretrizes que eu possa usar para desenvolver um procedimento robusto de controle de qualidade / controle de qualidade para esse banco de dados?
  2. O primeiro passo é o mais demorado; Existe algo que eu possa fazer para tornar isso mais eficiente?
David LeBauer
fonte
1
Os leitores aqui também estarão interessados ​​no seguinte segmento: Testes essenciais de verificação de dados .
gung - Restabelece Monica

Respostas:

25

Essa resposta se concentra na segunda pergunta, mas no processo uma resposta parcial à primeira pergunta (diretrizes para um procedimento de QA / QC) surgirá.

De longe, a melhor coisa a fazer é verificar a qualidade dos dados no momento em que a entrada é tentada. As verificações e relatórios do usuário são trabalhosos e, portanto, devem ser reservados para o processo mais tarde, o mais tarde possível.

Aqui estão alguns princípios, diretrizes e sugestões, derivados de uma vasta experiência (com o design e a criação de muitos bancos de dados comparáveis ​​e muito maiores que os seus). Eles não são regras; você não precisa segui-los para ter sucesso e eficiência; mas todos eles estão aqui por excelentes razões e você deve pensar muito em se desviar deles.

  1. Separe a entrada de dados de todas as atividades intelectualmente exigentes . Não peça aos operadores de entrada de dados simultaneamente para verificar qualquer coisa, contar qualquer coisa, etc. Restrinja seu trabalho a criar um fac-símile legível por computador, nada mais. Em particular, esse princípio implica que os formulários de entrada de dados devem refletir o formato em que você obtém os dados originalmente, não o formato em que planeja armazenar os dados. É relativamente fácil transformar um formato para outro posteriormente, mas é um processo propenso a erros tentar a transformação rapidamente enquanto insere dados.

  2. Crie uma trilha de auditoria de dados : sempre que algo for feito com os dados, iniciando no estágio de entrada de dados, documente isso e registre o procedimento de uma maneira que facilite o retorno e verifique o que deu errado (porque as coisas vão dar errado). Considere o preenchimento de campos para registros de data e hora, identificadores de operadores de entrada de dados, identificadores de fontes para os dados originais (como relatórios e seus números de página) etc. O armazenamento é barato, mas o tempo para rastrear um erro é caro.

  3. Automatize tudo. Suponha que qualquer etapa tenha que ser refeita (no pior momento possível, de acordo com a Lei de Murphy) e planeje adequadamente. Não tente economizar tempo agora, executando algumas "etapas simples" manualmente.

  4. Em particular, crie suporte para entrada de dados : crie um front-end para cada tabela (mesmo uma planilha pode funcionar bem) que forneça uma maneira clara, simples e uniforme de obter dados. Ao mesmo tempo, o front-end deve reforçar seus "negócios" rules: "ou seja, ele deve executar o maior número possível de verificações simples de validade. (Por exemplo, o pH deve estar entre 0 e 14; a contagem deve ser positiva.) Idealmente, use um DBMS para impor verificações de integridade relacional (por exemplo, todas as espécies associadas a uma medição realmente existem no banco de dados).

  5. Contar constantemente as coisas e verificar se conta exatamente de acordo. Por exemplo, se um estudo deve medir atributos de 10 espécies, certifique-se (assim que a entrada de dados for concluída) que 10 espécies sejam realmente relatadas. Embora a verificação das contagens seja simples e pouco informativa, é ótima para detectar dados duplicados e omitidos.

  6. Se os dados forem valiosos e importantes, considere a digitação independente de todo o conjunto de dados . Isso significa que cada item será inserido em momentos separados por duas pessoas diferentes que não interagem. Essa é uma ótima maneira de detectar erros de digitação, dados ausentes etc. A verificação cruzada pode ser completamente automatizada. Isso é mais rápido, melhor na detecção de erros e mais eficiente que a verificação dupla manual de 100%. (A entrada de dados "pessoas" pode incluir dispositivos como scanners com OCR.)

  7. Use um DBMS para armazenar e gerenciar os dados. As planilhas são ótimas para oferecer suporte à entrada de dados, mas obtenha seus dados das planilhas ou arquivos de texto e em um banco de dados real o mais rápido possível. Isso evita todos os tipos de erros insidiosos, ao mesmo tempo em que adiciona muito suporte para verificações automáticas de integridade de dados. Se necessário, use seu software estatístico para armazenamento e gerenciamento de dados, mas considere seriamente o uso de um DBMS dedicado: ele fará um trabalho melhor.

  8. Depois que todos os dados forem inseridos e verificados automaticamente, desenhe figuras : crie tabelas, histogramas, gráficos de dispersão etc., e analise todos eles. Estes são facilmente automatizados com qualquer pacote estatístico completo.

  9. Não peça às pessoas para executar tarefas repetitivas que o computador possa executar . O computador é muito mais rápido e confiável nisso. Adquira o hábito de escrever (e documentar) pequenos scripts e pequenos programas para executar qualquer tarefa que não possa ser concluída imediatamente. Isso fará parte da sua trilha de auditoria e permitirá que o trabalho seja refeito facilmente. Use qualquer plataforma com a qual se sinta confortável e que seja adequada à tarefa. (Ao longo dos anos, dependendo do que estava disponível, usei uma ampla variedade de plataformas desse tipo e todas foram eficazes, variando de programas C e Fortran a scripts AWK e SED, scripts VBA para Excel e Word e personalizados programas escritos para sistemas de bancos de dados relacionais, GIS e plataformas de análise estatística como R e Stata.)

Se você seguir a maioria dessas diretrizes, aproximadamente 50% a 80% do trabalho para inserir dados no banco de dados será o design do banco de dados e a gravação dos scripts de suporte. Não é incomum obter 90% de um projeto desse tipo e menos de 50% de conclusão, mas ainda assim terminar no prazo: depois que tudo estiver configurado e testado, a entrada e a verificação de dados podem ser incrivelmente eficientes.

whuber
fonte
4
Bem, estou muito apaixonado por esta resposta. Eu gostaria de enfatizar que, no ponto 4 a seguir, você deve manter as verificações simples - geralmente existem poucas incongruências em dados reais que seus participantes devem poder inserir, mas que você não poderá prever. Por exemplo, certifico-me de que as datas sejam inseridas como datas; mas parei de ter regras rígidas sobre períodos e, em vez disso, verifique isso com os relatórios e acompanhe valores fora dos limites com quem fez a entrada de dados.
Matt Parker
5
Impedir que alguém insira um valor que julgue correto pode apresentar mais erros do que detectá-lo e investigá-lo.
Matt Parker
+1, ótima resposta. Eu concordo com o Matt, eu também adoro esta resposta :)
mpiktas 22/02
1
@ Matt bons pontos, os dois. Eu concordo completamente. Em relação à primeira, uma boa abordagem é testar os procedimentos de entrada de dados em um pequeno subconjunto representativo dos dados e analisar minuciosamente todos os problemas que surgem. Isso não aborda tudo o que pode surgir, mas identifica a maioria dos principais problemas desde o início e permite lidar com eles de maneira eficaz.
whuber
2
Adicionar como essas informações é útil em um só lugar. 1. Crie um documento de regras de negócios que contenha os metadados. incluindo as regras usadas para produzir variáveis ​​derivadas, como idade. 2. Se este for um banco de dados administrativo em particular, assuma que as variáveis ​​mudarão com o tempo, por exemplo, novos códigos serão adicionados. Nos metadados, explique quando a alteração ocorreu e como isso pode afetar qualquer série temporal. 3. Se o banco de dados for adicionado ao longo do tempo, a data e a hora serão alteradas no banco de dados.
Michelle
3

O DataOne fornece um conjunto útil de práticas recomendadas de gerenciamento de dados que podem ser filtradas por tag. As melhores práticas marcadas com "qualidade", encontradas em http://www.dataone.org/best-practices/quality , reiterando e expandindo muitos dos argumentos apresentados pelo @whuber. Aqui está uma lista dos tópicos abordados aqui (em ordem alfabética):

  • Comunicar a qualidade dos dados
  • Confirme uma correspondência entre os dados e sua descrição nos metadados
  • Considere a compatibilidade dos dados que você está integrando
  • Desenvolver um plano de garantia e controle de qualidade
  • Verifique novamente os dados inseridos
  • Garanta controle básico da qualidade
  • Garanta integridade e acessibilidade ao fazer backups de dados
  • Identificar outliers
  • Identifique valores estimados
  • Forneça informações de versão para uso e descoberta
David LeBauer
fonte