- Intro:
- Que es reproducible research y para que?
- Sobrevuelo historico
- Algunas herramientas y flujos de trabajo
- knitr y rmarkdown
"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!"
"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.
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.
WEB
la primera implementación de literate programming: \(\TeX\) + PASCAL.
noweb
por Norman Ramsey literate programming simple, extensible, independiente de lenguajes.
Mucho más en: http://reproducibleresearch.net/links/
Sweave por Friedrich Leisch sintaxis de noweb
con \(\LaTeX\) + S (i.e. R)
help("Sweave", package="utils")
Documentos dinamicos con R:
Jupyter (antes iPython): computacioón interactiva independiente del lenguaje - kernels. (Como instalar)
Jupyter con Python y su stack para computo cientifico SciPy / Anaconda han desarrollado un ambiente muy valioso para analisis de datos abierto: e.g. Google deep-dream
iRkernel - kernel de R para Jupyter.
Pero hacer reproducible research bueno o util requiere más que entrelazar prosa y codigo.
Niveles de calidad:
Knitr + markdown + pandoc = rmarkdown
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/
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 ---
library(rmarkdown) render("index.Rmd") browseURL("index.html")
install.packages(c("knitr", "rmarkdown"))
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) ```
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)
Mapas y proyecciones https://rpubs.com/hrbrmstr/coord_proj_stress_test
Htmlwidgets de Redes https://rpubs.com/yoshio/99778
Opciones globales knitr::opts_chunk$set(message = FALSE, warning = FALSE)
Pasar parámetros http://rmarkdown.rstudio.com/developer_parameterized_reports.html
params: start: !r as.Date("2015-01-01") snapshot: !r as.POSIXct("2015-01-01 12:30:00")
Documentos reactivos (embeber shiny): http://rmarkdown.rstudio.com/authoring_shiny.html)
Cambiar el template de html: http://rmarkdown.rstudio.com/developer_document_templates.html
No olvidar
sessionInfo()
O mejor
devtools::session_info()
Esta presentación fue escrita en RMarkdown desde RStudio y compilada por rmarkdown
en la plantilla ioslides
de Google gracias a knitr
y pandoc
. Publicada en la web en GitHub gracias a GitHub Pages.
La presentación fue preparada por por Daniel Moreno y Juan Pablo Marin para el Grupo de Usuarios de R de Bogotá y el contenido original esta bajo la licensia CC-BY 4.0.