Como gerenciar com eficiência um projeto de análise estatística?


89

Frequentemente ouvimos falar de gerenciamento de projetos e padrões de design em ciência da computação, mas com menos frequência em análises estatísticas. No entanto, parece que um passo decisivo para a criação de um projeto estatístico eficaz e durável é manter as coisas organizadas.

Defendo frequentemente o uso de R e uma organização consistente de arquivos em pastas separadas (arquivo de dados brutos, arquivo de dados transformado, scripts R, figuras, notas, etc.). O principal motivo dessa abordagem é que pode ser mais fácil executar sua análise posteriormente (quando você esqueceu como produziu um determinado gráfico, por exemplo).

Quais são as melhores práticas para gerenciamento estatístico de projetos ou as recomendações que você gostaria de dar com sua própria experiência? Obviamente, isso se aplica a qualquer software estatístico. ( uma resposta por post, por favor )


Eu estou votando para fechar esta questão como off-topic, porque é sobre gerenciamento de projetos
Aksakal

2
@Aksakal: Eu acho que você é um pouco duro. :) É relevante para " pessoas interessadas em estatística ". Além disso, os mais de 70 votos sugerem fortemente que os usuários padrão acharam esta questão interessante e útil.
usεr11852

1
Eu acho que isso deve ser considerado no tópico aqui.
gung

@gung Gostaria de adicionar uma resposta a esse tópico do Meta para que possamos discuti-lo?
Ameba

Respostas:


80

Estou compilando uma rápida série de diretrizes que encontrei no SO (conforme sugerido por @Shane), Biostar (daqui em diante, BS) e neste SE. Eu tentei o meu melhor para reconhecer a propriedade de cada item e selecionar a primeira ou a resposta mais votada. Também adicionei itens próprios e sinalizei itens específicos para o ambiente [R].

Gestão de dados

  • Crie uma estrutura de projeto para manter tudo no lugar certo (dados, código, figuras, etc., giovanni / BS)
  • Nunca modifique arquivos de dados brutos (idealmente, eles devem ser somente leitura), copie / renomeie para novos ao fazer transformações, limpeza etc.
  • Verificar a consistência dos dados ( whuber / SE)
  • Gerencie dependências de script e fluxo de dados com uma ferramenta de automação de construção, como o GNU make ( Karl Broman / Zachary Jones )

Codificação

  • organizar o código-fonte em unidades lógicas ou blocos de construção ( Josh Reich / hadley / ars / SO; giovanni / Khader Shameer / BS)
  • separar o código-fonte do material de edição, especialmente para projetos grandes - parcialmente sobrepostos ao item e relatório anteriores
  • Documente tudo, com, por exemplo, [R] oxigênio ( Shane / SO) ou auto-anotação consistente no arquivo de origem - uma boa discussão sobre Medstats, Documentando análises e edições de dados
  • [R] As funções personalizadas podem ser colocadas em um arquivo dedicado (que pode ser originado quando necessário), em um novo ambiente (para evitar o preenchimento do espaço para nome de nível superior, Brendan OConnor / SO) ou de um pacote ( Dirk Eddelbuettel / Shane / SO)

Análise

  • Não se esqueça de definir / registrar a semente que você usou ao chamar RNG ou algoritmos estocásticos (por exemplo, k-means)
  • Para estudos de Monte Carlo, pode ser interessante armazenar especificações / parâmetros em um arquivo separado ( sumatra pode ser um bom candidato, giovanni / BS)
  • Não se limite a um gráfico por variável, use telas multivariadas (Trellis) e ferramentas de visualização interativa (por exemplo, GGobi)

Versionamento

  • Use algum tipo de controle de revisão para facilitar o rastreamento / exportação, por exemplo, Git ( Sharpie / VonC / JD Long / SO) - isso é resultado de boas perguntas feitas por @Jeromy e @Tal
  • Faça backup de tudo regularmente ( Sharpie / JD Long / SO)
  • Mantenha um registro de suas idéias ou conte com um rastreador de problemas, como ditz ( giovanni / BS) - parcialmente redundante com o item anterior, pois está disponível no Git

Edição / Relatórios

Como uma observação lateral, Hadley Wickham oferece uma visão abrangente do gerenciamento de projetos de R , incluindo exemplificação reproduzível e uma filosofia unificada de dados .

Finalmente, em seu fluxo de trabalho orientado para a análise de dados estatísticos, Oliver Kirchkamp oferece uma visão geral muito detalhada de por que a adoção e a obediência a um fluxo de trabalho específico ajudarão os estatísticos a colaborar entre si, garantindo a integridade dos dados e a reprodutibilidade dos resultados. Além disso, inclui algumas discussões sobre o uso de um sistema de tecelagem e controle de versão. Os usuários do Stata também podem achar úteis o trabalho de J. Scott Long, O fluxo de análise de dados usando o Stata .


Ótimo trabalho chl! Seria bom para você se eu onde publicar isso no meu blog? (Quero dizer, este texto é cc, então eu poderia, mas eu queria sua permissão de qualquer maneira :)) Saúde, Tal
Tal Galili

@ Tal Não há problema. Está longe de ser uma lista exaustiva, mas talvez você possa agregar outros links úteis posteriormente. Além disso, sinta-se à vontade para se adaptar ou reorganizar de uma maneira melhor.
chl

+1 Esta é uma boa lista. Você pode considerar "aceitar isso" para que esteja sempre no topo; como é CW, qualquer pessoa pode mantê-lo atualizado.
Shane

@ Shane Bem, sou grato a você por fornecer a primeira resposta com links úteis. Sinta-se livre para adicionar / modificar da maneira que desejar.
chl

Eu a republicei aqui. Ótima lista! r-statistics.com/2010/09/…
Tal Galili

21

Obrigado pelos links! A questão está aberta a qualquer software estatístico - eu uso Python e Stata de tempos em tempos, então me pergunto se usuários confirmados podem trazer recomendações interessantes.
chl

Absolutamente; embora eu acrescentasse que as recomendações nos links acima poderiam realmente se aplicar a qualquer projeto estatístico (independentemente do idioma).
Shane

Definitivamente sim! Atualizei minha pergunta ao mesmo tempo.
chl

8

Isso se sobrepõe à resposta de Shane, mas, na minha opinião, existem dois pilares principais:

  • Reprodutibilidade ; não apenas porque você não terminará com os resultados "de alguma forma", mas também poderá executar novamente a análise mais rapidamente (em outros dados ou com parâmetros ligeiramente alterados) e terá mais tempo para pensar nos resultados. Para um grande número de dados, você pode primeiro testar suas idéias em um pequeno "conjunto de peças" e depois estender facilmente todos os dados.
  • Boa documentação ; comentou scripts sob controle de versão, algum diário de pesquisa e até sistema de tickets para projetos mais complexos. Melhora a reprodutibilidade, facilita o rastreamento de erros e torna trivial a elaboração de relatórios finais.

+1 Gosto do segundo ponto (uso roxo + git). O primeiro ponto me faz pensar também na possibilidade de fornecer seu código a outro estatístico que poderá reproduzir seus resultados em um estágio posterior do projeto, sem nenhuma ajuda.
chl

Reprodutibilidade? Os dados têm erro aleatório de qualquer maneira, então quem se importa. Documentação? Duas respostas possíveis: 1) Estamos muito ocupados, não temos tempo para documentação ou 2) Só tínhamos orçamento para fazer a análise ou documentá-la, então escolhemos fazer a análise. Você acha que eu estou brincando? Eu já vi / ouvi essas atitudes em muitas ocasiões - em projetos nos quais vidas estavam passando pela linha.
Mark L. Stone


1

Apenas meus 2 centavos. Eu achei o Notepad ++ útil para isso. Posso manter scripts separados (controle de programa, formatação de dados etc.) e um arquivo .pad para cada projeto. A chamada do arquivo .pad é todos os scripts associados a esse projeto.


3
Quer dizer, bloco de notas ++ com o uso de npptor :)
Tal Galili

1

Enquanto as outras respostas são ótimas, eu acrescentaria outro sentimento: Evite usar o SPSS. Usei o SPSS para minha tese de mestrado e agora trabalho regularmente em pesquisa de mercado.

Enquanto trabalhava com o SPSS, era incrivelmente difícil desenvolver código estatístico organizado, devido ao fato de o SPSS ser ruim em lidar com vários arquivos (claro, você pode lidar com vários arquivos, mas não é tão indolor quanto R), porque não é possível armazenar conjuntos de dados para uma variável - você precisa usar o código "ativar conjunto de dados x" -, o que pode ser uma dor total. Além disso, a sintaxe é desajeitada e incentiva atalhos, o que torna o código ainda mais ilegível.


0

Os Jupyter Notebooks, que funcionam com R / Python / Matlab / etc, removem o incômodo de lembrar qual script gera uma determinada figura. Esta postagem descreve uma maneira organizada de manter o código e a figura um ao lado do outro. Manter todas as figuras de um capítulo de papel ou tese em um único bloco de notas facilita a localização do código associado.

Ainda melhor, de fato, porque você pode rolar, digamos, uma dúzia de figuras para encontrar a que deseja. O código é mantido oculto até que seja necessário.

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.