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 )

chl
fonte
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 .

chl
fonte
Ó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

Isso não fornece especificamente uma resposta, mas você pode examinar estas perguntas relacionadas ao stackoverflow:

Você também pode estar interessado no projeto recente de John Myles White para criar um modelo de projeto estatístico.

Shane
fonte
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.
user88
fonte
+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
4

van Belle é a fonte das regras de projetos estatísticos bem-sucedidos.

Carlos Accioly
fonte
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.

Wes McCardle
fonte
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.

Christian Sauer
fonte
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.

hugke729
fonte