¿Cómo gestionar eficientemente un proyecto de análisis estadístico?

89

A menudo escuchamos sobre la gestión de proyectos y los patrones de diseño en informática, pero con menos frecuencia en análisis estadísticos. Sin embargo, parece que un paso decisivo hacia el diseño de un proyecto estadístico efectivo y duradero es mantener las cosas organizadas.

A menudo abogo por el uso de R y una organización consistente de archivos en carpetas separadas (archivo de datos sin procesar, archivo de datos transformados, scripts R, figuras, notas, etc.). La razón principal de este enfoque es que puede ser más fácil ejecutar su análisis más tarde (cuando olvidó cómo produjo un gráfico determinado, por ejemplo).

¿Cuáles son las mejores prácticas para la gestión estadística de proyectos , o las recomendaciones que le gustaría dar desde su propia experiencia? Por supuesto, esto se aplica a cualquier software estadístico. ( una respuesta por publicación, por favor )

chl
fuente
Estoy votando para cerrar esta pregunta como fuera de tema porque se trata de gestión de proyectos
Aksakal
2
@ Aksakal: Creo que eres un poco duro. :) Es relevante para " personas interesadas en las estadísticas ". Además, los más de 70 votos sugieren que los usuarios estándar consideraron útil y útil esta pregunta.
usεr11852
1
Creo que esto debería considerarse en el tema aquí.
gung - Restablece a Monica
@gung ¿Quizás le gustaría agregar una respuesta a ese hilo Meta para que podamos discutirlo?
ameba

Respuestas:

80

Estoy compilando una serie rápida de pautas que encontré en SO (como lo sugirió @Shane), Biostar (en adelante, BS) y este SE. Hice todo lo posible para reconocer la propiedad de cada elemento y seleccionar la primera respuesta o la que recibió más votos. También agregué cosas propias y marqué elementos que son específicos del entorno [R].

Gestión de datos

  • Cree una estructura de proyecto para mantener todas las cosas en el lugar correcto (datos, código, figuras, etc., giovanni / BS)
  • Nunca modifique archivos de datos sin procesar (idealmente, deben ser de solo lectura), copie / cambie el nombre a nuevos cuando realice transformaciones, limpiezas, etc.
  • Verifique la consistencia de los datos ( whuber / SE)
  • Administre las dependencias de script y el flujo de datos con una herramienta de automatización de compilación, como GNU make ( Karl Broman / Zachary Jones )

Codificación

  • organizar el código fuente en unidades lógicas o bloques de construcción ( Josh Reich / hadley / ars / SO; giovanni / Khader Shameer / BS)
  • separe el código fuente de las cosas de edición, especialmente para proyectos grandes, superponiéndose en parte con elementos e informes anteriores
  • Documente todo, por ejemplo, con [R] oxígeno ( Shane / SO) o una auto-anotación consistente en el archivo fuente - una buena discusión sobre Medstats, Documentación de análisis y edición de datos Opciones
  • [R] Las funciones personalizadas se pueden colocar en un archivo dedicado (que puede obtenerse cuando sea necesario), en un nuevo entorno (para evitar poblar el espacio de nombres de nivel superior, Brendan OConnor / SO) o un paquete ( Dirk Eddelbuettel / Shane / SO)

Análisis

  • No olvide establecer / registrar la semilla que utilizó al llamar a RNG o algoritmos estocásticos (por ejemplo, k-means)
  • Para los estudios de Monte Carlo, puede ser interesante almacenar especificaciones / parámetros en un archivo separado ( sumatra puede ser un buen candidato, giovanni / BS)
  • No se limite a un gráfico por variable, use pantallas multivariadas (Trellis) y herramientas de visualización interactivas (por ejemplo, GGobi)

Versionado

  • Utilice algún tipo de control de revisión para facilitar el seguimiento / exportación, por ejemplo, Git ( Sharpie / VonC / JD Long / SO): esto se desprende de buenas preguntas formuladas por @Jeromy y @Tal
  • Copia de seguridad de todo, de forma regular ( Sharpie / JD Long / SO)
  • Mantenga un registro de sus ideas o confíe en un rastreador de problemas, como ditz ( giovanni / BS), en parte redundante con el elemento anterior, ya que está disponible en Git

Edición / Informes

Como nota al margen, Hadley Wickham ofrece una visión general integral de la gestión de proyectos de R , que incluye ejemplos reproducibles y una filosofía unificada de datos .

Finalmente, en su Flujo de trabajo de análisis estadístico de datos orientado a R, Oliver Kirchkamp ofrece una descripción muy detallada de por qué adoptar y obedecer un flujo de trabajo específico ayudará a los estadísticos a colaborar entre sí, al tiempo que garantiza la integridad de los datos y la reproducibilidad de los resultados. Incluye además una discusión sobre el uso de un sistema de tejido y control de versiones. Los usuarios de Stata también pueden encontrar útil el flujo de trabajo de análisis de datos de J. Scott Long con Stata .

chl
fuente
Buen trabajo chl! ¿Estaría bien si publicara esto en mi blog? (Quiero decir, este texto es cc, así que podría, pero quería tu permiso de todas formas :)) Saludos, Tal
Tal Galili
@Tal No hay problema. Está lejos de ser una lista exhaustiva, pero tal vez pueda agregar otros enlaces útiles más adelante. Además, siéntase libre de adaptarse o reorganizarse de una mejor manera.
chl
+1 Esta es una buena lista. Puede considerar "aceptar esto" para que siempre esté arriba; dado que es CW, cualquiera puede mantenerlo actualizado.
Shane
@ Shane Bueno, estoy en deuda con usted por proporcionar una primera respuesta con enlaces tan útiles. Siéntase libre de agregar / modificar la forma que desee.
chl
Lo volví a publicar aquí. Gran lista! r-statistics.com/2010/09/…
Tal Galili
21

Esto no proporciona una respuesta específica, pero es posible que desee ver estas preguntas relacionadas con stackoverflow:

También puede estar interesado en el reciente proyecto de John Myles White para crear una plantilla de proyecto estadístico.

Shane
fuente
Gracias por los enlaces! La pregunta está abierta a cualquier software estadístico: uso Python y Stata de vez en cuando, así que me pregunto si los usuarios confirmados pueden traer recomendaciones interesantes allí.
chl
Absolutamente; aunque agregaría que las recomendaciones en los enlaces anteriores realmente podrían aplicarse a cualquier proyecto estadístico (independientemente del idioma).
Shane
Definitivamente si! Actualicé mi pregunta al mismo tiempo.
chl
8

Esto se superpone con la respuesta de Shane, pero en mi opinión hay dos pilares principales:

  • Reproducibilidad ; no solo porque no terminará con resultados que se hacen "de alguna manera" sino que también podrá volver a ejecutar el análisis más rápido (en otros datos o con parámetros ligeramente modificados) y tendrá más tiempo para pensar en los resultados. Para obtener una gran cantidad de datos, primero puede probar sus ideas en un pequeño "conjunto de juegos" y luego ampliar fácilmente toda la información.
  • Buena documentación ; guiones comentados bajo control de versiones, alguna revista de investigación, incluso sistema de tickets para proyectos más complejos. Mejora la reproducibilidad, facilita el seguimiento de errores y escribe triviales los informes finales.
usuario88
fuente
+1 Me gusta el segundo punto (uso roxygen + git). El primer punto me hace pensar también en la posibilidad de entregar su código a otro estadístico que podrá reproducir sus resultados en una etapa posterior del proyecto, sin ninguna ayuda.
chl
Reproducibilidad? Los datos tienen un error aleatorio de todos modos, a quién le importa. ¿Documentación? Dos posibles respuestas: 1) Estamos demasiado ocupados, no tenemos tiempo para la documentación o 2) Solo teníamos presupuesto para hacer el análisis o documentarlo, por lo que elegimos hacer el análisis. ¿Crees que estoy bromeando? He visto / escuchado estas actitudes en muchas ocasiones, en proyectos en los que las vidas estaban en juego.
Mark L. Stone
4

van Belle es la fuente de las reglas de proyectos estadísticos exitosos.

Carlos Accioly
fuente
1

Solo mis 2 centavos. He encontrado Notepad ++ útil para esto. Puedo mantener scripts separados (control de programa, formateo de datos, etc.) y un archivo .pad para cada proyecto. La llamada al archivo .pad es todos los scripts asociados con ese proyecto.

Wes McCardle
fuente
3
Es decir, notepad ++ con el uso de npptor :)
Tal Galili
1

Si bien las otras respuestas son geniales, agregaría otro sentimiento: evite usar SPSS. Utilicé SPSS para mi tesis de maestría y ahora en mi trabajo habitual en investigación de mercado.

Mientras trabajaba con SPSS, fue increíblemente difícil desarrollar un código estadístico organizado, debido al hecho de que SPSS es malo para manejar múltiples archivos (seguro, puede manejar múltiples archivos, pero no es tan sencillo como R), porque no puede almacenar conjuntos de datos a una variable, debe usar el código "conjunto de datos activar x", que puede ser una molestia total. Además, la sintaxis es torpe y alienta las shorthands, lo que hace que el código sea aún más ilegible.

Christian Sauer
fuente
0

Los Cuadernos Jupyter, que funcionan con R / Python / Matlab / etc, eliminan la molestia de recordar qué script genera una determinada figura. Esta publicación describe una forma ordenada de mantener el código y la figura uno al lado del otro. Mantener todas las cifras para un capítulo de papel o tesis en un solo cuaderno hace que el código asociado sea muy fácil de encontrar.

Incluso mejor, de hecho, porque puede desplazarse, digamos, una docena de figuras para encontrar la que desea. El código se mantiene oculto hasta que se necesita.

hugke729
fuente