De que vamos a hablar:

  1. Intro:
    • Que es reproducible research y para que?
    • Sobrevuelo historico
    • Algunas herramientas y flujos de trabajo
  2. knitr y rmarkdown

Intro

Que es reproducible research?

"Creo que metimos los datos que no eran!"

"Como es que generamos esta gráfica?"

"De donde vienen esos datos? Creo que toca actualizarlos!"

"Y este error qué? Antes no salia!"

Basdo en notas de Karl Broman

Que es reproducible research?

De wikipedia (en inglés):

"El termino investigación reproducible (reproducible research) se refiere a la idea de que el producto final de una investigación academica es el artículo en conjunto con todo el ambiente computacional usado para producir los reseltudas en el articulo como el codigo, los datos, etc. que pueden ser usados para reproducir los resultados y crear nuevo trabajo basado en la investigación."

Ver por ejemplo WaveLab and Reproducible Research en particular las anecdotas en la sección 2.

Que es reproducible research?

Rproducibilidad vs replicabilidad.

Reproducible vs valido.

De wikipedia (en inglés): Reproducibilidad es la capacidad de un experimento o estudio de ser duplicado. … Hablamos de replicar un experimento cuando este se reproduce. La reproducibilidad es uno de los principios fundamentales del metodo cientifico.

Por qué reproducible research?

  • Para colaborar.
  • Por uno mismo!
  • Por la ciencia y su desarrollo.
  • Para fomentar la transparencia.

Sobrevuelo histórico

Raices

Sobrevuelo histórico

Sobrevuelo histórico

Sweave

Sobrevuelo histórico

Sobrevuelo histórico

knitr

Sobrevuelo histórico

rmarkdown

Sobrevuelo histórico

Jupyter (antes iPython)

Algunas herramientas y flujos de trabajo

Investigación reproducible es mucho más

Pero hacer reproducible research bueno o util requiere más que entrelazar prosa y codigo.

Niveles de calidad:

  • Se pueden reproducir (regenerar) las tablas y graficas?
  • Coincide el codigo con lo que dice la documentación?
  • Se explica claramente por qué se hace lo que se hace? (e.g. selección de parametros)
  • Sirve el codigo con otros datos?
  • Se puede extender el codigo para hacer otras cosas?

Algunas herramientas y flujos de trabajo

Recomendaciones generales

Algunas herramientas y flujos de trabajo

Recomendaciones generales

rmarkdown

¿Cómo se hacen reportes reproducibles en R?

Knitr + markdown + pandoc = rmarkdown

  • rmarkdown: Paquete de Rstudio
  • Funciona con un click dentro del IDE Rstudio

¿Por qué usar markdown?

  • Fácil de aprender y usar.
  • Mantener la atención en el contenido y no en lo estético.
  • Flexible… inicialmente para HTML pero se puede convertir a diferentes formatos

¿Qué es markdown?

  • Markup language: diseñados para producir contenidos con texto plano
  • Ejemplo: Latex… markup language para crear pdf's
  • Convertir a varios formatos (HMTL/pdf/word)

Markdown - HTML

Markdown - HTML

Knitr y Pandoc

  • Knitr: Mejora sobre Sweave. Renderizar reportes que a su vez corran código. Ejemplo de uso: publicaciones científicas - actualizar gráficos
  • Pandoc: La navaja suiza para convertir documentos… markdown, reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, OPML, Emacs Org-Mode, Txt2Tags, Microsoft Word docx, LibreOffice ODT, EPUB

¿Cómo se escribe en formato rmarkdown (.Rmd)?

  • Yaml frontmatter
  • Chunks
  • Markdown normal

Chunks

Los chunks son conceptos que vienen del paquete knitr.
Comienzan con tres back ticks y {r }

r 1 + 1

#> [1] 2 #> [1] 2

Tiene múltiples opciones dependiendo de lo que se quiera a la salida.

echo, eval, message, warning, results, fig.width, fig.height...

Ver opciones http://yihui.name/knitr/options/

Yaml front matter

Lo que va al comienzo del archivo .Rmd Se pueden definir formatos y otras propiedades, incluso definir parámetros para automatizar reportes.

  ---
  title: "Hola, soy Rmarkdown"
  date: "2016-02-17"
  output: html_document
  ---

¿Resultado?

¿Cómo se compila?

¿Cómo se compila sin ayuda de Rstudio?

library(rmarkdown)
render("index.Rmd")
browseURL("index.html")

Nuestro turno: Primero lo primero:

install.packages(c("knitr", "rmarkdown"))

Nuestro turno

  Title
  ====================
  
  This is an R Markdown document.
  
  ```{{r results='asis'}}
  library(knitr)
  kable(head(cars), 'html')
  ```
  
  You can also embed plots, for example:
  
  ```{{r fig.width=7, fig.height=6, echo=FALSE}}
  plot(cars)
  ```

¿Qué más? Tablas interactivas

¿Qué más? Gráficos interactivas

  library(plotly)
  p <- ggplot(data = d, aes(x = carat, y = price, colour = clarity)) +
    geom_point(aes(text = cut), size = 3) + geom_smooth() + facet_wrap(~ clarity)
  ggplotly(p)

Otros ejemplos

Rmarkdown avanzado

Otros recursos

Gracias!

No olvidar

sessionInfo()

O mejor

devtools::session_info()

Colofón