1 Investigación reproducible (Reproducible Research)

alt text

alt text

La investigación reproducible es la idea de que los análisis de datos, y más generalmente, las afirmaciones científicas, se publican con sus datos y código de software para que otros puedan verificar los hallazgos y desarrollarlos.

1.0.1 La necesidad de reproducibilidad está aumentando rápidamente a medida que los análisis de datos se vuelven más complejos, involucrando conjuntos de datos más grandes y cálculos más sofisticados.

La reproducibilidad permite que las personas se centren en el contenido real de un análisis de datos, en lugar de en detalles superficiales informados en un resumen escrito. Además, la reproducibilidad hace que un análisis sea más útil para otros porque los datos y el código que realmente llevaron a cabo el análisis están disponibles.

1.1 La necesidad de la publicación de investigaciones reproducibles aumenta por varias razones:

- Los investigadores examinan con mayor frecuencia la debilidad de las asociaciones e interacciones complejas.
- Las nuevas tecnologías permiten a los científicos compilar bases de datos complejos de alta dimensión.
- El desarrollo de mayores capacidades estadísticas y computacionales permite a los investigadores explorar las bases de datos e identificar asociaciones de interés.
- A medida que los análisis se hacen más complicados, aumenta la posibilidad de errores, producto de resultados engañosos.

Existen varios paquetes que permiten que hagamos investigación reproducible en R, pero sin duda los más relevantes son rmarkdown y knitr. Ambos paquetes funcionan en conjunto cuando generamos un archivo Rmd (Rmarkdown), en el cual ocupamos al mismo tiempo texto, código de R y otros elementos para generar un documento word, pdf, página web, presentación y/o aplicación web

alt text

alt text

1.2 Objetivo de la Investigación Reproducible

Vincular las instrucciones específicas con el análisis de datos y los datos experimentales para que los estudios puedan recrearse, entenderse mejor y verificarse. Los paquetes en R para este propósito se pueden dividir en grupos para:

- Programación alfabetizada
- Reproducibilidad de paquetes
- Herramientas de formato de código / datos
- Convertidores de formato 
- Almacenamiento en caché de objetos

1.3 Programación Alfabetizada

La principal forma en que R facilita la investigación reproducible es mediante el uso de un documento que sea una combinación de código de análisis de contenido y datos.

La función Sweave (en el paquete base R utils) y el paquete knitr se pueden usar para mezclar el tema y el código R de modo que un solo documento defina el contenido y el análisis. Los paquetes brew y R.rsp contienen enfoques alternativos para incrustar el código R en varias marcas.

1.4 Los recursos para la programación alfabetizada se organizan mejor según el tipo de documento / lenguaje de marcado:

1.4.0.1 LaTeX

Tanto Sweave como knitr pueden procesar archivos LaTeX. lazyWeave puede crear documentos LaTeX desde cero.

Funciones de conversión de objetos:

  • Tablas / estadísticas de resumen :
    • Hmisc , NMOF , papeR , quantreg , rapport , reporttools , sparktex , tables , xtable , ztable
  • Tablas / tabulaciones cruzadas :
    • Hmisc , lazyWeave , knitLatex , knitr , reporttools , ztable
  • Gráficos :
    • animación , Hmisc , grDevices ::: pictex , sparktex , tikzDevice
  • Modelos / métodos estadísticos :
    • apsrtable , memisc , quantreg , rms , stargazer , suRtex , texreg , xtable , ztable
  • Bibtex :
    • bibtex y RefManageR
  • Otros :
    • latex2exp convierte las ecuaciones de LaTeX a expresiones plotmath.

1.4.0.2 HTML

El paquete knitr puede procesar archivos HTML directamente. Sweave también puede trabajar con HTML a través del paquete R2HTML . lazyWeave puede crear documentos en formato HTML desde cero.

Funciones de conversión de objetos:

  • Tablas resumen / estadísticas :
    • Stargazer
  • Tablas / tabulaciones cruzadas :
    • DT , formattable , htmlTable , HTMLUtils , hwriter , knitr , lazyWeave , SortableHTMLTables , texreg , ztable
  • Modelos / métodos estadísticos :
    • rapport , stargazer , xtable otros : tejidos , RefManageR

1.4.1 Reducción

El paquete knitr puede procesar archivos de rebajas sin ayuda. Los paquetes markdown tienen herramientas generales para trabajar con documentos en este formato. lazyWeave puede crear documentos en formato de rebaja desde cero.

Funciones de conversión de objetos:

  • Tablas resumen / estadísticas :
    • papeR
  • Tablas / tabulaciones cruzadas :
    • DT , formattable , htmlTable , knitr , lazyWeave , papeR
  • Modelos / métodos estadísticos :
    • pander , papeR , rapport , texreg
  • otros : RefManageR

Formatos de Microsoft R2wd (solo Windows) puede crear documentos de Word desde cero y R2PPT (también solo Windows) puede crear diapositivas de PowerPoint.

El paquete rtf hace lo mismo con los documentos en formato de texto enriquecido.

1.4.2 - Reproducibilidad del paquete

R también tiene herramientas para garantizar que se puedan requerir versiones de paquetes específicos para los análisis. checkpoint , rbundler y packrat instalan los paquetes necesarios para un proyecto en un archivo local tal como existían en un momento específico en el tiempo.

Esto permite mantener versiones específicas de paquetes a lo largo del tiempo y diferentes usuarios. El paquete miniCRAN facilita la creación de repositorios locales similares a CRAN.

1.4.3 - Herramientas de formato

Se puede utilizar formatR , highlight y highr para colorear y / o formatear el código R. Los paquetes humanFormat , lubridate , prettyunits y rprintf tienen funciones para formatear mejor los datos.

1.4.4 Convertidores de formato

Pander se puede utilizar para representar objetos R en el menú desplegable de Pandoc. knitr tiene la función pandoc que puede llamar a una versión instalada de Pandoc para convertir documentos entre formatos como Markdown, HTML, LaTeX, PDF y Word. tth facilita las conversiones de TeX a HTML / MathML.

1.4.5 Paquetes de caché de objetos

Cuando se usa Sweave y knitr , puede ser ventajoso almacenar en caché los resultados de fragmentos de código que consumen mucho tiempo si el documento se vuelve a procesar (es decir, durante la depuración). Knitr facilita el almacenamiento en caché de objetos y el tejedor de paquetes Bioconductor se puede utilizar con Sweave . Los paquetes de programación sin alfabetización para facilitar el almacenamiento en caché / archivado son R.cache y archivero .

#Ejemplos de Publicaciones ggplots

library(ggplot2)
## Registered S3 methods overwritten by 'ggplot2':
##   method         from 
##   [.quosures     rlang
##   c.quosures     rlang
##   print.quosures rlang
ggplot(reshape2::melt(volcano), aes(Var1, Var2)) +
   geom_contour(aes(z = value, color = ..level..)) +
   coord_equal()

ggplot(diamonds, aes(carat, price)) +
   geom_point(aes(color = clarity)) +
   facet_grid(color ~ cut)

library(ggplot2)
df <- expand.grid(tiempo = 1:30, sujeto = factor(letters[1:3]))
set.seed(42)
df$valor <- with(df, tiempo*0.1*as.numeric(sujeto) + rnorm(nrow(df)))
ggplot(df, aes(tiempo, valor, color = sujeto)) +
   geom_line()

alt text

alt text