Como faço para que as pessoas cuidem melhor dos dados?


42

Meu local de trabalho tem funcionários de uma ampla variedade de disciplinas, por isso geramos dados de várias formas diferentes. Consequentemente, cada equipe desenvolveu seu próprio sistema para armazenar dados. Alguns usam bancos de dados Access ou SQL; algumas equipes (para meu horror) dependem quase inteiramente das planilhas do Excel. Freqüentemente, os formatos de dados mudam de projeto para projeto. Em alguns casos, chamá-lo de 'sistema' é muito gentil.

Os problemas que isso implica são que eu tenho que escrever um novo código para limpar os dados de cada projeto, o que é caro; as pessoas que editam planilhas manualmente tornam quase impossível a reprodutibilidade e a auditoria de dados; e ainda pior, há uma chance de os dados serem perdidos ou incorretos.

Tive a oportunidade de discutir esses problemas com um membro do conselho da empresa e preciso descobrir o que dizer a ele. Acho que já o convenci de que temos um problema e que acertar isso permitirá uma melhor ciência e economia de dinheiro. A questão é: o que devemos procurar e como chegamos lá?

Mais especificamente:

Como devemos armazenar dados, de maneira que possamos acompanhar desde a criação até a publicação em um jornal? (Bancos de dados armazenados em um servidor central?)

Como você padroniza os formatos de banco de dados?

Existem bons recursos para educar as pessoas sobre como cuidar de dados? (Como regra geral, higienistas ocupacionais e engenheiros de explosivos não são nerds de dados; portanto, prefere conteúdo não técnico.)


A questão do título é diferente da questão substantiva do post. O primeiro pergunta sobre como convencer as pessoas a cuidar dos dados, e o segundo pergunta sobre o melhor caminho para armazenar dados. Qual é a pergunta que você deseja responder?
Reponha Monica

Respostas:


16

Vale a pena considerar as idéias do mundo do software. Em particular, você pode pensar em configurar: um repositório de controle de versão e um servidor de banco de dados central.

O controle de versão provavelmente ajuda você com arquivos flutuantes livres, como Excel e arquivos de texto, etc. Mas isso também pode incluir arquivos associados a dados, como R, SAS etc. A idéia é que exista um sistema que rastreie as alterações nas seus arquivos, permitindo saber o que aconteceu quando e reverter para um ponto no passado, se necessário.

Onde você já possui bancos de dados SQL, a melhor coisa a fazer é configurar um servidor central e contratar um DBA capaz . O DBA é a pessoa encarregada de garantir e manter a integridade dos dados. Parte da descrição do trabalho envolve coisas como backups e ajustes. Porém, outra parte é mais relevante aqui - controlar como os dados entram no sistema, garantir que as restrições sejam atendidas, implementar políticas de acesso para evitar danos aos dados, configurar visualizações para expor formatos de dados personalizados ou simplificados etc. implementação de uma metodologia em torno do processo de dados. Mesmo que você não contrate um DBA real (os bons são muito difíceis de recrutar), ter um servidor central ainda permite que você comece a pensar em instituir algum tipo de metodologia em torno dos dados.


3
Absolutamente concordou com o controle de versão. Eu uso-o; assim como uma proporção substancial de desenvolvedores e estatísticos. (Gostaria de ver 100% de adoção, mas esse é outro sonho do momento.) O difícil é conseguir que os não técnicos o usem. Todas as idéias apreciadas.
Richie Cotton

2
@ Richie Cotton: Não sei por que, mas o controle de versão parece ser um conceito difícil para os não técnicos entenderem. As pessoas continuam fazendo apenas algumas alterações em um arquivo, renomeá-lo e enviá-lo por email. Como eu odeio os arquivos "PaperDraftCorrectedByJohnRevision3RewroteByLeslie-NewVersion3.doc" ...
nico

12

1
Excelentes links. Acho que duas mensagens importantes para eu transmitir são: precisamos de uma verificação de dados mais automatizada e preciso começar a explicar sobre a separação da entrada e apresentação de dados.
Richie Cotton

6

Acho que, em primeiro lugar, você deve se perguntar: por que as pessoas usam o Excel para realizar tarefas para as quais o Excel não foi criado?

1) Eles já sabem como usá-lo 2) Funciona. Talvez de uma maneira desajeitada, mas funciona e é isso que eles querem

Copio uma série de números, pressiono um botão e tenho uma trama. Tão fácil quanto isso.

Portanto, faça com que eles entendam quais vantagens eles podem ter usando conjuntos de dados centralizados, bancos de dados adequados (observe que o Access NÃO é um deles) e assim por diante. Mas lembre-se dos dois pontos acima: você precisa configurar um sistema que funcione e que seja fácil de usar.

Já vi muitas vezes sistemas mal feitos que me fizeram querer voltar não ao Excel, mas a caneta e papel!

Apenas como exemplo, temos um sistema de pedidos horrível onde eu trabalho.

Costumávamos preencher um formulário de pedido, que era uma planilha do Excel, onde você digitava o nome do produto, a quantidade, o custo etc. a secretária que faria o pedido e foi isso. Ineficiente, mas funcionou.

Agora temos um sistema de pedidos on-line, com um banco de dados centralizado e tudo mais. Isso é um horror. Não demorei 10 minutos para preencher um formulário maldito por causa dos atalhos de teclado pouco comuns e das várias esquisitices do software. E note que eu sou bastante entendido em informática, então imagine o que acontece com pessoas que não gostam de computadores ...


Concordou que as coisas precisam ser amigáveis. Como as pessoas se protegem muito de suas práticas de trabalho, qualquer mudança deve facilitar a vida das pessoas ou elas fracassarão.
Richie Cotton

5

Sublinho todas as respostas já dadas, mas vamos chamar um gato de gato: em muitos espaços de trabalho, é quase impossível convencer a gerência de que é necessário investir em ferramentas de software "exóticas" (exóticas para elas), e muito menos contratar alguém que possa definir e mantê-lo. Eu disse a alguns clientes que eles se beneficiariam muito com a contratação de um estatístico com um conhecimento aprofundado sobre software e bancos de dados, mas "não posso fazer" é a resposta geral.

Desde que isso não aconteça, existem algumas coisas simples que você pode fazer com o Excel que facilitarão a vida. E o primeiro disso é sem dúvida o controle de versão. Mais informações sobre controle de versão com o Excel podem ser encontradas aqui .

Algumas coisas sobre o uso do excel

As pessoas que usam o EXCEL frequentemente gostam dos recursos da fórmula do EXCEL. No entanto, essa é a fonte mais importante de erros nas folhas do EXCEL e de problemas ao tentar ler arquivos EXCEL no que diz respeito à minha experiência. Recuso-me a trabalhar com folhas contendo fórmulas.

Também forço todos com quem trabalho a entregar as folhas do EXCEL em um formato simples, o que significa que:

  • A primeira linha contém os nomes das diferentes variáveis
  • A planilha começa na célula A1
  • Todos os dados são colocados em colunas, sem interrupções e sem formatação.
  • Se possível, os dados também são salvos no formato .csv. Não é difícil escrever um script VBA que extraia os dados, reformate-os e coloque-os em um arquivo .csv. Isso também permite um melhor controle de versão, pois você pode fazer um dump .csv dos dados todos os dias.

Se houver uma estrutura geral que os dados sempre tenham, pode ser bom desenvolver um modelo com macros VB subjacentes para adicionar dados e gerar o conjunto de dados para análise. Isso geralmente evita que todo funcionário crie seu próprio sistema "genial" de armazenamento de dados e permita que você escreva seu código em função disso.

Dito isto, se você pode convencer todos a usar o SQL (e um front end para inserir dados), é possível vincular o R ​​diretamente a esse. Isso aumentará bastante o desempenho.

Estrutura e gerenciamento de dados

Como regra geral, os dados armazenados nos bancos de dados (ou folhas EXCEL, se eles insistirem) devem ser o mínimo absoluto, o que significa que qualquer variável que possa ser calculada a partir de outras variáveis ​​não deve estar contida no banco de dados. Lembre-se, às vezes pode ser benéfico armazenar essas variáveis ​​derivadas ou transformadas, se os cálculos forem entediantes e demoram muito tempo. Mas eles devem ser armazenados em um banco de dados separado, se necessário, vinculado ao original.

Deve-se pensar também no que é considerado como um caso (e, portanto, uma linha). Como exemplo, as pessoas tendem a produzir séries temporais criando uma nova variável para cada ponto no tempo. Embora isso faça sentido em um EXCEL, a leitura desses dados exige bastante inversão da matriz de dados. O mesmo para comparar grupos: deve haver um indicador de grupo e uma variável de resposta, não uma variável de resposta para cada grupo. Dessa forma, as estruturas de dados também podem ser padronizadas.

A última coisa que encontro com frequência é o uso de métricas diferentes. Os comprimentos são dados em metros ou centímetros, as temperaturas em Celsius, Kelvin ou Farenheit, ... Deve-se indicar em qualquer front end ou modelo, qual é a unidade em que a variável é medida.

E mesmo depois de todas essas coisas, você ainda deseja ter uma etapa de controle de dados antes de começar a análise. Novamente, pode ser qualquer script que seja executado diariamente (por exemplo, durante a noite) em novas entradas e que sinalize problemas imediatamente (fora do intervalo, tipo errado, campos ausentes, ...) para que possam ser corrigidos o mais rápido possível. Se você precisar retornar a uma entrada feita há 2 meses para descobrir o que está errado e por quê, é melhor obter algumas "habilidades Sherlock" boas para corrigi-la.

meus 2 centavos


Alguns pontos muito interessantes aqui. Convencer as pessoas a simplificar e padronizar suas planilhas provavelmente será mais bem-sucedido do que fazê-las abandoná-las. Também não tinha ideia de que o controle de versão pudesse se integrar ao Excel. Bom saber.
Richie Cotton

2
Em relação ao conselho para não armazenar variáveis ​​redundantes: isso é apropriado para RDBMSes, mas eu gostaria de sugerir que o contrário seja incentivado para planilhas. Os últimos são tão propensos a erros que os mecanismos para detectar e corrigir erros são inestimáveis. Um dos melhores consiste em informações redundantes, como campos computados e resumos estatísticos. Por exemplo, se a coluna C é a proporção das colunas A e B, um erro em uma única coluna em qualquer linha específica pode ser detectado e geralmente corrigido.
whuber

1
@ whuber: é isso que verificamos na etapa de controle de dados. Você pode usar essa coluna extra para verificar rapidamente, mas não deve mantê-la na folha final. As fórmulas nas planilhas são horrorosas, e quanto maior a planilha, mais difícil é obter os dados. Além disso, no caso do Excel, você estará combatendo as diferenças entre .xls e .xlsx de qualquer maneira. Certifique-se de que a decisão de um gerente de atualizar o Microsoft Office possa quebrar muito código, se você depender muito dos arquivos do Excel. Portanto: salve como csv e mantenha esses arquivos csv o menor possível.
Joris Meys

Depois de passar uma parte significativa dos últimos 24 anos da minha carreira lidando com dados transmitidos em planilhas e gerenciando bancos de dados substanciais, devo discordar respeitosamente. Não existe um "controle" sobre planilhas (seja .xls, .xlsx, .wks, .wb *, etc) ou mesmo arquivos csv. A presença de informações redundantes nesses arquivos - mesmo quando estão disponíveis apenas na forma impressa - muitas vezes ressuscitou alguns bancos de dados bastante grandes (100k + registros). Toda vez que isso acontece, eu (e meus clientes) somos gratos pelos despedimentos.
whuber

@ whuber: Fazemos controle de dados com scripts extras, procurando valores impossíveis / outliers / casos ímpares. É o que quero dizer com a etapa de controle de dados. Este é o padrão da indústria entre empresas como a SGS e outras que fazem análises de ensaios clínicos, etc. As informações redundantes necessárias são mantidas em bancos de dados separados. Se um deles falha, o outro é necessário para a ressurreição. No caso de você não ter um sistema decente de backup, que é ...
Joris Meys

3

VisTrails: um fluxo de trabalho científico baseado em Python e sistema de proveniência . Esta palestra dada no PyCon 2010 tem algumas boas idéias. Vale a pena ouvir, mesmo se você não estiver interessado em usar o VisTrails ou python. No final, acho que se você pudesse exigir que houvesse uma maneira clara de reproduzir os dados. E exigem alguma validação que eles possam.

Citação:

"Nesta palestra, apresentaremos uma visão geral do VisTrails ( http://www.vistrails.org ), um fluxo de trabalho científico de código aberto baseado em python que captura de forma transparente a proveniência (ou seja, linhagem) dos produtos de dados e dos processos usados. para derivar esses produtos. Mostraremos como o VisTrails pode ser usado para otimizar a exploração e a visualização de dados. Usando exemplos reais, demonstraremos os principais recursos do sistema, incluindo a capacidade de criar visualmente pipelines de processamento de informações que combinam várias ferramentas e bibliotecas, como VTK, pylab e matplotlib. Também mostraremos como o VisTrails aproveita as informações de proveniência não apenas para oferecer suporte à reprodutibilidade dos resultados, mas também para simplificar a criação e o aprimoramento de pipelines ".


Python não é generalizado em nossa organização, mas parece um projeto interessante. Vou ver se consigo juntar algumas idéias de como as coisas devem ser feitas a partir de sua documentação.
Richie Cotton

2

Acabei de encontrar esta página da Web hospedada pelo ICPSR sobre planos de gerenciamento de dados . Embora eu ache que os objetivos do ICPSR serão um pouco diferentes dos seus negócios (por exemplo, eles estão muito interessados ​​em tornar os dados facilmente dissemináveis ​​sem violar a confidencialidade), imagino que eles tenham informações úteis para as empresas. Em particular, conselhos sobre a criação de metadados me parecem universais.


2

No caso de escalas muito menores, experimentei usar o dropbox para compartilhar / sincronizar uma cópia dos arquivos de dados (e scripts e resultados) com outros pesquisadores / colaboradores (escrevi sobre isso aqui ).

A outra ferramenta que usei é o Google Docs para coletar e compartilhar dados (sobre o que escrevi aqui )


0

O Dropbox + packrat é bom para compartilhar arquivos com backup / controle de versão.

Em seguida, você carrega esses arquivos (após canonização / massagem automatizada) em um banco de dados e faz as análises com os dados limpos. Coloque os scripts para automatizar o ciclo Extract-Transform-Load sob controle de versão (ou pelo menos uma pasta dropbox separada com a opção packrat ...).

Quando seu servidor de banco de dados eventualmente falha (ou precisa ser fragmentado ou o que for), você tem um pipeline para mover dados de amigáveis ​​para as pessoas (Excel, formulários da web etc.) para amigáveis ​​para análise (normalmente normalizados e restritos, sempre limpos).

Essa fase "ETL" é do data warehousing. E se você não está construindo um sistema de processamento de transações online, provavelmente está construindo um armazém de dados. Portanto, aceite-o e tire proveito do que as pessoas aprenderam ao construí-las nos últimos 30 anos.

Diverta-se.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.