Skip to content

Latest commit

 

History

History
610 lines (439 loc) · 18.2 KB

index.md

File metadata and controls

610 lines (439 loc) · 18.2 KB
title subtitle author job framework highlighter hitheme license mode knit
Reproducibilidad en Ciencia
Ecoinformática. Curso 2014-2015
Antonio J. Pérez-Luque
io2012
highlight.js
monokai
by-nc-sa
selfcontained
slidify::knit2slides
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.min.js"></script> <script type='text/javascript'> $(function() { $("p:has(img)").addClass('centered'); }); </script> <style> em { font-style: italic } strong { font-weight: bold; } </style> <style type='text/css'> img { max-height: 560px; max-width: 964px; } </style>

--- .nobackground .quote (RAE) Ciencia: Conjunto de conocimientos obtenidos mediante la observación y el razonamiento, sistemáticamente estructurados y de los que se deducen principios y leyes generales

--- .smaller .quote La ciencia es el conocimiento obtenido mediante la observación de patrones regulares, de razonamientos y de experimentación en ámbitos específicos, a partir de los cuales se generan preguntas, se construyen hipótesis, se deducen principios y se elaboran leyes generales y sistemas organizados por medio de un método científico


metodo


Crisis de Reproducibilidad

fraude ciencia

--- &twocol

Fraude científico


*** =left

*** =right

--- &twocol

Retracción

*** =left

*** =right

--- .quote .smaller

  • La investigación no son sólo los resultados que se publican, sino que es el conjunto de programas, código, y datos utilizados para producir los resultados (Gandrud 2014)

Meta-analysis on the effects of temperature on plant phenology

opendatarequest

Wolkovich et al. 2012

--- .quote


¿Qué entendemos por
Reproducible Science?

--- .quote

Research results are replicable if there is sufficient information available for independent researchers to make the same findings using the same procedures

--- .smaller


repro_spectrum

Peng 2011

--- .quote


¿Porqué ha de ser
reproducible
la investigación?


Por la ciencia

  • Estándar
    • Los resultados de una investigación no pueden considerarse "contribuciones genuinas" al conocimiento humano hasta que no sean verificadas (Stodden 2009).
    • Demarcación entre ciencia y no-ciencia

repro_spectrum


Por la ciencia

  • Evitar duplicación de esfuerzos
    • Disminuir la cantidad de tiempo empleado para colectar datos, manipular datos, etc.
    • Ayuda a avanzar en la generación de nuevo conocimiento (Wolkovich et al. 2012)


Por los investigadores (por ti)

  • Mejorar Habitos de trabajo
  • Aumentar la facilidad para detectar errores (documentar código)
  • Accesibilidad de los pasos llevados a cabo (re-usabilidad)
  • Efectividad (evitar duplicidad de esfuerzo)
  • Mejorar Trabajo en equipo
  • Implementar la reproducibilidad de un proyecto facilita a tus colaboradores (presentes o futuros) ejecutar parte del mismo
  • Facilitar los cambios
  • Reproducir tus resultados en el futuro próximo (re-análisis, cambios en figuras, etc.)
  • Mayor impacto de nuesta investigación
  • La investigación que es reproducible contiene mas información (código, acceso a los datos, etc) y por tanto, mas razones para ser usada (y citada, i.e. Piwowar et al. 2007)

--- .smaller Aplicar técnicas de reproducibilidad (o al menos los principios) puede hacer que tu investigación sea mas efectiva y mas fácil

metodo_geek

--- .quote


¿Cómo hacer que nuestra investigación
sea mas reproducible?


Flujo de Trabajo Científico

The old-(traditional) way

metodo


Comunicamos los resultados

  • ¿Qué análisis has llevado a cabo para generar una figura? ¿Cómo has llevado a cabo el análisis de las medias? ¿Has tenido en cuenta la correlación entre las variables? ...

> - ¿Qué datos has utilizado? ¿Has llevado a cabo un filtro previo de los datos? ¿de qué tipo? ¿Has utilizado valores brutos o valores agregados? ...
> - ¿Has probado a llevar a cabo el análisis utilizando la media armónica en vez de la media aritmética? ¿Qué resultados obtendríamos si agregamos los valores por meses en vez de por estaciones? ...
> - ¿Podrías incluir en la figura además unas barras de error? ¿Podrías incluir en la tabla los I.C. al 99% en vez de al 95%?

--- .quote Este flujo de trabajo está roto


--- .quote

Consejos prácticos


__1. Document everything!

__ __2. Everything is a (text) file

__ __3. All files should be human readable

__ __4. Explicity tie your files together

__ __5. Have a plan to organize, store, and make our files available__

The big picture

big_picture


Algunas reglas sencillas (Sandve et al. 2013)

Rule 1. For every result, keep track of how it was produced

  • Si un resultado puede ser de potencial interés, mantén un registro de como se ha producido.
  • Mínimo: registrar detalles suficientes sobre los programas, parámetros y procedimientos manuales para ser capaz (al menos tú) de reproducir el resultado cuando pase un tiempo

Rule 2. Avoid manual data manipulation steps

  • Los procedimientos manuales son ineficientes, propensos a los errores y difíciles (sino imposibles) de reproducir.
  • Sustituir modificación manual de archivos por uso de comandos o pequeños scripts (mejor comprensión + track errores + fácilmente reproducibles (1-click))
  • Mínimo: Si la utilización de operaciones manuales no pueden evitarse en tu análisis, anota al menos los archivos que son modificados o movidos y para que propósito

--- .codefont .centrepre .bigger Rule 3. Archive the exact versions of all external programs used

  • Programas y versiones
  • Mínimo: Anotar nombres y versiones de los programas utilizados (metadatos)
sessionInfo()

sink("sessionInfo.txt")
sessionInfo()
sink()

[packrat: A Dependency Management System for Projects and their R Package Dependencies](http://rstudio.github.io/packrat/)

--- .codefont .centrepre .bigger Rule 4. Version Control all custom scripts

  • Registrar los cambios realizados en los scripts que utilizamos
  • Mínimo: Archivar copias de los scripts cada vez que hagamos cambios en ellos, para mantener un registro exahustivo de los cambios que hemos realizado en ellos.

Rule 5. Record all intermediate results, when possible in standardized formats

  • Tener acceso a resultados intermedios es de gran valor:
  • Un vistazo rápido de resultados intermedios puede servirnos para revelar discrepancias, falsas asunciones, etc. que no podemos ver en los resultados finales.
  • Parámetros arbitrarios en pasos intermedios
  • Mínimo: Guardar archivos y resultados intermedios (siempre que el espacio no nos limite)

--- .codefont .bigger .centrepre Rule 6. For analysis that include randomness, note underlying random seeds

  • No reproducible.
# Crea un conjunto de datos
x <- seq(0,30, by=0.5)
head(x)
## [1] 0.0 0.5 1.0 1.5 2.0 2.5
# Toma una muestra de 5 individuos
sample(x, 5)
## [1] 16.0  0.0  7.0  9.5  4.0
sample(x, 5)
## [1] 22.5 25.5  6.5 18.0 19.0

--- .codefont .bigger .centrepre Rule 6. For analysis that include randomness, note underlying random seeds

  • Reproducible.
set.seed(1)
sample(x, 5)
## [1]  8.0 11.0 16.5 26.0  5.5
# Repite la operaci?n
set.seed(1)
sample(x, 5)
## [1]  8.0 11.0 16.5 26.0  5.5
  • Semilla inicial en aleatoridad (re-sampling, bootsprating, Monte-Carlo, etc)
  • Mínimo: Anotar los pasos del análisis que implican aleatoridad (saber donde encontraremos discrepancias)

Rule 7. Always store raw dat behind plots

  • Capacidad de regenerar figuras de forma sencilla

usos

  • Realizar gráficos en R (script), nos permite regenerarlos en 1 solo paso
  • Mínimo: Anotar que datos forman parte de la base de una figura y como podemos generar esos datos.

Algunos recursos

--- .quote




¿Cómo generar informes
__reproducibles__?

--- .codefont .centrepre .bigger .quote

Markdown

  • Es un lenguaje de marcas sencillo con una sintáxis de texto plano
  • Permite agregar formatos a textos de una forma sencilla
  • .md
  • Tutoriales:

R + Markdown = Rmarkdown


Ejemplos

--- .quote




¿Cómo gestionamos las
__versiones__?

final_doc
phdcomic


final_doc
phdcomic


¿Qué es el control de versiones?

El control de versiones es un sistema que registra los cambios realizados sobre un archivo o conjunto de archivos a lo largo del tiempo, de modo que podamos recuperar versiones específicas más adelante

  • Se puede utilizar sobre cualquier archivo.
  • Permite:
    • Revertir archivos (proyecto) a un estado anterior
    • Comparar cambios a lo largo del tiempo
  • Facilita la identificación de errores

Lenguajes para el control de versiones





ProGit book

--- &twocol

GitHub

*** =left

  • Un website donde alojar repositorios
  • Interfaz para explorar repositorios
  • Permite colaborar de una forma más eficaz (programadores):
  • Compartir repositorio
  • Ver cambios
  • Corregir errores
  • Discutir y Revisar cambios

*** =right


https://github.com/

github view


github log


github example


Un sencillo tutorial sobre Git

Recursos:

--- .codefont .centrepre .bigger .quote

Crear un repositorio nuevo

  • Crea un directorio nuevo y ábrelo
mkdir <nombre_directorio>
mkdir datos
cd datos
  • Para iniciar un repositorio utilizamos el comando
git init


Ayuda sobre comandos

--- .codefont .centrepre .bigger .quote

Añadir cambios

  • Inspeccionar el directorio
ls -a 
.  ..  .git
  • Añadir cambios
git add <nombre_archivo>
git add misdatos.md
  • Si quiero añadir todos los archivos
git add . 

--- .codefont .bigger

Registrar cambios

git commit -m "Commit message""
git commit -m "Escribo mis datos personales en archivo"
[master (root-commit) 71fe224] Escribo mis datos personales en archivo
 1 file changed, 2 insertions(+)
 create mode 100644 misdatos.md

--- bg:url(images/esquema_git.png)

--- .minicodefont .bigger

Enviar cambios

Nuestros cambios están en el HEAD (copia local)

  • Queremos enviar los cambios a un repositorio remoto:
    • Conectar con un repositorio remoto (¡ojo necesitamos crear uno o clonarlo!)
git remote add origin <server>
git remote add origin https://github.com/ajpelu/ecoinformatica_2014_2015_ajpelu.git
  • Para enviar cambios (una vez conectados) a un repositorio remoto
git push origin master
  • Nos pedirá usuario y contraseña.

Reto 4_1

  • Crear una cuenta en github

  • Crear un repositorio llamado ecoinfo_2014_2015_reto_4_1

--- .codefont .bigger .quote

Clonar un directorio

  • Importante para reproducibilidad
  • Colaboración
  • Repositorio remoto (GitHub)

comando:

git clone username@host:/path/to/repository

ejemplo: ``` git clone [email protected]:iecolab/ecoinformatica_2014_2015_ajpelu.git ```

--- .codefont .centrepre .bigger .quote

Actualizar, fusionar

  • Si queremos actualizar un repositorio local al último cambio
git pull  
git pull origin master 

Reto 4_2

  • Clonar el repositorio GitHub de la asignatura

  • Subir todos tus retos del resto de la asignatura a su carpeta correspondiente


--- .smaller

References and Resources

  • Chacon S & Straub (2014) ProGit book. Apress pdf

  • FitzJohn R, Pennell M, Zanne A and Cornwell W (2014) Reproducible research is still a challenge. link

  • Gandrud C (2014) Reproducible research with r and rstudio. R Series. Chapman & Hall/CRC.

  • King G (1995) Replication, replication. PS: Political Science and Politics, 28(3): 444 - 452. doi: 10.2307/420301

  • Michener WK, Brunt JW, Helly JJ, Kirchner TB, Stafford SG (1997). Nongeospatial metadata for the ecological sciences. Ecological Applications, 7(1): 330?342. doi

  • Peng RD (2011) Reproducible research in computational science. Science, 334: 1226 - 1227. doi: 10.1126/science.1213847

  • Piwowar HA, Day RS, Fridsma DB (2007) Sharing detailed research data is associated with increased citation rate. PLoS ONE 2(3): e308. doi: 10.1371/journal.pone.0000308

--- .smaller

References and Resources

  • Rodriguez-Sánchez F (2014) Reproducible Research with Rmarkdown. Data management, analysis, and paper writing all-in-one. slides

  • Rodriguez-Sánchez F (2014) Reproducible Science with Rmarkdown [slides](Reproducible Science with Rmarkdown)

  • Sandve GK, Nekrutenko A, Taylor J, Hovig E (2013) Ten Simple Rules for Reproducible Computational Research. PLoS Comput Biol 9(10): e1003285. doi: 10.1371/journal.pcbi.1003285

  • Stodden V (2009) The legal framework for reproducible scientific research. Computing in Science & Engineering, 11(1): 35 - 40. doi: 10.1109/MCSE.2009.19

  • Wolkovich EM, Regetz J & O'Connor MI (2012) Advances in global change research require open science at the individual-level. Global Change Biology, 18, 2102?2110, doi: 10.1111/j.1365-2486.2012.02693.x

  • Reproducibility in Science. A Guide to enhancing reproducibility in scientific results and writing. R-OpenSci et al

  • Reproducible Science Curriculum